本篇文章是介绍镜像 image 和 容器 container 的基础操作命令,后直接使用英文 image 和 container 替代。
首先来讲解释一下 image 和 container 的关系。
image 概念
image 就是我们从 docker 远程仓库里 pull 下来的系统,Ubuntu 也好, Python 也好,背后都是一个最精简的 Linux 操作系统在支持,这些都是镜像。
即便你把你的代码写了进去,只要这个 image 没有运行起来,就还是一个 image。
container 概念
当我们把上述 image 运行起来,这个 image 就成了一个 container。
官方解释就是 image 是 构建时(build-time)结构,container 是 运行时(run-time)结构。
好,接下来介绍一下 image 和 container 的具体操作命令。
image 操作命令
查看本地所有 pull 下来的镜像:
docker image ls
拉取一个 Ubuntu 镜像:
docker image pull ubuntu:latest
拉取一个 Python 镜像:
docker image pull python:3.6
在远程仓库,每一个镜像都有 对应的镜像名字和标签(tag),比如 ubuntu 和 latest。
如不指定标签,会默认 pull 标签为 latest 的镜像。
使用 -a 参数 pull 所有指定镜像:
docker image pull -a python
在远程仓库搜索相关镜像:
docker search ubuntu
查看某镜像标签、id、分层等各种信息:
docker image inspect ubuntu:latest
通过 IMAGE ID 删除某个 image:
docker image rm ed21b7a8aee9
上述中的 ed21b7a8aee9 就是某镜像的 IMAGE ID,可通过 docker image ls 查看 image 的第一列获取。
删除所有 image:
docker image rm $(docker image ls -q) -f
container 操作命令
查看所有容器:
docker container ls
运行某个 image 进入该 container:
docker container run -it ubuntu:latest /bin/bash
运行某个 imag 并使其在后台运行:
docker container run -itd ubuntu:latest /bin/bash
进入某个容器:
docker container ls #查看并选择某个 container id
#根据 container id 进入该 container
docker container exec -it 039d1fb17ec4 /bin/bash
退出某个 container:
exit
#或者
ctrl + p + q #(按住ctrl+p, ctrl 不放 p 放开, 再按q)
注意: 如果你是运行并进入某个 container ,输入 exit 退出系统后,该 container 也会停止。
如果你是进入一个运行中的 container ,输入 exit 只是退出界面,container 会在后台运行。
而不管什么情况,ctrl + p + q 操作,都只是退出界面,不会停止 container。
停止 container 运行:
docker container stop 90046a96e675 #这串代码是 CONTAINER ID
删除某个 container:
docker container rm 90046a96e675
以 name 字段运行 container:
docker container run --name hunter -itd ubuntu:latest /bin/bash
使用 name 字段进入 container:
docker container exec -it hunter /bin/bash
使用 name 字段停止 container:
docker container stop hunter
使用 name 字段运行 container:
docker container start hunter
列出包括已经停止的 container:
docker container ls -a
删除所有 container:
docker container rm $(docker container ls -aq) -f
查看 container 详细信息:
docker container inspect 90046a96e675
如果 container 有 name 字段,也可以使用 name 字段