本文首发于微信公众号: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 来查看都是可以的
如果想获取更多后端相关文章,可扫码关注阅读:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。