一、容器技术介绍
1.什么是容器
容器是一种虚拟化技术,做到了一次打包,就可以到处使用。
2.Docker和容器的关系
Dacker只是一个容器工具,而真正的容器技未是Lxc(LinuxCantainer),Dacker只是更加方便地将其愿现出来。
3.容器和虚拟化
容器类似于虚拟化,但和虚拟化有本质区别。
传统应用部署:硬件-操作系统-应用
虚拟化部署:硬件-操作系统-虚拟化软件-具体虚拟机-操作系统
容器化部署:硬件-操作系统-container runtime-容器
Linux 容器在本机操作系统上运行,与所有容器共享该操作系统,共享内核,共享资源,因此应用和服务能够保持轻巧,并行化快速运行。相较于虚拟机,Linux 容器在运行时所占用的资源更少,使用的是标准接口(启动、停止、环境变量等),并会与应用隔离开。
4.容器基本概念
LXC:是Linux Contain的缩写,就是Linux容器,是一个基于Linux内核功能特性实现轻量级虚拟化的技术。注意,Docker/Podman等容器技术,都是在LXC基础之上开发的三方工具。
LXC可以在操作系统层次上为进程提供虚拟的执行环境,一个虚拟的执行环境就是一个容器。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。
容器的隔离: 容器有效地将操作系统管理的资源划分到独立的组中,并把各个独立的组进行隔离,可以让各自的组占用独立的资源,完成自己独立的任务。因为容器最终执行的命令也是调用统一的os api来实现,是基于整个os来实现的,所以不需要单独操作系统的编译系统、执行解释器,一切工作都是基于os 的基础上来完成的。容器通过提供一种创建和进入容器的方式,让程序像跑在独立机器那样在容器中运行,并且相互之间不影响,而且还可以共享底层的资源。
容器的共享:容器提供环境隔离的前提下,还提供了资源共享的机制,所以容器比真正kvm 虚拟机的资源要节省许多;
5.容器核心技术
chroot: 创建一个虚拟的根目录文件系统,其实质还是调用底层的文件系统,建立一个虚拟的、可以跟其它容器的虚拟文件系统相互隔离、但共享底层的文件系统
namespace : 命名空间可以提供一个进程相互隔离的独立网络空间,不同的容器间进程pid可以相同,进程并不冲突影响,但可以共享底层的计算和存储资源
cgroups: 实现了对容器的资源分配和限制,比如给容器A分配4颗CPU,8G 内存,那这个容器最多用这么多的资源。如果内存超过8G ,会启动swap,效率降低,也可能会被调度系统给kill掉
6.企业为什么要使用容器技术
提升效率:容器可以快速移植,这就意味着企业在开发、部署阶段快速搭建开发、测试环境,并快速部署到生产环境里。
节省资源:一台物理机上可以运行几百个甚至上千个容器。
节省运维成本:使用主流的容器编排和管理工具(如,K8s),可以大大降低企业的运维成本,因为K8s本身集成了高可用、负载均衡、监控、自动修复等诸多功能。
二、跟容器相关的工具(只罗列具有代表性的)
1.Docker:Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
2.Podman: Podman是一个无守护进程的容器引擎,用于在Linux系统上开发、管理和运行OCI(Open Container Initiative)容器和容器镜像。
Podman提供了一个与Docker兼容的命令行工具,可以简单地为docker命令取别名为podman即可使用,所以说如果你会Docker的话可以轻松上手Podman。
3.Kubernetes(K8s):Kubernetes 就是一个生产级别的容器编排平台和集群管理系统,不仅能够创建、调度容器,还能够监控、管理服务器.
三、K8s弃用Docker
1)CRI:K8s在1.5版本里,引入了一个新的接口标准:CRI(Container Runtime Interface),它主要用来规定如何调用容器运行时来管理容器和镜像,和Docker调用标准有不少差异,两者完全不兼容
2)Containerd:为了迎合K8s,将Docker Engine拆分成多个模块,其中Docker Daemon部分捐献给了CNCF,也就是containerd。
在当时的K8s版本里,实际上有两种方法调用容器:
第一种是用 CRI 接口调用 dockershim,然后 dockershim 调用 Docker,Docker 再走 containerd 去操作容器。
第二种是用 CRI 接口直接调用 containerd 去操作容器。
3)弃用dockershim:实际上只是“弃用了 dockershim”这个小组件,也就是说把 dockershim 移出了 kubelet,并不是“弃用了 Docker”这个软件产品,变化就是 K8s绕过了 Docker,直接调用 Docker 内部的 containerd 。
4)K8s移除dockershim后对Docker的影响
因为容器镜像格式已经被标准化了(OCI 规范,Open Container Initiative),Docker 镜像仍然可以在 Kubernetes 里正常使用
Docker 是一个完整的软件产品线,不止是 containerd,它还包括了镜像构建、分发、测试等许多服务,甚至在 Docker Desktop 里还内置了 Kubernetes
Docker 公司把dockershim接管了过来,另建了一个叫 cri-dockerd的项目,把 Docker Engine 适配成 CRI 接口,这样 kubelet 就又可以通过它来操作 Docker
Docker 虽然在容器编排战争里落败,被 Kubernetes 排挤到了角落,但它仍然具有强韧的生命力,对于我们这些初学者来说,Docker 方便易用,具有完善的工具链和友好的交互界面,市面上很难找到能够与它媲美的软件了,应该说是入门学习容器技术和云原生的“不二之选”
四、Docker快速入门
1. Docker安装
1)先安装yum-utils工具
yum install -y yum-utils
yum install -y yum-utils
Last metadata expiration check: 0:04:27 ago on Mon 01 Jul 2024 12:30:17 PM EDT.
Dependencies resolved.
=================================================================================================================================================
Package Architecture Version Repository Size
=================================================================================================================================================
Installing:
yum-utils noarch 4.0.21-25.el8 baseos 75 k
Transaction Summary
=================================================================================================================================================
Install 1 Package
Total download size: 75 k
Installed size: 23 k
Downloading Packages:
yum-utils-4.0.21-25.el8.noarch.rpm 246 kB/s | 75 kB 00:00
-------------------------------------------------------------------------------------------------------------------------------------------------
Total 72 kB/s | 75 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : yum-utils-4.0.21-25.el8.noarch 1/1
Running scriptlet: yum-utils-4.0.21-25.el8.noarch 1/1
Verifying : yum-utils-4.0.21-25.el8.noarch 1/1
Installed:
yum-utils-4.0.21-25.el8.noarch
Complete!
2)配置Docker官方的yum仓库,由于docker官方不可用,调整为阿里云
yum-config-manager \
> --add-repo \
> https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@aminglinux01 ~]# yum-config-manager \
> --add-repo \
> https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3)查看Docker版本
yum list docker-ce --showduplicates | sort -r
4)安装指定版本Docker
yum install docker-ce-20.10.9-3.el8
yum install docker-ce ###默认安装最新版
5)启动服务
systemctl start docker
systemctl enable docker
[root@bogon ~]# docker version
Client: Docker Engine - Community
Version: 26.1.4
API version: 1.45
Go version: go1.21.11
Git commit: 5650f9b
Built: Wed Jun 5 11:32:04 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 26.1.4
API version: 1.45 (minimum version 1.24)
Go version: go1.21.11
Git commit: de5c9cf
Built: Wed Jun 5 11:31:02 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.33
GitCommit: d2d58213f83a351ca8f528a95fbd145f5654e957
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
[root@bogon ~]#
2.Docker镜像和容器
Docker镜像拉取下来后,可以直接运行,运行后的东西我们叫做容器,一个镜像可以启动很多容器。
容器就是镜像启动后的状态,在Linux系统里看就是一个进程,但容器是可以进入得,就像进入了一个虚拟机里。
1)配置加速器
编写/etc/docker/daemon.json
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://ggwf5kjm.mirror.aliyuncs.com"]
}
EOF
重启docker服务
systemctl restart docker
检查是否生效
docker info |grep -A 3 'Registry Mirrors'
[root@bogon docker]# docker info |grep -A 3 'Registry Mirrors'
Registry Mirrors:
https://https://ggwf5kjm.mirror.aliyuncs.com/
Live Restore Enabled: false
2)拉取镜像
docker pull busybox ##这个busybox就是系统镜像名字,它是从hub.docker.com去拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/*/webssh
Using default tag: latest
latest: Pulling from */webssh
4abcf2066143: Pull complete
5a532afc691f: Pull complete
63565bede7ac: Pull complete
Digest: sha256:a021312d9f1db357914f39714827e640dbc88e6fa7500405611340498e2a427a
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/daliyused/webssh:latest
registry.cn-hangzhou.aliyuncs.com/*/webssh:latest
3)查看当前系统镜像
docker image ls
[root@bogon docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
goharbor/harbor-exporter v2.10.1 3b6d345aa4e6 3 months ago 106MB
goharbor/redis-photon v2.10.1 9a994e1173fc 3 months ago 164MB
goharbor/trivy-adapter-photon v2.10.1 108e2a78abf7 3 months ago 502MB
goharbor/harbor-registryctl v2.10.1 da66353bc245 3 months ago 149MB
goharbor/registry-photon v2.10.1 4cb6a644ceeb 3 months ago 83.5MB
goharbor/nginx-photon v2.10.1 180accc8c6be 3 months ago 153MB
goharbor/harbor-log v2.10.1 2215e7f0f2e7 3 months ago 163MB
goharbor/harbor-jobservice v2.10.1 ab688ea50ad8 3 months ago 140MB
goharbor/harbor-core v2.10.1 de73267578a3 3 months ago 169MB
goharbor/harbor-portal v2.10.1 c75282ddf5df 3 months ago 162MB
goharbor/harbor-db v2.10.1 db2ff40c7b27 3 months ago 269MB
goharbor/prepare v2.10.1 92197f61701a 3 months ago 207MB
registry.cn-hangzhou.aliyuncs.com/*/webssh latest 3a240e514cbb 4 months ago 18.5MB
4)搜索镜像
docker search ubuntu
[root@bogon docker]# docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL
ubuntu Ubuntu is a Debian-based Linux operating sys… 17141 [OK]
ubuntu-debootstrap DEPRECATED; use "ubuntu" instead 52 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 299 [OK]
ubuntu-upstart DEPRECATED, as is Upstart (find other proces… 115 [OK]
open-liberty Open Liberty multi-architecture images based… 65 [OK]
neurodebian NeuroDebian provides neuroscience research s… 110 [OK]
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 114
ubuntu/squid Squid is a caching proxy for the Web. Long-t… 92
ubuntu/cortex Cortex provides storage for Prometheus. Long… 4
ubuntu/prometheus Prometheus is a systems and service monitori… 62
ubuntu/kafka Apache Kafka, a distributed event streaming … 49
ubuntu/apache2 Apache, a secure & extensible open-source HT… 74
ubuntu/zookeeper ZooKeeper maintains configuration informatio… 13
ubuntu/bind9 BIND 9 is a very flexible, full-featured DNS… 91
ubuntu/postgres PostgreSQL is an open source object-relation… 39
ubuntu/mysql MySQL open source fast, stable, multi-thread… 64
ubuntu/redis Redis, an open source key-value store. Long-… 22
ubuntu/jre Distroless Java runtime based on Ubuntu. Lon… 15
ubuntu/dotnet-aspnet Chiselled Ubuntu runtime image for ASP.NET a… 22
ubuntu/grafana Grafana, a feature rich metrics dashboard & … 11
ubuntu/dotnet-deps Chiselled Ubuntu for self-contained .NET & A… 16
ubuntu/memcached Memcached, in-memory keyvalue store for smal… 5
ubuntu/cassandra Cassandra, an open source NoSQL distributed … 2
ubuntu/dotnet-runtime Chiselled Ubuntu runtime image for .NET apps… 20
ubuntu/prometheus-alertmanager Alertmanager handles client alerts from Prom… 9
如果要查询镜像版本,可以访问https://hub.docker.com/,搜索对应的镜像名字,然后点tag进行查看
拉取指定版本镜像
docker pull registry.cn-hangzhou.aliyuncs.com/*/kube-controllers:release-v3.28
[root@bogon docker]# docker pull registry.cn-hangzhou.aliyuncs.com/*/kube-controllers:release-v3.28
release-v3.28: Pulling from */kube-controllers
438a0cd3139d: Pull complete
67eecec6089c: Pull complete
Digest: sha256:fc78c47ba78460e7388b32699e1fe341e80e21379223309c475d14433b0c3ad1
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/*/kube-controllers:release-v3.28
registry.cn-hangzhou.aliyuncs.com/*/kube-controllers:release-v3.28
5)给镜像打标签
docker tag busybox:latest aminglinux:1.2.3
[root@bogon docker]# docker tag registry.cn-hangzhou.aliyuncs.com/*/kube-controllers:release-v3.28 kube-controllers:v3.28
[root@bogon docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
kube-controllers v3.28 2c4a177902fa 3 days ago 79.2MB
registry.cn-hangzhou.aliyuncs.com/*/kube-controllers release-v3.28 2c4a177902fa 3 days ago 79.2MB
goharbor/harbor-exporter v2.10.1 3b6d345aa4e6 3 months ago 106MB
goharbor/redis-photon v2.10.1 9a994e1173fc 3 months ago 164MB
goharbor/trivy-adapter-photon v2.10.1 108e2a78abf7 3 months ago 502MB
goharbor/harbor-registryctl v2.10.1 da66353bc245 3 months ago 149MB
goharbor/registry-photon v2.10.1 4cb6a644ceeb 3 months ago 83.5MB
goharbor/nginx-photon v2.10.1 180accc8c6be 3 months ago 153MB
goharbor/harbor-log v2.10.1 2215e7f0f2e7 3 months ago 163MB
goharbor/harbor-jobservice v2.10.1 ab688ea50ad8 3 months ago 140MB
goharbor/harbor-core v2.10.1 de73267578a3 3 months ago 169MB
goharbor/harbor-portal v2.10.1 c75282ddf5df 3 months ago 162MB
goharbor/harbor-db v2.10.1 db2ff40c7b27 3 months ago 269MB
goharbor/prepare v2.10.1 92197f61701a 3 months ago 207MB
registry.cn-hangzhou.aliyuncs.com/*/webssh latest 3a240e514cbb 4 months ago 18.5MB
6)启动容器
docker run -itd busybox ##把镜像启动为容器,-i表示让容器的标准输入打开,-t表示分配一个伪终端,-d表示后台启动,要把-i -t -d 放到镜像名字前面
[root@bogon docker]# docker run -itd webssh
f6380abb8dbc8ab4de3df7bcae1bcd8e09f8cc622f24d4ddd2e7306b4fc4c2ea
[root@bogon docker]#
7)查看容器
docker ps -a ##如果不加-a,则不显示已经停止的容器
[root@bogon docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f6380abb8dbc webssh "/webssh" 26 seconds ago Up 25 seconds objective_shaw
7bcf22b256e1 goharbor/harbor-jobservice:v2.10.1 "/harbor/entrypoint.…" 3 days ago Exited (128) 12 hours ago harbor-jobservice
f629b5761b4f goharbor/nginx-photon:v2.10.1 "nginx -g 'daemon of…" 3 days ago Restarting (1) 53 seconds ago nginx
0092e9635bd0 goharbor/harbor-core:v2.10.1 "/harbor/entrypoint.…" 3 days ago Up 58 seconds (health: starting) harbor-core
7dcc390fc46e goharbor/registry-photon:v2.10.1 "/home/harbor/entryp…" 3 days ago Up 25 minutes (healthy) registry
4077262d33fe goharbor/harbor-db:v2.10.1 "/docker-entrypoint.…" 3 days ago Up 25 minutes (healthy) harbor-db
a54ccf652ad8 goharbor/harbor-registryctl:v2.10.1 "/home/harbor/start.…" 3 days ago Exited (128) 12 hours ago registryctl
e0434967d629 goharbor/redis-photon:v2.10.1 "redis-server /etc/r…" 3 days ago Exited (128) 12 hours ago redis
6d2047fedc30 goharbor/harbor-portal:v2.10.1 "nginx -g 'daemon of…" 3 days ago Exited (128) 12 hours ago harbor-portal
a996d81bc7b4 goharbor/harbor-log:v2.10.1 "/bin/sh -c /usr/loc…" 3 days ago Up 25 minutes (healthy) 127.0.0.1:1514->10514/tcp harbor-log
8)停止容器
docker stop de1fb9c8902e ##后面这一串字符串为容器ID,可以通过docker ps查看
[root@bogon docker]# docker stop f6380abb8dbc
f6380abb8dbc
[root@bogon docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f629b5761b4f goharbor/nginx-photon:v2.10.1 "nginx -g 'daemon of…" 3 days ago Restarting (1) 18 seconds ago nginx
0092e9635bd0 goharbor/harbor-core:v2.10.1 "/harbor/entrypoint.…" 3 days ago Up 8 seconds (health: starting) harbor-core
7dcc390fc46e goharbor/registry-photon:v2.10.1 "/home/harbor/entryp…" 3 days ago Up 26 minutes (healthy) registry
4077262d33fe goharbor/harbor-db:v2.10.1 "/docker-entrypoint.…" 3 days ago Up 26 minutes (healthy) harbor-db
a996d81bc7b4 goharbor/harbor-log:v2.10.1 "/bin/sh -c /usr/loc…" 3 days ago Up 26 minutes (healthy) 127.0.0.1:1514->10514/tcp harbor-log
[root@bogon docker]#
9)删除容器
docker rm de1fb9c8902e ##如果容器未停止,会报错,需要加-f选项
[root@bogon docker]# docker rm f6380abb8dbc
f6380abb8dbc
10)删除镜像
docker rmi aminglinux:1.2.3 ##这里因为aminglinux:1.2.3为busybox的一个tag,所以此操作只会删除此tag,并不会真正删镜像,如果该镜像没有tag,则直接删除镜像
[root@bogon docker]# docker rmi webssh
Untagged: webssh:latest
也可以直接指定镜像ID
docker rmi beae173ccac6
11)拉取镜像+启动容器
docker run -itd redis
[root@bogon docker]# docker run -itd registry.cn-hangzhou.aliyuncs.com/*/lucky:2.8.3
Unable to find image 'registry.cn-hangzhou.aliyuncs.com/*/lucky:2.8.3' locally
2.8.3: Pulling from daliyused/lucky
4abcf2066143: Already exists
4af2ea762246: Pull complete
0b2fbe05caf5: Pull complete
7fb841bd2dcb: Pull complete
Digest: sha256:39cf30e54b037e4f2d4806011c33357c73554feb5f30403829b736f4f37da1f9
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/*/lucky:2.8.3
43f0424d1c9d336cbeefd5dc6e5ff1f5102b24844599f94e3de1e2fb650ee574
12)启动容器时,给容器自定义名字
docker run --name web01 -itd ubuntu
[root@bogon docker]# docker run --name lucky000 -itd registry.cn-hangzhou.aliyuncs.com/*/lucky:2.8.3
bb922739a021ce6f77d254caa61b867a93780cef65e2c268d9c93f75b5ed288b
13)容器运行后直接退出并删除
docker run --rm -it ubuntu bash -c "sleep 30"
[root@bogon docker]# docker run --rm -it registry.cn-hangzhou.aliyuncs.com/*/lucky:2.8.3 bash -c "sleep 30"
2024/07/02 04:47:32 configure dir:/app
2024/07/02 04:47:32 init default base configure
2024/07/02 04:47:32 Set LoalTimeZone CST-8 [+8.00]
2024/07/02 04:47:32 可以将下面指令加入cron计划任务,每分钟定时检测lukcy进程防止奔溃影响使用。
2024/07/02 04:47:32 */1 * * * * test -z "$(pidof lucky)" && /app/lucky bash -c sleep 30 >/dev/null 2>&1
2024/07/02 04:47:32 RunMode:prod
2024/07/02 04:47:32 version:2.8.3 commit d5980afdff63c548fc12ace3a8ab9149dc75476d, built at 2024-04-06T00:56:58Z
2024/07/02 04:47:32 LuckyWeb Http Listen on http://:16601
2024/07/02 04:47:33 LuckyWeb Https Listen on https://:16601
2024/07/02 04:47:33 ssl module started
2024/07/02 04:47:33 ipfilter module started
2024/07/02 04:47:33 cron module started
2024/07/02 04:47:33 storagemanagement module started
2024/07/02 04:47:33 acme module started
2024/07/02 04:47:33 ddns module started
2024/07/02 04:47:33 wol module started
2024/07/02 04:47:33 webdav module started
2024/07/02 04:47:33 ftpserver module started
2024/07/02 04:47:33 filebrowser module started
2024/07/02 04:47:33 portforward module started
2024/07/02 04:47:33 reverseproxy module started
2024/07/02 04:47:33 stun module started
2024/07/02 04:47:33 LuckyWeb Start success
2024/07/02 04:47:33 AdminWeb(Http) listen on :16601
2024/07/02 04:47:33 Admin Panel URL: http://[your IP]:16601
2024/07/02 04:47:41 EnableFireWallPorts Done!
2024/07/02 04:47:52 exec first ntp sync time
14)进入容器操作
docker exec -it web01 bash
[root@bogon docker]# docker exec -it lucky000 sh
/goodluck #
进去后,相当于进入了一个虚拟机一样,安装个nginx
apt update
apt install -y nginx
15)将容器重新打包成新镜像
docker commit -m "install nginx" -a "aming" web01 nginx_ubuntu:1.0 ##这里的web01可以改为容器id -m 为信息,填写字符串,-a 指定作者
[root@bogon docker]# docker commit -m "fandai" -a "yeyunyi" lucky000 lucky:latest
sha256:81ef3c3e12600523db0ced2a8811797f5d0dd5d932005b38032d56b77fc2d400
再次查看镜像列表,发现多了一个nginx_ubuntu:1.0
[root@bogon docker]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
lucky latest 81ef3c3e1260 About a minute ago 16.7MB
16)将镜像保存为一个文件
docker save nginx -o nginx.img
[root@bogon docker]# docker save lucky -o lucky.img
[root@bogon docker]# ls
daemon.json lucky.img
[root@bogon docker]#
17)将导出的镜像文件导入
docker load --input nginx.img
[root@bogon docker]# docker save lucky -o lucky.img
[root@bogon docker]# ls
daemon.json lucky.img
[root@bogon docker]#
18)将容器导出为一个文件
docker export web01 > web01.tar
[root@bogon docker]# docker export lucky000 > lucky000.tar
[root@bogon docker]# ls
daemon.json lucky000.tar lucky.img
19)将导出的文件导入为新的镜像
docker import - ubuntu_test < web01.tar
[root@bogon docker]# docker import - lucky111 < lucky000.tar
sha256:acea06c3a8766e6a76c9872f9c38ceedff56b5434ea9e66703ffdeb58b1ef59a
20)docker save和docker export的差异
docker save保存的是镜像,docker export保存的是容器
docker save会保留镜像所有的历史记录,docker export不会,即没有commit历史
docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。