其他分享
首页 > 其他分享> > Docker(1-3) Docker 常用命令

Docker(1-3) Docker 常用命令

作者:互联网

Docker 常用命令

在使用 Docker 时,经常会操作镜像与容器,这就会涉及各种操作指令的使用。

指令说明
docker images 列出镜像
docker search 搜索镜像
docker pull 拉取镜像
docker rmi 删除镜像
docker run 创建并启动容器
docker ps 列出容器
docker exec 执行容器
docker stop 停止容器
docker start 启动容器
docker rm 删除容器
docker build 构建镜像

#01. 列出镜像

通过 docker images 指令可以查看本地镜像列表中已有的镜像:

docker images
Copied!

它所返回的镜像列表信息包含了一下 5 个字段:

字段名说明
REPOSITORY 镜像的名称。会一并显示它的 Namespace
TAG 镜像的标签
IMAGE ID 镜像的 ID。一个长 64 位的十六进制字符串(SHA256 算法的运算结果)
CREATE 镜像的创建时间
SIZE 镜像所占用的硬盘空间(包括被共享的镜像层的大小)

当本地镜像较多时,还可以使用通配符过滤出符合条件的镜像。

sudo docker images ph*
Copied!

#02. 搜索镜像

想知道在 Docker Hub 中包含了哪些镜像,除了可以登录 Docker Hub,在官网搜索外,还可以直接通过 Docker 命令 docker search 进行搜索。

docker search mysql
Copied!

显示出来的搜索结果中包含了镜像的如下信息:

字段名说明
NAME 镜像的名称
DESCRIPTION 镜像的简单描述
STARTS 镜像在的点赞数
OFFICIAL 镜像是否为 Docker 官方提供(建议使用官方提供的镜像)
AUTOMATED 镜像是否使用了自动构建

#03. 拉取镜像

通过 docker pull 指令可以拉取仓库镜像到本地(默认都是拉取 Docker Hub 仓库镜像)。

docker pull ubuntu
Copied!

Docker 会利用镜像的分层机制,将镜像分为多个包进行下载,我们可以在终端输出中看到每层的下载状态。

TIP

#04. 删除镜像

当本地存放过多不需要的镜像时,可以通过 docker rmi 指令将其删除。在删除镜像时,需要指定镜像名称或镜像 ID 。

docker rmi -f <image_name or image_id>
Copied!

默认情况下,如果至少还存在一个容器使用该镜像,那么该镜像无法删除。

-f 选项表示停止容器,并强制删除该镜像。不过并不推荐强制删除。

如果一个镜像中含有某些与其它镜像共享的镜像层,这些被共享的镜像层仍会被保留下来,

只有未被其它镜像使用的层会被删除。

我们同样可以指定镜像 ID 删除镜像:

docker rmi 4e38e38c8ce0
Copied!

#05. 创建并启动容器

Docker 镜像主要用于创建容器,可以使用 docker run 指令创建并启动容器。例如:

docker run -d -p 5000:80 --name test hello-world
Copied!

需要注意的是:

Docker 容器有以下两种运行态:

#06. 列出容器

生成容器后,可以通过 docker ps 指令查看当前运行的所有容器:

docker ps
Copied!
字段名说明
CONTAINER ID 容器的唯一性标识
IMAGE 容器所使用的镜像
COMMAND 容器启动时运行的命令(即,容器中的主程序)
CREATED 容器的创建时间
STATUS 容器的运行状态。Up 表示运行中,Exited 标识已停止
PORTS 容器内部包括的端口映射到的主机端口
NAMES 容器的名称

#07. 执行命令

当生成容器后,客户端可以通过 docker exec 指令与运行中的容器进行通信,在通信时需要指定容器的 ID 或 Name 。

#08. 停止容器

当不需要容器运行时,可以使用 docker stop 指令停止指定的容器。

使用上述指令停止容器时会略有延迟,成功后返回该容器的 ID 。

另外,docker ps 命令的执行结果中不会显示已停止的容器,如需查看这些容器要使用 -a 选项。

我们还可以通过 docker kill 指令立即杀死运行容器进程。

#09. 启动容器

容器停止后,如果需要重新访问该容器中的程序,需要重新启动该容器:

docker start <container_id or container_name>
Copied!

除了 docker start 指令可以启动已停止的容器外,还可以使用 docker restart 指令重启容器。

docker restart <container_id or container_name> 
Copied!

#10. 删除容器

当不需要使用容器时,则可以使用 docker rm 指令删除已停止的容器:

docker rm <container_id or container_name> 
Copied!

默认情况下,上述指令『只能删除已停止的容器』。如需要删除正在运行的容器,则需要添加 -f 参数强制删除。

docker rm 指令可以传入多个容器的 ID 或名字进行批量删除,甚至可以套用 docker ps 命令全部删除:

docker rm -f $(docker ps -aq)
Copied!

在这里,我们借助 docker ps -aq 指令去求得所有容器的 ID 。

因为 Docker 特有的镜像机制,在创建容器过程中并没有大量的 IO 操作,所以创建过程是秒级的。因此,我们更倾向于『随用随建,随停随删』。在停止程序所在容器时,将容器一并删除。

#11. 构建镜像(自学、了解)

除了可以通过 docker pull 指令从仓库拉取镜像之外,还可以通过 docker build 指令构建 Docker 镜像。

#12. 文件拷贝

如果我们需要将文件拷贝到容器内可以使用 docker cp 命令

docker cp <主机中的文件路径名> <容器名>:<容器中的目录>
Copied!

例如:

docker cp /tmp/1.txt microboom:/tmp/1.txt
Copied!

也可以反向将文件从容器内拷贝出来:

docker cp <容器名>:<容器中的文件路径名> <主机中的文件路径名>
Copied!

#13. 目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样容器中的某个目录和真机中的某个目录是同一个目录,容器和真机就可以以此为桥梁相互影响。

例如,我们可以创建一个运行 mysql 的容器,将容器中存放数据文件的目录映射到真机中的某个目录。这样,哪怕是该容器被删除了,曾经存储的数据仍然还在。

例如:

docker run                    \
  -d                          \
  --rm                        \
  -v /home/ben/mysql/conf:/etc/mysql/conf.d   \
  -v /home/ben/mysql/data:/var/lib/mysql      \
  -p 3306:3306                \
  -e MYSQL_ROOT_PASSWORD=123  \
  --name mysql                \
  mysql:8.0.16
Copied!

#14. 查看容器 IP 地址

我们可以通过以下命令查看容器运行的各种数据:

docker inspect <container_name_or_id>
Copied!

当然,从中查找容器的 IP 地址很不方便,因此,可以对此再细化一下:

docker inspect --format='\{\{.NetworkSettings.IPAddress}}' <container_name_or_id>
Copied!

补,去掉上述命令中的两个 \ 。

#15. 查看运行日志

docker logs -f --tail=100 容器名称
 

标签:容器,指令,常用命令,镜像,Docker,docker,Copied
来源: https://www.cnblogs.com/Peace123/p/15642537.html