镜像命令
1. 获取镜像
1
| docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
|
2. 列出镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| $ docker images
$ docker image ls
$ docker images -a
$ docker image ls -a
$ docker image ls -q 5f515359c7f8 05a60462f8ba fe9198c04d62 00285df0df87 329ed837d508 329ed837d508
|
3. 运行镜像
1
| $ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
|
OPTIONS说明:
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
–name=”nginx-lb”: 为容器指定一个名称;
–volume , -v: 绑定一个卷
实例
- 使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
1
| docker run --name mynginx -d nginx:latest
|
- 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
1
| docker run -P -d nginx:latest
|
- 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
1
| docker run -p 80:80 -v /data:/data -d nginx:latest
|
- 绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
1
| $ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
|
- 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
1 2
| runoob@runoob:~$ docker run -it nginx:latest /bin/bash root@b8573233d675:/
|
4. 删除镜像
1 2 3 4 5 6 7 8
| $ docker image rm [选项] <镜像1> [<镜像2> ...]
$ docker rmi <image1> [<image2>]
$ docker image rm $(docker image ls -q redis)
$ docker image rm $(docker image ls -q -f before=mongo:3.2)
|
5. 保存镜像
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]: 从运行的容器中保存
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
$ docker run --name webserver -d -p 80:80 nginx
$ docker exec -it webserver bash root@3729b97e8226:/ root@3729b97e8226:/ exit
$ docker commit \ --author "Tao Wang <twang2218@gmail.com>" \ --message "修改了默认网页" \ webserver \ nginx:v2 sha256:07e33465974800ce65751acc279adc6ed2dc5ed4e0838f8b86f0c87aa1795214
|
6. 镜像导出和导入/保存和载入
docker export; docker import 或者docker save; docker load
1 2 3 4 5 6 7 8 9 10 11 12 13
|
$ docker export f299f501774c > hangger_server.tar
$ docker import - new_hangger_server < hangger_server.tar
$ docker save 0fdf2b4c26d3 > hangge_server.tar
$ docker save -o images.tar postgres:9.6 mongo:3.4
$ docker load < hangge_server.tar
|
- 注意:
docker export; docker import或docker save; docker load必须成对使用
- docker export 的应用场景:主要用来制作基础镜像,比如我们从一个 ubuntu 镜像启动一个容器,然后安装一些软件和进行一些设置后,使用 docker export 保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。
- docker save 的应用场景:如果我们的应用是使用 docker-compose.yml 编排的多个镜像组合,但我们要部署的客户服务器并不能连外网。这时就可以使用 docker save 将用到的镜像打个包,然后拷贝到客户服务器上使用 docker load 载入。