docker中镜像和容器的区别:1、镜像是包含了各种环境或者服务的一个模板,而容器是镜像的一个实例;2、镜像是不能运行的,是静态的,而容器是可以运行的,是动态的。
1、镜像操作
(0)查看版本
docker --version
(1)列出镜像
docker image ls -a
REPOSITORY:镜像所在的仓库名称
TAG:镜像标签
IMAGEID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
(2)从镜像去启动一个容器,也就是创建一个容器实例
docker run –name 容器实例名 –i –t 镜像所在的仓库名称:镜像标签 /bin/bash
(3)拉取镜像
docker image pull 仓库名/镜像名
docker image pull library/hello-world
由于 Docker 官方提供的 image 文件,都放在library组里面,所以它的是默认组,可以省略。因此,上面的命令可以写成下面这样。
docker image pull hello-world
(4)删除镜像
docker image rm 镜像名或镜像id
正在运行的容器的镜像是无法删除的
2、容器操作
(1)从镜像创建容器
docker run [操作] 镜像名 [如下的参数]
-i 表示以“交互模式”运行容器
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name 为创建的容器命名
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
-e 为容器设置环境变量
--network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同
(2)进入容器
docker exec -it 容器名或容器id 进入后执行的第一个命令
例如:docker exec -it mycentos2 /bin/bash
(3)查看容器
docker container ls # 正在运行的容器
docker container ls -all
(4)停止、启动、kill、删除容器
docker container stop 容器名或容器id
docker container start 容器名或容器id
docker container kill 容器名或容器id
docker container rm 容器名或容器id
容器打包方式:commit方式
(5)首先将容器保存为镜像
docker commit 容器名 镜像名
(6)然后保存镜像到文件
docker save -o 保存的文件名 镜像名
(7)最后对方拿到镜像文件后,可以通过load方法,将镜像加载到本地
docker load -i 保存的文件名
3、docker: export/save/commit 操作的区别
https://zhuanlan.zhihu.com/p/152219012
容器 --> commit --> 镜像(包含之前所有的更新层,并且最下面会多出一层)
容器 --> export --> tar文件 --> import --> 仅有最新的层文件的镜像
镜像 --> save --> tar文件 --> load --> 包含所有的更新层的镜像
(1)解释:commit + save 模式
commit+save模式:保留了一个镜像的所有历史文件和元数据,它把容器的内容作为一个新的层覆盖在原有镜像之上,然后实现持久化。原有的镜像没有改变。这样的好处是,当我发现这个commit+save的镜像包有问题的时候,可以快速回滚到之前的镜像版本。
(2)解释:export模式
首先要知道容器打包成镜像是由一层一层的层文件组成的,使用export将容器生成tar文件,然后再使用import将tar文件生成镜像,此时的镜像的层文件只有最新的那一层,也就是没有那些修改历史了,轻量级的。
这种情况适用于我不需要回滚,当前的状态即是最佳状态的时候。这样做的好处是,删除了没有用处的历史数据,同时保留了镜像具有的所有功能,关键是镜像文件还小的很
docker 操作
最新推荐文章于 2023-06-08 17:07:04 发布