1. 获取镜像
从 Docker 镜像仓库获取镜像的命令是 docker pull。其命令格式为:
docker pull [选项] [Docker Registry 地址[:端口号]/] 仓库名[:标签]
具体的选项可以通过
docker pull --help
命令看到,这里我们说一下镜像名称的格式。Docker 镜像仓库地址:地址的格式一般是<域名/IP>[:端口号]
。默认地址是 Docker Hub。仓库名:这里的仓库名是两段式名称,即<用户名>/<软件名>
。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。docker pull ubuntu:16.04
上面的命令没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub 获取镜像。而镜像名称是
ubuntu:16.04
,因此将会获取官方镜像library/ubuntu
仓库中标签为 16.04 的镜像。2. 运行镜像
有了镜像后,我们就能以这个镜像为基础启动并运行一个容器。以上面的
ubuntu:16.04
为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令:docker run -it --rm ubuntu:16.04 bash
-it
:这是两个参数,一个是-i
:交互式操作,一个是-t
:终端。--rm
:这个参数是说容器退出后随之将其删除。ubuntu:16.04
:这里指用ubuntu16.04
镜像为基础来启动容器。bash
:放到镜像名后的是命令,这里我们希望有个交互式的 Shell,因此用的是bash
。
- 我们通过
exit
退出这个容器。3. 列出镜像
要想列出已经下载下来得镜像,可以使用以下命令。列表包含了仓库名、标签、镜像 ID、创建时间以及所占用的空间。
docker image ls docker images
查看镜像、容器、数据卷所占用的空间。
docker system df
仓库名、标签均为 的镜像称为虚悬镜像(dangling image),显示这类镜像:
docker image ls -f dangling=true
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
docker image prune
4. 删除本地镜像
如果要删除本地的镜像,可以使用
docker image rm
命令,其格式为:docker image rm [选项] <镜像1> [<镜像2> ...]
- 启动,<镜像> 可以是镜像短 ID、镜像长 ID、镜像名或者镜像摘要。
使用
docker image ls -1
来配合docker image rm
,这样可以批量删除希望删除的镜像。docker image rm $(docker image ls -q ubuntu) # 删除所有仓库名为 ubuntu 的镜像
删除所有在
ubuntu:16.04
之前的镜像:docker image rm $(docker image ls -q -f before=ubuntu:16.04)
删除所有镜像
docker image rm $(docker image ls -q)
5. 启动容器
1. 基于镜像新建一个容器并启动
docker run
输出一个 “Hello World”,之后终止容器。
docker run ubuntu:16.04 /bin/echo 'Hello World'
启动一个 bash 客户端,允许用户进行交互
docker run -t -i ubuntu:16.04 /bin/bash
-t
让 Docker 分配一个伪终端并绑定到容器的标准输入上,-i
则让容器的标准输入保持打开。- 当利用
docker run
来创建容器时,Docker 在后台运行的标准操作包括:
6. 后台运行
- 很多时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。
- 此时,可以通过添加
-d
参数来实现。- 如果不适用
-d
参数来运行容器,比如docker run hello-world
会把日志打印在控制条。 - 如果使用了
-d
参数运行容器,比如docker run -d hello-world
不会输出日志,只会打印容器 id(输出结果可以用docker logs
查看)。
- 如果不适用
- 容器是否会长久运行,是和
docker run
指定的命令有关,和-d
参数无关。7. 停止运行的容器
- 可以使用
docker container stop
或docker stop
来终止一个运行中的容器。 - 终止状态的容器可以用
docker container ls -a
或docker ps -a
命令看到。 - 处于终止状态的容器,可以通过
docker container start
命令来重新启动。 - 此外,
docker container restart
命令会将一个运行态的容器终止,然后再重新启动它。8. 进入容器
- 在使用
-d
参数时,容器启动后会进入后台,某些时候需要进入容器进行操作,使用docker exec
命令可以进入到容器中。 exec
命令-i
-t
参数docker exec
后边可以跟多个参数,这里主要说明-i
-t
参数- 只用
-i
参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。 - 当
-i -t
参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
docker exec -it 容器ID /bin/bash
9. 导出和导入容器
导出容器
- 如果要导出本地某个容器,可以使用
docker export
命令docker export 容器ID > 导出文件名.tar
导入容器
可以使用
docker import
从容器快照文件中再导入为镜像。cat 导出文件名.tar | docker import - 镜像用户/镜像名:镜像版本
此外,也可以通过指定 URL 或者某个目录来导入
docker import http://study.zp.com/image.tgz example/imagerepo