Docker新手入门:容器的使用

教程分享 [db:作者] 4个月前 (06-26) 130次浏览 0个评论

上一篇文章我给大家介绍了 Docker 以及如何安装,这篇文章我们就正式开始使用 Docker,先从容器的基本使用方法开始。

上一篇文章已经大致介绍过容器了,容器是由 Docker 镜像创建的,镜像是由 Dockerfile 文件生成的,Dockerfile 包含了这个镜像的信息、依赖项以及需要执行的操作,如果我们需要自定义镜像,可以自己编写 Dockerfile 文件,鉴于我们这是新手入门的教程,Dockerfile 文件的编写不在本教程范围里。

Docker 创建一个容器后,这个容器便是一个独立于其他容器和宿主系统的存在,容器内的所有正常操作,均不会影响到其他容器和宿主系统。不过由于和宿主系统共享 Linux 内核,所以在一些极端情况下,容器可能会影响到宿主系统。

容器的数据是保存在容器里面的,如果容器被删除,里面所有的数据也会消失,如何让容器的数据持久化,这个在以后的文章会讲到。

Docker 的强大之处在于它的生态环境,你几乎可以在 Docker 镜像仓库里找到任何你需要的镜像。比如想搭建个博客,没问题,你只需要创建一个基于 WordPress 或其他博客系统的镜像的容器就可以了,这个镜像会自动处理运行环境的依赖和配置,只需要一行命令,就可以做到开箱即用。

说了这么多,接下来教大家一些 Docker 容器的使用方法以及一些基础命令。

Docker 新手入门:容器的使用

Docker 镜像

首先要知道如何找到需要的镜像,也很简单啦,只需要前往 Docker 镜像仓库 https://hub.docker.com 搜索就可以了,如果你的网络不是很好,无法访问,那。。。你可以加群问小山啊。

比如我想要一个 alpine 系统的镜像,这是一个非常精简的 Linux 发行版,下面的操作我会以这个镜像作为演示。

首先在镜像仓库搜索这个镜像,这类镜像都有官方提供的版本,会标注 Docker Official Images 的字样。

Docker 新手入门:容器的使用

你可以在镜像页面的右侧看到镜像的拉取命令,

1
docker pull

命令可以将镜像拉取到本地,当然,你也可以直接使用镜像创建容器,如果镜像不存在,Docker 会自动拉取。

直接运行拉取镜像命令会拉取默认的镜像,但是镜像一般会提供多个版本或历史版本,你可以点击拉取命令的下方的

1
View Available Tags

来查看该镜像的所有可用标签。

比如我想拉取 alpine 的 3.8 版本,只需要在镜像名称后面加上冒号和标签即可,例如:

1
docker pull alpine:3.8

拉取后的镜像不会自动更新,如果你想更新镜像只需要重新拉取即可,重新拉取后,需要重新创建容器才能使用新的镜像,并且旧镜像不会删除。

要查看本地所有镜像,使用命令

1
sudo docker images

结果会输出镜像的名称、标签、ID、创建时间以及大小

如果需要删除镜像,使用命令

1
sudo docker rmi <name>:<tag>

,如果镜像是默认的 tag,就不需要加 <tag>。

Docker 容器

说完如何管理镜像,下面我们来说说如何创建以及管理容器。

如果我们想创建并运行一个容器,很简单,只需要使用命令

1
sudo docker run &lt;name&gt;:&lt;tag&gt;

默认创建的容器会随机生成一个名称,如果要制定容器的名称,可以使用–name 参数,例如:

1
sudo docker run --name mivm &lt;name&gt;:&lt;tag&gt;

,创建一个名为 mivm 的容器。

如果你使用以上的命令来创建刚刚拉取的 alpine 镜像,会发现没有任何动静,我们好像并不能使用 alpine 系统。那是因为这个镜像默认没有任何操作,创建即结束,根本不能用。

如果我们想要使用系统镜像有两种方法

第一种方法是让容器执行命令,例如:

1
sudo docker run --name mivm --rm alpine ls /usr/bin

,这个命令的意思是创建一个名为 mivm 基于 alpine 镜像的容器,并且让容器执行命令

1
ls /usr/bin

1
--rm

参数可以让容器在结束后立即删除

运行完上述命令可以看到

1
ls /usr/bin

的执行结果,也就是列出

1
/usr/bin

目录下的文件,但它列出的是容器里的文件,而不是宿主系统下的,也就是 alpine 镜像的文件。

第二种方法是使用交互式 Shell,例如:

1
sudo docker run -i -t --name mivm --rm alpine /bin/sh

,这个命令加了两个参数,

1
-i

用来打开交互式 Shell,

1
-t

尝试分配伪 TTY,而命令

1
/bin/sh

就是我们要使用的 Shell

运行完上述命令就可以进入到容器内部的 Shell,你可以执行任何命令,甚至是添加软件包,如果需要退出容器,输入

1
exit

即可。

上面说的运行容器的方法都是及时的,如果想让容器保留在后台,并且可以随时的进入容器操控,怎么做呢?

很简单,只需要更改一下命令,再加上几个新的命令,例如:

1
sudo docker run -itd --name mivm --restart always alpine /bin/sh

,这个命令删除了

1
--rm

参数,这样运行结束后就不会被删除,新增了

1
-d

参数表示这个容器在后台运行,

1
--restart always

可以让容器在宿主系统重启后自动重新运行,否则容器不会自动重新运行

运行完上述命令后只会返回一个容器 ID,容器会在后台运行。

使用命令

1
sudo docker ps -a

查看容器运行状态,

1
-a

参数代表列出已结束的容器。

如果想使用容器执行命令,使用命令

1
sudo docker exec &lt;name&gt; &lt;command&gt;

,例如:

1
sudo docker exec mivm ls /usr/bin

,表示在名为 mivm 的容器里执行

1
ls /usr/bin

命令,如果想打开交互式 Shell,只需要把命令改成:

1
sudo docker exec -it mivm /bin/sh

如果想查看容器里输出的日志,使用命令

1
sudo docker logs &lt;name&gt;

容器使用完可能要删除,删除容器的操作也很简单。

首先停止容器,使用命令

1
sudo docker stop &lt;name&gt;

,然后删除容器,使用命令

1
sudo docker rm &lt;name&gt;

,例如:

1
sudo docker stop mivm &amp;&amp; sudo docker rm mivm

,使用

1
docker stop

停止容器后,可以使用

1
sudo docker start &lt;name&gt;

重新启动容器。

如果你不知道一个镜像该使用那些参数运行容器,一般在镜像页面都会有相对应的说明。


好了,这篇文章给大家讲了 Docker 容器的一些基本使用方法和命令,下一篇文章我会教大家如何实现 Docker 容器数据持久化。

有任何不懂的地方,欢迎加入 QQ 群与小山进行讨论。


速通主机速通主机
转载请注明原文链接:Docker 新手入门:容器的使用
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址