docker命令

docker命令

拉取镜像

1
docker pull

查看镜像列表

1
docker image ls

查看容器列表

1
docker container ls

运行镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run -it --rm ubuntu:18.04  bash

-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
ubuntu:18.04:这是指用 ubuntu:18.04 镜像为基础来启动容器。
bash:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是 bash。

docker run --name webserver -d -p 80:80 nginx
-d 在后台运行
-p 指定端口映射

增加端口可以通过iptables进行端口转发
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 803 -j DNAT --to-destination 172.17.0.2:803

进入已经运行的容器

1
docker exec -it webserver bash

删除镜像

1
2
3
4
5
6
docker images
docker ps -a
docker stop 容器ID
docker rm 容器ID
docker rmi 镜像
docker rmi -f

将容器保存为镜像(慎用,此操作后期维护极其麻烦)

1
2
3
4
5
6
7
 docker commit 
--author "Tao Wang <twang2218@gmail.com>" \
--message "修改了默认网页" \
webserver \
nginx:v2

其中 --author 是指定修改的作者,而 --message 则是记录本次修改的内容。这点和 git 版本控制相似,不过这里这些信息可以省略留空。

导出容器

如果要导出本地某个容器,可以使用 docker export 命令。

1
2
3
4
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7691a814370e ubuntu:18.04 "/bin/bash" 36 hours ago Exited (0) 21 hours ago test
$ docker export 7691a814370e > ubuntu.tar

这样将导出容器快照到本地文件。

导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,例如

1
2
3
4
$ cat ubuntu.tar | docker import - test/ubuntu:v1.0
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB

此外,也可以通过指定 URL 或者某个目录来导入,例如

1
$ docker import http://example.com/exampleimage.tgz example/imagerepo

注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

-------------本文结束感谢您的阅读-------------
如有疑问或需要技术讨论,请发邮件到 zlem0n@foxmail.com