头图

本文首发于微信公众号:Hunter后端

原文链接:Docker笔记二之容器

上一篇笔记介绍了 Docker 镜像的概念,这一篇介绍容器的概念。

当我们从镜像仓库拉取了一个镜像系统,我们称之为镜像,比如上一篇笔记中的 ubuntu,Python 镜像。

当我们把镜像运行起来,这个镜像 image 就变成了一个容器 container。

我们所有的服务都是在镜像运行起来后,在容器中实现的。

接下来介绍容器的一些基本命令

1、运行容器

我们以拉取的 ubuntu 镜像为例,现在运行该镜像,使其变成一个容器,命令如下:

docker run -it ubuntu:18.04 bash

docker run 为运行容器的命令

-it 容器运行的参数,-i 表示以交互模式运行容器,-t 为容器重新分配一个伪输入终端,这两者通常连用

ubuntu:18.04 通过这个参数来定位我们需要运行的容器,如果我们使用的 Python 镜像,可以把这个变为 python:3.6

bash 表示我们进入容器的时候会执行 bash 命令,如果我们运行的是 Python 镜像,这个命令改为 python,那么一进入容器就会进入 python 的交互界面

当我们执行上面的语句后,就会进入到容器里面,这个容器就是一个最简洁的 Linux 系统

然后我们退出这个系统有两种方式,一种是在容器内输入 exit

另一种方式是 ctrl + p + q (按住ctrl,依次点击 p 和 q 按钮,按完 p 放开,再按 q)

注意:如果我们第一次这样进入容器,使用 exit 来退出的话,会导致容器也停止运行

后台运行容器

如果仅仅是想运行一个容器,而不进入该容器,可以加上 -d 参数:

docker run -itd ubuntu:18.04 bash

2、查看容器

查看正在运行中的容器

docker container ls 

docker ps

以上两条命令是等效的,都可以查出正在运行的容器,一般常用第二条 docker ps

查看所有容器,包括停止运行的容器

如果是查看包含停止运行的容器在内的所有容器,可以加上 -a 参数

docker container ls -a

docker ps -a

通过 ps 命令出来一个运行的容器列表,有如下几种title:

CONTAINER ID:跟 IMAGE ID 一样,也是每个容器的唯一 ID

IMAGE:表示这个容器是来自哪个镜像,比如 ubuntu:18.04

COMMAND:容器启动时运行的命令,比如我们前面运行的时候加的 bash,这个是可以自定义的

CREATED:什么时候创建的

STATUS:容器运行状态

PORTS:是容器运行的时候指定的端口映射,比如说,后面我们会介绍,在容器里面运行 Django 系统,python3 manage.py runserver 0:9898,那么容器内的端口就是 9898,如果想要在容器外访问这个服务,则需要在容器运行的时候指定一个端口映射,将容器的 9898 端口映射到宿主机的某个端口

NAMES:我们运行容器的时候可以给容器指定一个 name,我们下面介绍这个操作

3、容器操作

进入容器

前面通过 docker ps 命令可以获取所有正在运行的容器,如果想要进入某个容器内部,可以通过 container id 来操作

现在我们假设容器 id 为 4abb000c5ed5,命令为:

docker exec -it 4abb000c5ed5 bash

停止运行容器

如果想停止运行某个容器,使用 stop 命令:

docker stop 4abb000c5ed5

注意,停止运行的容器并没有消失,我们可以通过 docker ps -a 查看到

重启运行容器

对于停止运行的容器,我们可以重新运行:

docker restart 4abb000c5ed5

restart 命令并不仅仅针对于已经停止运行的容器,有时候为了方便调试,我们可以进入容器内部,修改某些代码,退出容器后运行 restart 命令,就可以使得修改的代码立即生效

删除容器

如果想要删除一个容器,注意,这里的删除操作一旦执行,容器就是真正的没了,除非是挂载到宿主机的目录文件,容器内部的所有数据都会被删除

docker rm 4abb000c5ed5

注意:rm 操作仅仅是针对于已经 stop 的容器,正在运行的容器是不能被删除的

4、容器命名

给容器取名

在容器运行的时候,通过 --name 参数可以指定给容器命名

docker run -itd --name hunter ubuntu:18.04 bash

在之后的操作里,比如,进入容器,停止运行容器,删除容器 都可以用 name 来替代 container id

比如:

docker exec -it hunter bash

docker stop hunter

docker restart hunter

注意: 容器的命名必须是唯一的,当我们给另一个容器命名已经存在的名称的时候,会报错

5、查看容器详细信息

docker inspect 4abb000c5ed5

docker inspect hunter

通过 container id 或者 name 来查看都是可以的

如果想获取更多后端相关文章,可扫码关注阅读:
image.png


Hunter
27 声望12 粉丝