Docker 常用命令

Docker


构建镜像

在项目根目录下新建 Dockerfile 文件并编辑保存

1
2
3
4
5
6
7
8

FROM golang:latest            # 依赖的镜像:镜像版本
ADD . /var/www/go-aimaster    # 将当前工作目录copy到镜像的/var/www/go-aimaster 目录下
WORKDIR /var/www/go-aimaster  # 设置镜像内的工作目录
RUN GOPROXY="https://goproxy.cn,direct" go build -o main /var/www/go-aimaster/main.go   # 运行命令(当前为golang 项目demo)
CMD ["/var/www/go-aimaster/main"] # 可执行文件目录,上一步build生成的main可执行文件
EXPOSE 8080                   # 暴露端口,最终暴露的端口不一定是当前的8080 端口
ENTRYPOINT ["./main"]         # 入口文件

执行命令:

1
docker image build -t 镜像名称[:版本号] .  # (注意最后有个点 .)

指定Dockerfile:

1
docker image build -t 镜像名称[:版本号] -f Dcokerfile .

上面代码中,-t 参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。 执行结果如下:

docker-build-1 docker-build-2

出现上图的Successfully成功标识表示已构建成功,执行 docker images 查看,列表中出现刚刚构建的go-aimaster镜像

docker-build-3


下载远端镜像

命令:docker pull 仓库名称

1
docker pull nginx

docker-pull


推送本地镜像至远端仓库

  • 命令:
1
2
3
docker image tag go-docker:v1.0 devxiaokang/go-docker:v1.0

docker push devxiaokang/go-docker:v1.0

查看镜像列表

命令:docker image ls | docker images

1
docker images

docker-images


删除本地镜像

命令:docker rmi 镜像标识|镜像名称:版本号

【注意】若有容器正在依赖该镜像,则无法删除

1
docker rmi go-aimamster:v0.01

docker-rmi


生成容器

命令: docker [container] run 镜像标识 /bin/bash(简单操作)| docker [container] run -d -p 宿主机端口:容器端口 -it --name 容器名称 镜像标识 /bin/bash (常用操作)

1
docker run nginx

或者:

1
docker run  -d -p 8080:80 -it --name nginx nginx:latest /bin/bash

以上代码中-d 代表后台运行, -p 代表宿主机端口与容器端口的映射关系,-it 代表容器的 shell 映射到当前的 shell,然后再本机窗口输入命令,就会传入容器中,--name nginx 代表定义容器名称nginx 为自定义名称,。

执行结果如下: docker-run


查看容器列表

命令:docker ps -a[q]-a 表示显示所有容器(包括已停止的),-q 列表值显示容器的唯一标识

1
docker ps -a

docker-ps-a

1
docker ps -aq

docker-ps-aq


进入容器

命令:docker exec -it 容器ID|容器名称 /bin/bash

1
docker exec -it nginx /bin/bash

docker-exec


启动容器

命令:docker start 容器ID|容器名称

1
docker start nginx

重启容器

命令:docker restart 容器ID|容器名称

1
docker restart nginx

停止容器

命令:docker stop 容器ID|容器名称

1
docker stop nginx

停止全部容器

1
docker stop $(docker ps -qa)

docker-stop-all


删除容器

命令:docker rm 容器ID|容器名称

删除指定容器

1
docker rm nginx

docker-rm

删除全部容器

1
docker rm $(docker ps -qa)

数据卷

数据卷:将宿主机的一个目录映射到容器的一个目录中,可以在宿主机中操作目录中的内容,那么容器内部映射的文件,也会跟着一起改变,创建数据卷之后,默认会存在一个目录下 /var/lib/docker/volumes/数据卷名称/_data

创建数据卷

1
docker volume create volume_name

查看数据卷

1
docker volume inspect volume_name

docker-volume-inspect

查看全部数据卷

1
docker volume ls

docker-volume-ls

删除数据卷:docker volume rm 数据卷名称

1
docker volume rm volume_name

管理多容器

.yml文件以key: value 方式来指定配置信息,多个配置信息以换行+锁紧的方式来区分,在docker-compose文件中,不要使用制表符

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# yml
version: ‘3.1’
service:
   mysql:
       restart: always        # 代表只要docker启动,这个容器就会跟着启动
       image: daoclound.io/lib/mysql:5.7.4    # 镜像路径
       container_name: mysql      # 指定容器名称
       ports:
   - 3306:3306
       environment:
         MYSQL_ROOT_PASSWORD: 123456
         TZ: Asia/Shanghai         # 时区
       volumes:        # 数据卷
           - /opt/docker_mysql/data:/var/lib/mysql   
   tomcat:
     restart: always
     Image: daocloud.io/library/tomcat:8.5.15-jre8 # 镜像
container_name: tomcat
     ports:
       - 8080:8080
     environment:
       TZ: Asia/Shanghai
     volumes:
       - /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
       - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs   

Docker-Compose 配置Dockerfile使用 使用docker-compose.yml文件以及Dockerfile文件在生成自定义镜像的同时启动当前镜像,并且由docker-compose去管理容器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# yml

version: ‘3.1’
services:
 mysql:
  restart: always
  build:
    context: ../   # 指定dockerfile文件所在路径
    dockerfile: Dockerfile  #指定dockerfile文件名称
    container_name: mysql
    ports:
      - 3306:3306
    environment:
      TZ: Asia/Shanghai

可以直接启动基于 docker-compose.yml以及Dockerfile文件构建的自定义镜像 docker-compose up -d 如果自定义镜像不存在,会帮助我们构建出自定义镜像,如果自定义镜像已存在,会直接运行这个自定义镜像,重新构建的话需执行 docker-compose build , 运行前重新构建 docker-compose up -d —build

Docker-compose 命令:

  • 后台启动: docker-compose up -d
  • 关闭并删除容器: docker-compose down
  • 开启|关闭|重启已经存在的有docker-compose维护的容器: docker-compose start | stop | restart
  • 查看docker-compose管理的容器: docker-compose ps
  • 查看日志: docker-compose logs -f
Licensed under CC BY-NC-SA 4.0
Last updated on Oct 09, 2019 10:13 CST
皖ICP备20014602号
Built with Hugo
Theme Stack designed by Jimmy