【Docker】Docker使用教程

docker pull 是真的烦人,不如存本地搞事情

Docker 本地导入镜像/保存镜像/载入镜像/删除镜像

docker load 与 docker import

首先,想要清楚的了解docker loaddocker import命令的区别,就必须了解镜像与容器的区别:

镜像:用来启动容器的只读模板,是容器启动所需的rootfs,类似于虚拟机所使用的镜像。
容器:Docker 容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

1
镜像是容器的基础,可以简单的理解为镜像是我们启动虚拟机时需要的镜像,容器时虚拟机成功启动后,运行的服务。

想要了解docker loaddocker import命令的区别,还必须知道docker savedocker export命令:

docker save images_name:将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。
docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。

docker export container_id:将一个容器导出为文件,再使用docker import命令将容器导入成为一个新的镜像
但是相比docker save命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

Docker 导入本地镜像

有时候我们自己在本地或者其它小伙伴电脑上拷贝了一份镜像,有了这个镜像之后,我们可以把本地的镜像导入,使用docker import 命令。

例如这里下载了一个 alibaba-rocketmq-3.2.6.tar.gz 镜像文件,使用下列命令导入:

1
2
3
4
5
6
7
8
[root@rocketmq-nameserver4 dev]# cat alibaba-rocketmq-3.2.6.tar.gz | docker import - rocketmq:3.2.6(镜像名自己定义)
[root@rocketmq-nameserver4 dev]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rocketmq 3.2.6 53925d1cf9f0 23 seconds ago 14MB
my/python v1 36b6e288656c 2 days ago 281MB
my/centos_width_python v1.0.1 36b6e288656c 2 days ago 281MB
my/sinatra v2 8ba1d6a3ce4e 2 days ago 453MB
hello-world latest 725dcfab7d63 4 months ago 1.84kB

可以看到导入完成后,docker为我们生成了一个镜像ID,使用docker images也可以看到我们刚刚从本地导入的镜像。

注意镜像文件必须是tar.gz类型的文件。

保存镜像

我们的镜像做好之后,我们要保存起来,以供备份使用,该怎么做?使用docker save命令,保存镜像到本地。

1
2
3
4
5
6
7
8
root@lepPwn:/etc/docker# docker save -o web_14.04.tar web_14.04  // -o: 指定保存的镜像的名字; web_14.04.tar: 保存到本地的镜像名称; web_14.04: 镜像名字,通过"docker images"查看
root@lepPwn:/etc/docker# ls -la
总用量 1409148
drwxr-xr-x 2 root root 4096 10月 28 15:05 .
drwxrwxrwx 155 root root 12288 10月 28 14:23 ..
-rwxr-xr-x 1 root root 91 10月 28 14:48 daemon.json
-rwxr-xr-x 1 root root 244 8月 16 17:18 key.json
-rwxr-xr-x 1 root root 1442937856 10月 28 15:05 web_14.04.tar

web_14.04.tar 为刚保存的镜像

载入镜像

我们有了本地的镜像文件,在需要的时候可以使用docker load将本地保存的镜像再次导入docker中。

docker load –input web_14.04.tar 或 docker load < web_14.04.tar

删除镜像

有些镜像过时了,我们需要删除。使用如下的命令:docker rmi -f image_id // -f:表示强制删除镜像;image_id:镜像id

1
2
3
4
5
6
7
8
9
10
11
12
root@lepPwn:/etc/docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web_14.04 latest b632f3c1a5d0 4 weeks ago 1.42GB
<none> <none> 584b3f775efc 2 months ago 203MB
ubuntu 16.04 5e13f8dd4c1a 3 months ago 120MB
root@lepPwn:/etc/docker# docker rmi 584b3f775efc
Deleted: sha256:584b3f775efcf977fc43360e949681aa01934f3585e07760523f645bfc3d7b5b
以下删除步骤省略...
root@lepPwn:/etc/docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web_14.04 latest b632f3c1a5d0 4 weeks ago 1.42GB
ubuntu 16.04 5e13f8dd4c1a 3 months ago 120MB

如果同一个 ID 有多个 tag 的话,就在 rmi 后面输入镜像名字即可

如这里的zhl2008/web_14.04web_14.04

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@lepPwn:/etc/docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zhl2008/web_14.04 latest b632f3c1a5d0 4 weeks ago 1.42GB
web_14.04 latest b632f3c1a5d0 4 weeks ago 1.42GB
<none> <none> 584b3f775efc 2 months ago 203MB
ubuntu 16.04 5e13f8dd4c1a 3 months ago 120MB
root@lepPwn:/etc/docker# docker rmi b632f3c1a5d0
Error response from daemon: conflict: unable to delete b632f3c1a5d0 (must be forced) - image is referenced in multiple repositories
root@lepPwn:/etc/docker# docker rmi zhl2008/web_14.04
Untagged: zhl2008/web_14.04:latest
Untagged: zhl2008/web_14.04@sha256:e88a14a72213263c147f76b5cacf52cae696197953a0e8787fe3ec8b10d501c9
root@lepPwn:/etc/docker# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web_14.04 latest b632f3c1a5d0 4 weeks ago 1.42GB
<none> <none> 584b3f775efc 2 months ago 203MB
ubuntu 16.04 5e13f8dd4c1a 3 months ago 120MB

参考链接:

1
2
https://www.cnblogs.com/Cherry-Linux/p/8025777.html
https://www.cnblogs.com/linjiqin/p/8604756.html
文章目录
  1. 1. Docker 本地导入镜像/保存镜像/载入镜像/删除镜像
    1. 1.1. docker load 与 docker import
    2. 1.2. Docker 导入本地镜像
    3. 1.3. 保存镜像
    4. 1.4. 载入镜像
    5. 1.5. 删除镜像
|