Docker基础篇(三)——容器的操作

前言:
阅读这篇文章我能学到什么?
   这篇介绍容器有关的操作。

1 创建容器

1.1 创建但不运行

  根据指定镜像创建容器,但不运行该容器。
  指定镜像名称创建容器。-it 表示该容器启用交互式终端。

1
docker create -it --name container_name image_name:tag

  指定镜像名称创建容器。

1
docker create -it --name container_name image_id

1.2 创建并运行

  根据指定镜像创建容器,且运行该新容器。
  指定镜像名称创建容器。 -it 表示该容器启用交互式终端。

1
docker run -it --name container_name image_name:tag /bin/bash

  在容器终端中执行 exit 将推出容器的运行。更多的指令可选项见以下。

选项 功能描述 示例
-i 保持标准输入(STDIN)开启,支持交互操作 -i(常与 -t 联用)
-t 分配伪终端(TTY) -t(与 -i 结合启动交互式容器)
-d 后台运行容器(守护模式) -d(如运行 Nginx 服务)
--name 指定容器名称 --name my-container
-p 端口映射(主机端口:容器端口) -p 8080:80(映射 Web 服务)
-v 挂载数据卷(主机目录:容器目录) -v /host/data:/container/data
--rm 容器停止后自动删除 --rm(临时测试场景)

2 查看容器

  查看本地容器。会列出容器的ID、关联的镜像名、创建的时间、容器状态、容器名称。

1
docker ps -a

container.png

3 删除容器

  根据名称删除容器。

1
docker rm container_name

  根据ID删除容器。

1
docker rm container_id

4 容器导出镜像

  将容器直接导出为镜像tar文件,不会带有镜像的历史记录和分层信息,文件内容比较小。
  根据容器名称导出。

1
docker export -o tar_name.tar container_name

  根据容器ID导出。

1
docker export -o tar_name.tar container_id

5 导入镜像

  导入 docker export 导出的tar文件的镜像,这种方式导入的镜像不带有完整的镜像信息,因此这种方式导入时可指定镜像的新名称。

1
docker import tar_name.tar image_name:tag

6 修改容器名

  根据容器名称修改名称。

1
docker rename container_name_old container_name_new

  根据容器ID修改名称。

1
docker rename container_id container_name_new

7 提交镜像

  将容器的当前状态提交为新的容器。 -a 表示作者名, -m 表示提交log,这两项是可选的。容器提交创建镜像后,该容器关联的镜像不会改变,不会变为关联新镜像。
  根据容器名称提交创建镜像。

1
docker commit -a "Author" -m "comment" container_name image_name:tag

  根据容器ID提交创建镜像。

1
docker commit -a "Author" -m "comment" container_id image_name:tag

  查看镜像最新一层的修改作者。
  根据镜像名称查看作者。

1
docker inspect --format='{{.Author}}' image_name:tag

  根据镜像ID查看作者。

1
docker inspect --format='{{.Author}}' image_id

8 启动容器

  启动已存在的容器。
  根据容器名称启动。

1
docker start -ai container_name

  根据容器ID启动。

1
docker start -ai container_id

  如果想启动并在后台运行容器,则无需开启交互终端,去掉 -ai 选项即可,容器的状态会显示在状态栏一列,通过 docker ps -a 指令查看。

9 停止容器

  根据容器名称停止容器运行。

1
docker stop container_name

  根据容器ID停止容器运行。

1
docker stop container_id

10 重启容器

  根据容器名称重启容器运行。

1
docker restart container_name

  根据容器ID重启容器运行。

1
docker restart container_id

11 暂停容器

  根据容器名称暂停容器运行。

1
docker pause container_name

  根据容器ID暂停容器运行。

1
docker pause container_id

11 接触暂停容器

  根据容器名称解除暂停容器运行。

1
docker unpause container_name

  根据容器ID解除暂停容器运行。

1
docker unpause container_id

12 进入已经运行的容器

  根据容器名称进入已经运行的容器。

1
docker exec -it container_name /bin/bash

  根据容器ID进入已经运行的容器。

1
docker exec -it container_id /bin/bash

13 挂载目录

13.1 新建容器并挂载

  可以将本地电脑的目录挂载到容器中,挂载后任意一边的修改都会实时同步到另一边,非常适合本地编写代码,然后修改实时同步到容器中,在容易中进行编译调试(通常编译或运行环境在容器中)。
  根据容器名称通过 docker run 指令挂载目录。注意,容器这段的路径必须写绝对路径,比如 ~ 这样的相对路径是不允许的。

1
docker run -v local_path:container_path --name container_name -it image_name:tag /bin/bas

  根据容器ID通过 docker run 指令挂载目录。

1
docker run -v local_path:container_path --name container_name -it image_id /bin/bas

  同理, docker create 指令也类似。
  根据容器名称通过 docker create 指令挂载目录。

1
docker create -v local_path:container_path --name container_name -it image_name:tag /bin/bas

  根据容器ID通过 docker create 指令挂载目录。

1
docker create -v local_path:container_path --name container_name -it image_id /bin/bas

13.2 已有容器挂载

14 目录复制

14.1 本地复制到容器

  将指定的本地目录整个复制到容器指定路径下。
  通过容器名称指定。

1
docker cp local_path container_name:container_path

  通过容器ID指定。

1
docker cp local_path container_id:container_path

14.2 容器复制到本地

  将指定的容器目录整个复制到本地指定路径下。
  通过容器名称指定。

1
docker cp container_name:container_path local_path

  通过容器ID指定。

1
docker cp container_id:container_path local_path