云网牛站
所在位置:首页 > Linux教程 > 搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

2019-05-18 22:02:02作者:石林稿源:云网牛站

本文为你介绍的内容是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

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

要基于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映像:

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

还可以使用以下命令下载特定版本的Ubuntu映像:

$ docker pull ubuntu:18.04

无论主机操作系统如何,Docker都允许我们下载任何图像并启动容器。

例如,要下载CentOS映像,请运行:

$ sudo docker pull centos

所有下载的Docker镜像都将保存在/var/lib/docker/目录中。

要查看已下载的Docker镜像列表,请运行:

$ sudo docker images

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

如上图所示,我已经下载了三个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(命令提示符):

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

要返回主机系统的终端(在我的情况下,它是Ubuntu 18.04 LTS)而不终止Container(来宾操作系统),请按CTRL+P,然后按CTRL+Q,现在,你将安全地返回到原始主机的终端窗口,请注意,容器仍然在后台运行,我们还没有终止它。

要查看容器的列表运行,请运行以下命令:

$ sudo docker ps

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

注:

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镜像,运行和删除Docker容器的方法

正如你在上面的输出中看到的那样,新的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镜像,运行和删除Docker容器的方法

如上所示,我们的主机系统中有三个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

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

没有正在运行的容器。

让我们再次使用命令检查所有容器(运行和停止):

$ sudo docker ps -a

搜索/下载/构建自定义/删除Docker镜像,运行和删除Docker容器的方法

如你所见,仍有一些已停止的容器正在使用其中一个Docker镜像,所以,让我们删除所有容器。

例:$ sudo docker rm 12e892156219

同样,使用各自容器的ID删除上面显示的所有容器。

删除所有容器后,最后删除Docker镜像。

例:$ sudo docker rmi b72889fa879c

让我们通过命令验证主机中是否还有其他Docker镜像:

$ sudo docker images

至此,应该能完成删除Docker镜像的操作了。

 

相关主题

在Ubuntu 18.04/16.04系统上设置Docker Private Registry的方法

精选文章
热门文章