本文为你介绍的内容是Docker入门相关的操作方法:搜索Docker镜像、下载Docker镜像、运行Docker容器、构建自定义Docker镜像、删除容器、删除Docker镜像。以下给出的所有步骤均在Ubuntu 18.04 LTS服务器版中进行了测试,完全可行。安装参考:在Ubuntu 18.04 Server上安装Docker和Docker Compose的方法。
1.搜索Docker镜像 我们可以从注册表中获取图像,例如Docker中心,或者创建我们自己的图像。 Docker hub拥有数万个Docker镜像,可以使用“docker search”命令搜索任何Docker镜像。 例如,要搜索基于Ubuntu的docker镜像,请运行: $ sudo docker search ubuntu
要基于CentOS搜索图像,请运行: $ sudo docker search ubuntu 要搜索AWS的图像,请运行: $ sudo docker search aws 对于wordpress: $ sudo docker search wordpress Docker hub几乎拥有各种图像,无论是操作系统,应用程序还是其他任何东西,你都可以在Docker hub中找到预先构建的Docker镜像。
2.下载Docker镜像 要下载Ubuntu OS的Docker镜像,请从终端运行以下命令: $ sudo docker pull ubuntu 上面的命令将从Docker中心下载最新的Ubuntu映像:
还可以使用以下命令下载特定版本的Ubuntu映像: $ docker pull ubuntu:18.04 无论主机操作系统如何,Docker都允许我们下载任何图像并启动容器。 例如,要下载CentOS映像,请运行: $ sudo docker pull centos 所有下载的Docker镜像都将保存在/var/lib/docker/目录中。 要查看已下载的Docker镜像列表,请运行: $ sudo docker images
如上图所示,我已经下载了三个Docker镜像:Ubuntu、CentOS和hello-world。
3.运行Docker容器 我们可以用两种方法启动容器,我们可以使用TAG或IMAGE ID启动容器,TAG指的是图像的特定快照,IMAGE ID是该图像的对应唯一标识符。 在上面的结果中,“latest”是所有容器的TAG,而7698f282e524是Ubuntu Docker映像的IMAGE ID,9f38484d220f是CentOS Docker映像的映像ID,fce289e99eb9是hello_world Docker映像的映像ID。 下载所选的Docker映像后,运行以下命令以使用其TAG启动Docker容器: $ sudo docker run -t -i ubuntu:latest /bin/bash 说明: -t:在Ubuntu容器中分配一个新终端。 -i:允许我们通过获取容器中的标准(STDIN)来建立交互式连接。 ubuntu:latest:带有TAG“最新”的Ubuntu容器。 /bin/bash:用于新容器的BASH shell。 或者,可以使用IMAGE ID启动容器,如下所示: sudo docker run -t -i 7698f282e524 /bin/bash 注:7698f282e524为图片ID。 启动容器后,将自动登陆到Container的shell(命令提示符):
要返回主机系统的终端(在我的情况下,它是Ubuntu 18.04 LTS)而不终止Container(来宾操作系统),请按CTRL+P,然后按CTRL+Q,现在,你将安全地返回到原始主机的终端窗口,请注意,容器仍然在后台运行,我们还没有终止它。 要查看容器的列表运行,请运行以下命令: $ sudo docker ps
注: 32fc32ad0d54-容器ID。 ubuntu:latest-Docker镜像。 请注意,Container ID和Docker镜像ID不同。 列出所有可用(运行或已停止)容器: $ sudo docker ps -a 要从主机的shell停止(关闭容器),请运行以下命令: $ sudo docker stop <container-id> 例:$ sudo docker stop 32fc32ad0d54 要返回或附加到正在运行的容器,只需运行: $ sudo docker attach 32fc32ad0d54 如你所知,32fc32ad0d54是容器的ID。 要通过输入以下命令从Container内部关闭Container: # exit 可以使用以下命令验证正在运行的容器列表: $ sudo docker ps
4.构建自定义Docker镜像 Docker不仅仅是用于下载和使用现有容器,你也可以创建自己的自定义docker image。 为此,请启动下载容器中的任何一个: $ sudo docker run -t -i ubuntu:latest /bin/bash 现在,将进入容器的shell。 然后,安装任何软件或在容器中执行你想要执行的操作。 例如,让我们在容器中安装Apache Web服务器。 完成所有调整后,安装所有必需的软件,运行以下命令来构建自定义Docker镜像: # apt update # apt install apache2 同样,在Container中安装和测试你选择的任何软件。 完成所有设置后,返回主机系统的shell,请勿停止或关闭Container,要在不停止Container的情况下切换到主机系统的shell,请按CTRL+P,然后按CTRL+Q。 从主机的shell中,运行以下命令以查找容器ID: $ sudo docker ps 最后,使用命令创建正在运行的Container的Docker镜像: $ sudo docker commit 3d24b3de0bfc ostechnix/ubuntu_apache 注: 3d24b3de0bfc - Ubuntu容器ID。 ostechnix - 创建容器的用户的名称。 ubuntu_apache - 用户ostechnix创建的docker镜像的名称。 让我们使用命令检查是否创建了新的Docker镜像: $ sudo docker images
正如你在上面的输出中看到的那样,新的Docker镜像已经在我们的localhost系统中从正在运行的Container中创建。 现在,可以像通常的suing命令一样,从新创建的Docker镜像中创建一个新的Container: $ sudo docker run -t -i ostechnix/ubuntu_apache /bin/bash
5.删除容器 使用Docker容器完成所有研发后,如果不再需要它们,可以删除。 要做到这一点,首先我们必须停止(关闭)正在运行的容器。 让我们用命令找出正在运行的容器: $ sudo docker ps 样本输出: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3d24b3de0bfc ubuntu:latest "/bin/bash" 28 minutes ago Up 28 minutes goofy_easley 使用它的ID停止正在运行的容器: $ sudo docker stop 3d24b3de0bfc 现在,使用命令删除容器: $ sudo docker rm 3d24b3de0bfc 同样,停止所有容器并删除它们(如果不再需要它们)。 逐个删除多个容器可能比较麻烦,因此,我们可以一次性删除所有已停止的容器,只需运行: $ sudo docker container prune 然后输入“Y”并按ENTER键删除容器。 注:此命令仅适用于最新的Docker版本。
6.删除Docker镜像 删除容器后,可以删除不再需要的Docker镜像。 要查找已下载的Docker镜像列表: $ sudo docker images
如上所示,我们的主机系统中有三个Docker镜像。 让我们使用他们的IMAGE ID删除它们: $ sudo docker rmi ce5aa74a48f1 附:故障排除的方法 如果Docker镜像被任何正在运行或已停止的容器使用,Docker将不允许你删除它们。 例如,当我尝试从我的一个旧的Ubuntu服务器删除ID为b72889fa879c的Docker镜像时,我收到以下错误: Error response from daemon: conflict: unable to delete b72889fa879c (must be forced) - image is being used by stopped container dde4dd285377 这是因为你要删除的Docker镜像当前正被另一个Container使用。 那么,让我们使用命令检查正在运行的Container: $ sudo docker ps
没有正在运行的容器。 让我们再次使用命令检查所有容器(运行和停止): $ sudo docker ps -a
如你所见,仍有一些已停止的容器正在使用其中一个Docker镜像,所以,让我们删除所有容器。 例:$ sudo docker rm 12e892156219 同样,使用各自容器的ID删除上面显示的所有容器。 删除所有容器后,最后删除Docker镜像。 例:$ sudo docker rmi b72889fa879c 让我们通过命令验证主机中是否还有其他Docker镜像: $ sudo docker images 至此,应该能完成删除Docker镜像的操作了。
相关主题 |