commit提交、数据卷挂载

我们这次是以tomcat为例,因为我们这里下载的tomcat下webapps下面没有文件,我们需要进行拷贝进里面去,然后在进行提交一个新的镜像。

-m提交的文件信息 -a提交作者的信息  新的镜像名:版本
 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
[root@Aw ~]# docker commit -m="tomcat webapps" -a="阿威" 4ca4fad0ce37 tomcat02:1.0


[root@Aw ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
4ca4fad0ce37   tomcat    "catalina.sh run"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   cool_jang
[root@Aw ~]# docker exec -it 4ca4fad0ce37 /bin/bash
root@4ca4fad0ce37:/usr/local/tomcat# ls
BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf  logs	    temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      lib   native-jni-lib  webapps  work
root@4ca4fad0ce37:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@4ca4fad0ce37:/usr/local/tomcat# cd weapps
bash: cd: weapps: No such file or directory
root@4ca4fad0ce37:/usr/local/tomcat# ls
BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf  logs	    temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      lib   native-jni-lib  webapps  work
root@4ca4fad0ce37:/usr/local/tomcat# exit
exit
[root@Aw ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
4ca4fad0ce37   tomcat    "catalina.sh run"   2 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   cool_jang
[root@Aw ~]# docker commit -m="tomcat webapps" -a="阿威" 4ca4fad0ce37 tomcat02:1.0
sha256:b910c20dd42a948a5209d8208221408f6b8bed35d9e9852533e8096e6acd3041
[root@Aw ~]# docker images
REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
tomcat02                 1.0       b910c20dd42a   7 seconds ago   672MB
nginx                    latest    62d49f9bab67   5 days ago      133MB
tomcat                   9.0       bd431ca8553c   8 days ago      667MB
tomcat                   latest    bd431ca8553c   8 days ago      667MB
portainer/portainer-ce   latest    96a1c6cc3d15   2 months ago    209MB
centos                   latest    300e315adb2f   4 months ago    209MB
elasticsearch   

数据卷挂在

数据卷的挂载就是 让我们容器内的数据绑定到本机目录上,这样我们在删除容器的时候数据就不会丢失,这个绑定也是双向绑定的,也就是说我们在本机创建的目录上修改 他会同步到容器内的路径,同样也是。

首先是我们先从官网上下载一个mysql  docker pull mysql:8.0
-v  主机目录:容器目录
-e 环境配置  我们这里必须要设置密码 默认的用户名是root

[root@Aw ~]# docker run -d -p 3306:3306 --name mysql8.0 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:8.0
60d5527147d99b811890cd125f6c9b8f1fe196ee4f6ecc552e89fdb19bd43dac
[root@Aw ~]# docker ps 
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS         PORTS                                                  NAMES
60d5527147d9   mysql:8.0   "docker-entrypoint.s…"   10 seconds ago   Up 9 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql8.0

docker inspect 容器id 查看他的详细信息
在这里插入图片描述
我们在这里可以看MySQL下面的数据被同步到这里了,

[root@Aw /]# cd /home/mysql/data/
[root@Aw data]# ls
auto.cnf       ca.pem             ib_buffer_pool  #innodb_temp        public_key.pem   undo_002
binlog.000001  client-cert.pem    ibdata1         mysql               server-cert.pem
binlog.000002  client-key.pem     ib_logfile0     mysql.ibd           server-key.pem
binlog.index   #ib_16384_0.dblwr  ib_logfile1     performance_schema  sys
ca-key.pem     #ib_16384_1.dblwr  ibtmp1          private_key.pem     undo_001
[root@Aw data]# ^C
[root@Aw data]# 

我们从外部访问数据给他他添加一个数据库,我们可以看到他的变化,
我们在外部创建了一个数据库
在这里插入图片描述
我们在外部再次进行查看就能看到这个数据库
在这里插入图片描述
具名挂载和匿名挂载

-v  主机路径:容器路径  这种是指定路径进行挂载
-v  名字:容器路径		这种是具名挂载
-v 	容器路径			这种是匿名挂载 

具名挂载

[root@Aw data]# docker run -d -P --name nginx01 -v juming:/etc/nginx nginx
47e60aa9e31377d7ee8bd29d74c129ca87a00658e4c97a0c657c5e01ec5710a0
[root@Aw data]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                     NAMES
47e60aa9e313   nginx     "/docker-entrypoint.…"   11 seconds ago   Up 10 seconds   0.0.0.0:49155->80/tcp, :::49155->80/tcp   nginx01

我们可以到docker的默认挂载目录查看 我们可以看到我们创建的名字

[root@Aw /]# cd /var/lib/docker/
[root@Aw docker]# ls
buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes
[root@Aw docker]# cd volumes/
[root@Aw volumes]# ls
69011c14405e1e492870ab335146af12c85e5cac3836f04755fcc2510f0eb06a  juming       portainer_data
backingFsBlockDev   

[root@Aw volumes]# cd juming/
[root@Aw juming]# ls
_data
[root@Aw juming]# cd _data/
[root@Aw _data]# ls
conf.d          koi-utf  mime.types  nginx.conf   uwsgi_params
fastcgi_params  koi-win  modules     scgi_params  win-utf
[root@Aw _data]# 

匿名挂载 不退键使用

[root@Aw /]# docker run -d --name nginx02 -P -v /etc/nginx nginx
9ae045f7687f13a3315f681e45df10305b41466c19b2fca3e18566a2b75c334a
[root@Aw /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                     NAMES
9ae045f7687f   nginx     "/docker-entrypoint.…"   5 seconds ago    Up 4 seconds    0.0.0.0:49156->80/tcp, :::49156->80/tcp   nginx02
47e60aa9e313   nginx     "/docker-entrypoint.…"   16 minutes ago   Up 16 minutes   0.0.0.0:49155->80/tcp, :::49155->80/tcp   nginx01
[root@Aw /]# ^C
[root@Aw /]# cd /var/lib/docker/volumes/
[root@Aw volumes]# ls
69011c14405e1e492870ab335146af12c85e5cac3836f04755fcc2510f0eb06a  backingFsBlockDev  metadata.db
89eb54e67055a533767f5cbe4548b9561b1a7772c8e4e135950a1cac02a2519f  juming             portainer_data
[root@Aw volumes]# cd 89eb54e67055a533767f5cbe4548b9561b1a7772c8e4e135950a1cac02a2519f/
[root@Aw 89eb54e67055a533767f5cbe4548b9561b1a7772c8e4e135950a1cac02a2519f]# ls
_data
[root@Aw 89eb54e67055a533767f5cbe4548b9561b1a7772c8e4e135950a1cac02a2519f]# cd _data/
[root@Aw _data]# ls
conf.d          koi-utf  mime.types  nginx.conf   uwsgi_params
fastcgi_params  koi-win  modules     scgi_params  win-utf


docker inspect 匿名容器id 我们可以这里查看到他们的路径
在这里插入图片描述

拓展

ro 说明这个容器只读 需要从容器外部进行修改
rw 说明这个容器可以可读可写 
这都是对容器添加权限
docker  run -d -P --name nginx01 juming:/etc/nginx:ro nginx
docker  run -d -P --name nginx01 juming:/etc/nginx:rw nginx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值