如何提交一个自己的镜像commit镜像docker commit 提交容器成为一个新的副本
#命令和git原理类似docker commit -m="提交的描述信息" -a ="作者" 容器id 目标镜像名:【TAC】实战测试#1.启动一个默认的tomcat
#2.发现这个默认的tomcat 是没有wenapps应用,镜像原因,官方的镜像默认webapps 下面是没有文件的!
#3.我自己拷贝进去了基本的文件
#4.将我们操作过的容器通过commit提交为镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的修改的。如果想保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就好比Vm虚拟机的快照。


docker的理念回顾将应用和环境打包成一个镜像!如果数据都在容器中,那么我们容器删除,数据就会丢失需求:数据可以持久化如果将MySQL部署在容器,容器删了等于删库跑路!需求:MySQL数据可以存储在本地
使用容器数据卷可以完成以上需求:
容器数据卷什么是容器数据卷?容器之间可以有一个数据共享技术!docker容器中产生的数据,同步到本地!这就是卷技术!目录的挂载,将我们容器内的目录,挂在到linux上面!总结:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷方式一:直接使用命令来挂载 -vdocker run -it -v 主机目录,容器内目录
#测试docker run -it -v /home/ceshiL:/home centos /bin/bash
#启动时我们可以通过docker inspect 容器id #查看容器信息和挂载目录数据卷可以实现双向绑定注意:如果容器停止,宿主机将同步目录里的文件进行修改,仍然可以同步数据。好处:挂载后,我们以后修改只需要在本地修改即可,容器内自动同步。

实战:安装MySQL思考:MySQL的数据持久化的问题!#获取镜像[root@localhost ~]# docker pull mysql:5.7
#运行容器:需要做数据挂载! #安装启动MySQL,需要配置密码,这是要注意的!#官方测试:docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag##启动我们的-d 后台运行-p 端口映射-v 卷挂载-e 环境配置--name 容器名[root@localhost ~]# docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
#启动容器之后我们在本地使用Navicat连接测试一下#Navicat-连接到服务器的3310 --- 3310 和容器内的3306映射,这个时候我们就可以连接了!##在本地测试创建一个数据库,查看一下我们映射的路径是否OK!假设我们将容器删除,发现,我们挂载到本地的数据卷依旧没有丢失,这就实现了容器持久化功能。具名和匿名挂载#匿名挂载-v 容器内路径!docker run -d -P --name nginx01 -v /etc/nginx nginx#查看所有的volume(卷)的情况[root@localhost ~]# docker volume lsDRIVERVOLUME NAMElocal8ba0aef11bef65f036cec4b3b47ca080a27d2964e0e5858f53852604b4fb3f5a#这里发现,这种就是匿名挂载,我们在 -v 只写了容器内的路径,没有写容器外的路径![root@localhost home]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx8f8a4faec44873d41ae545726db7c2ea681313ba8c4442d9c575d936e9b593fd[root@localhost home]# docker volume lsDRIVERVOLUME NAMElocaljuming-nginx
#通过 -v 卷名:容器内路径#查看一下这个卷所有的docker容器内的卷,没有指定目录的情况下都是 /var/lib/docker/volumes/xxxx/_data我们通过具名挂载可以方便的找到我们的一个卷,大多数情况下在使用 具名挂载#如何 确定是具名挂载还是匿名挂载,还是指定路径挂载!-v 容器内路径 #匿名挂载-v 卷名:容器内路径 #具名挂载-v /宿主机路径::容器内路径 #指定路径挂载! 拓展#通过 -v 容器内路径:ro rw 改变读写权限ro readonly #只读rw readwrite #可读可写
#一旦这个设置了容器权限,容器对我们挂载出来的内容就有限定了[root@localhost _data]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx[root@localhost _data]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
#ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!

微信公众号:黑马金牌编程

更多相关文章

  1. 安卓各文件存储路径汇总(Android(安卓)file path)
  2. android 中 CheckBox 复选框操作
  3. android过滤隐藏文件FileFilter
  4. Android之录音工具类
  5. Android(安卓)Bluetooth 文件接收路径修改方法
  6. Android(安卓)Studio 各个依赖包存放目录
  7. Android(安卓)NDK 配置与打包
  8. Android(安卓)中常见bug 总结
  9. Android(安卓)Studio 获取数字签名信息(SHA1)

随机推荐

  1. Android 学习成品
  2. android点击文本框之外的地方隐藏键盘
  3. Android设置振铃
  4. Android(安卓)图片的加载与保存
  5. 改变Android中默认Dialog的样式
  6. android 2.2 eclipse
  7. Android开发实践 网络通信 URL、URLConne
  8. android editText 软键盘enter键图标的设
  9. Android debug.keystore的密码
  10. Android:网络框架android-async-http 1.4