docker命令参数
[root@slave1 ~]# docker --
--add-host --cpu-shares --env-file --kernel-memory --no-healthcheck --stop-signal
--attach --detach --expose --label --oom-kill-disable --stop-timeout
--blkio-weight --detach-keys --gpus --label-file --oom-score-adj --storage-opt
--blkio-weight-device --device --group-add --link --pid --sysctl
--cap-add --device-cgroup-rule --health-cmd --link-local-ip --pids-limit --tmpfs
--cap-drop --device-read-bps --health-interval --log-driver --privileged --tty
--cgroupns --device-read-iops --health-retries --log-opt --publish --ulimit
--cgroup-parent --device-write-bps --health-start-period --mac-address --publish-all --user
--cidfile --device-write-iops --health-timeout --memory --pull --userns
--cpu-period --disable-content-trust=false --help --memory-reservation --read-only --uts
--cpu-quota --dns --hostname --memory-swap --restart --volume
--cpu-rt-period --dns-option --init --memory-swappiness --rm --volume-driver
--cpu-rt-runtime --dns-search --interactive --mount --runtime --volumes-from
--cpus --domainname --ip --name --security-opt --workdir
--cpuset-cpus --entrypoint --ip6 --network --shm-size
--cpuset-mems --env --ipc --network-alias --sig-proxy=false
一 构建测试镜像
# 爬取centos最新版本镜像文件,若已经本地存在,则忽略此步骤
[root@slave1 ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
# 使用DockerFile构建新镜像文件,区分与新爬取的镜像
[root@slave1 ~]# docker images | grep centos
centos latest 5d0da3dc9764 3 months ago 231MB
# 创建新镜像,镜像版本自定义
[root@slave1 ~]# docker build -f /tmp/docker_test -t mycentos:1.1 .
Sending build context to Docker daemon 5.352MB
Step 1/4 : FROM centos
---> 5d0da3dc9764
Step 2/4 : RUN yum install -y vim
---> Running in e5440e799f01
……
……
Removing intermediate container e5440e799f01
---> ba1f147adbb8
Step 3/4 : RUN yum install -y net-tools
---> Running in 48b3be7ca360
……
……
Complete!
Removing intermediate container 48b3be7ca360
---> 5582ec2db60c
Step 4/4 : CMD /bin/bash
---> Running in 6e97be77d0f4
Removing intermediate container 6e97be77d0f4
---> 97c0137c255b
Successfully built 97c0137c255b
Successfully tagged mycentos:1.1
# 查看自定义镜像是否与源镜像存在区别
[root@slave1 ~]# docker images | grep centos
mycentos 1.1 97c0137c255b About a minute ago 322MB
centos latest 5d0da3dc9764 3 months ago 231MB
二 docker save&load
# 查看save帮助信息
[root@slave1 ~]# docker save --help
Usage: docker save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
-o, --output string Write to a file, instead of STDOUT
# 保存新镜像为压缩文件(镜像保存的方式为tar文件)
[root@slave1 ~]# docker save mycentos:1.1 -o /tmp/docker_test.tar
# 查看保存后的文件
[root@slave1 ~]# ll -dh /tmp/docker_test.tar
-rw------- 1 root root 316M Dec 21 04:38 /tmp/docker_test.tar
# 为了区分导入效果,删除已经存在的新镜像
[root@slave1 ~]# docker rmi mycentos:1.1
Untagged: mycentos:1.1
Deleted: sha256:97c0137c255b4506ce144f6232c233e37b90d15f15ddcfe1e6860792a920d4ac
Deleted: sha256:5582ec2db60c5235dd2eba1affb1664bafc00fe6514cdf20ce7326aa97da37bf
Deleted: sha256:4e93141ad1c3459302608c0958ae22c8f16940f1d015e09509b944ccc3c0048e
Deleted: sha256:ba1f147adbb8adc34593ff96f07caa479c754e4c897b413df1aed21a2293e294
Deleted: sha256:a94efbac0393df33c2a1f703d6cdccf7cc88afa9f22b22095e27a026c5987ba7
# 查看load帮助信息
[root@slave1 ~]# docker load --help
Usage: docker load [OPTIONS]
Load an image from a tar archive or STDIN
Options:
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output
# 使用load导入相关tar文件
[root@slave1 ~]# docker load -i /tmp/docker_test.tar
d1b9a32f1eca: Loading layer [==================================================>] 65.42MB/65.42MB
0c313fee8079: Loading layer [==================================================>] 27.07MB/27.07MB
Loaded image: mycentos:1.1
# 查看导入结果
[root@slave1 ~]# docker images | grep centos
mycentos 1.1 97c0137c255b 12 minutes ago 322MB
centos latest 5d0da3dc9764 3 months ago 231MB
三 docker save&import
# 查看export帮助信息
[root@slave1 ~]# docker export --help
Usage: docker export [OPTIONS] CONTAINER
Export a container's filesystem as a tar archive
Options:
-o, --output string Write to a file, instead of STDOUT
# 使用新镜像创建新容器
[root@slave1 ~]# docker run -it --name docker_test_1 -d mycentos:1.1
2ead34be2ac3a25ae7e026559ec718f00e6488960bfa0a016f235ec75c84c12f
# 查看新创建的容器信息
[root@slave1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ead34be2ac3 mycentos:1.1 "/bin/sh -c /bin/bash" 6 seconds ago Up 4 seconds docker_test_1
# 使用export导出新创建的容器
[root@slave1 ~]# docker export docker_test_1 -o /tmp/docker_test2.tar
# 查看导出文件
[root@slave1 ~]# ll -dh /tmp/docker_test2.tar
-rw------- 1 root root 280M Dec 21 04:45 /tmp/docker_test2.tar
# 查看import帮助信息
[root@slave1 ~]# docker import --help
Usage: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
Import the contents from a tarball to create a filesystem image
Options:
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Set commit message for imported image
--platform string Set platform if server is multi-platform capable
# 使用import导入tar文件,并修改名称(将容器文件导入为镜像文件)
[root@slave1 ~]# cat /tmp/docker_test2.tar | docker import - mycentos:1.1
sha256:4d8110bc4e2ed96cffe42aa70a56d669333ea1b1239c479b9efe67138aadb155
# 此命令同上条命令,功能一致
[root@slave1 ~]# docker import /tmp/docker_test2.tar mycentos:1.1
# 查看导入结果
[root@slave1 ~]# docker images | grep centos
mycentos 1.1 4d8110bc4e2e 24 seconds ago 285MB
centos latest 5d0da3dc9764 3 months ago 231MB
四 总结
export和import 导出的内容是一个容器的快照,并不是镜像本身,没有layer,快照文件会导致容器丢失所有的历史记录与元数据信息,而使用save和load保存的镜像文件则可以保留此两种内容,但是其体积更大;
- docker load 加载镜像包、 docker import 加载容器包,两者都将其恢复为镜像;
- docker load不能对镜像重命名、docker import可以为镜像指定新名称;