docker-镜像/容器/挂载卷
以jenkins举例
# jenkins的镜像:jenkins/jenkins:lts
# 在主机的挂载卷文件夹:/opt/jenkins-data
镜像和容器的区别/关系:
1.镜像 约等于 只读“光盘”
2.容器 约等于 用这张光盘启动起来的“正在运行的系统进程”
* 容器就是相当于没挂载卷的时候存储
* 我给别人镜像,对方还需要运行这个镜像,运行后才会出现容器;如果需要实现数据持久化的话需要自己挂载卷
1.镜像--负责“起跑”
1.如何把镜像给别人使用
1.你只给镜像-->对方得到的是空白的jenkins
2.对方第一次启动后,需要自己装所有的插件数据等,并且这些数据会挂载写到它当时挂载的主机
3.需要自己做持久化(-v 主机目录:/var/jenkins_home),后面删容换机器数据不会丢失
2.对方怎么使用你的镜像
# 1.你压缩镜像传给对方
docker images
docker save -o jenkins.tar jenkins/jenkins:lts
jenkins/jenkins:lts是查到的镜像名,后面就是scp到对方
# 2.对方将它放置任意目录--将镜像导入本地docker
docker load -i jenkins.tar
dokcer images | grep jenkins # 查看
# 3.如果已经挂载卷了直接
docoker compose up -d
# 没挂载卷:添加compose
创建一个jenkins_app目录,写一个docker-compose.yml其中包含挂载卷的volumes
2.容器--“隔离版的进程”
容器一启动里面就在跑应用,就相当于进程一样,可以查看程序的状态
3.挂载卷--负责存储“持久化”
非常重要:
* 作用:数据的存储化,你所做的所有的配置和数据都在里面,如果删掉了就没有了
1.如果第一次没挂载卷-->数据写在容器可写层【抢救】
# 1. 把容器可写层拷出来
* 旧容器还在跑或已经stop但没rm:
# 在主机上建捡来要挂的目录
mkdir -p /opt/jenkins-data
# 把容器内的整个jenkins_home搬出来
docker cp <旧容器>:/var/jenkins_home /opt/jenkins-data
然后挂/opt/jenkins-data,重启数据就能回来
* <旧容器>:容器名或pid
# 2.旧容器已被 docker rm --> 可写层被docker删除,救不回来
更多推荐


所有评论(0)