linux cpu占用率如何看
272
2022-10-21
Docker提交镜像-数据卷-可视化
在熟悉完Docker的安装及基本命令使用之后,我们开始学习下Docker的进阶操作:包括但不限于新建Docker镜像,数据卷的挂载,以及Docker的可视化等。
Docker提交镜像
启动镜像
我们先安装一个tomcat
docker run -d -p 8080:8080 tomcat
然后访问:~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7f7e60ca6bf5 tomcat "catalina.sh run" 6 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp wonderful_satoshi
修改容器
tomcat为了简化启动流程,省略了加载页面的操作,所以访问404,我们可以进入容器,修改一下相关配置
[root@hadoop101 ~]# docker exec -it 7f7e60ca6bf5 /bin/bash root@7f7e60ca6bf5:/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@7f7e60ca6bf5:/usr/local/tomcat# cp -r webapps.dist/* webapps root@7f7e60ca6bf5:/usr/local/tomcat#
tomcat的静态页面备份在了webapps.dist目录下,我们将其复制到webapps下即可。
再次访问: ,我们熟悉的页面正常显示了。
提交镜像
然后把我修改后的容器重新提交成一个新的镜像。
docker commit -m "cp webapps files" -a "zhangbao" 7f7e60ca6bf5 tomcat001:1.0
[root@hadoop101 ~]# docker commit -m "cp webapps files" -a "zhangbao" 7f7e60ca6bf5 tomcat001:1.0 sha256:1bcaa367798ccbea30337645a4839db5878a40eaed92e5c5d66c3df13edae738 [root@hadoop101 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat001 1.0 1bcaa367798c 7 seconds ago 684MB tomcat latest fb5657adc892 2 months ago 680MB
发现比之前大了一点点。
启动新镜像
我们再启动新提交后的镜像
docker run -d -p 8081:8080 tomcat001:1.0
访问run -it -p 8080:8080 -v /opt/test:/opt tomcat001:1.0 /bin/bash
此命令表示运行一个tomcat001镜像,宿主机端口和容器端口都是8080,-v /opt/test:/opt 表示把容器内目录 /opt 目录挂载到宿主机 /opt/test 目录下,这样两边就实现了双向绑定。
验证
注:上个命令不可 ctrl+c 或者 exit退出,否则容器也直接退出了,用 ctrl+p+q 后台启动
我们直接在宿主机的/opt/test目录下新建文件test.txt,然后查看容器内的/opt目录下的变化
# 宿主机 [root@hadoop101 opt]# cd /opt/test [root@hadoop101 test]# touch test.txt [root@hadoop101 test]# ll total 0 -rw-r--r-- 1 root root 0 Mar 19 22:33 test.txt #容器内 [root@hadoop101 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 04331e8ef590 tomcat001:1.0 "/bin/bash" 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp crazy_mclaren [root@hadoop101 ~]# docker attach 04331e8ef590 root@04331e8ef590:/usr/local/tomcat# cd /opt/ root@04331e8ef590:/opt# ls test.txt
同样的,我们在容器内修改文件内容,在宿主机也可以实时查看文件内容,并且在停止容器后,我们在宿主机上修改文件,然后再启动容器,容器内的文件同样被修改了。
安装msyql
docker run -d -p 3301:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql001 mysql:5.7
-p 宿主机端口:容器端口 -v 宿主机目录:容器目录,可多个-v -e 变量配置 --name 容器名字
这里我们将mysql容器的配置文件和数据目录挂载到宿主机的/home/mysql目录下
[root@hadoop101 ~]# cd /home/mysql/ [root@hadoop101 mysql]# ll total 0 drwxr-xr-x 2 root root 6 Mar 19 23:13 conf drwxr-xr-x 5 polkitd root 328 Mar 19 23:13 data [root@hadoop101 mysql]# cd data [root@hadoop101 data]# ls auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem [root@hadoop101 data]#
然后我们通过Navicat连接,并新建数据库test,再次查看数据目录
[root@hadoop101 data]# ls auto.cnf client-cert.pem ibdata1 ibtmp1 private_key.pem server-key.pem ca-key.pem client-key.pem ib_logfile0 mysql public_key.pem sys ca.pem ib_buffer_pool ib_logfile1 performance_schema server-cert.pem test [root@hadoop101 data]#
数据卷挂载
在熟悉了容器数据卷的功能后,我们再来看下数据卷的挂载,数据卷挂载有多种方式,上面我们使用是其中一种方式:指定路径挂载。其实还有其他挂载方式,不同场景可使用不同方式的挂载,可根据自身需要选择。
匿名挂载
-v 后面直接跟容器内的路径
docker run -d -v /etc/nginx --name nginx001 nginx
[root@hadoop101 ~]# docker inspect nginx001 ## 这里只列出挂载信息,将容器内的路径/etc/nginx挂载到宿主机/var/lib/docker/volumes下 "Mounts": [ { "Type": "volume", "Name": "cc9ff269b7ad67fab8866e7a446009207d2a3af24395003a8cb75f3981022eec", "Source": "/var/lib/docker/volumes/cc9ff269b7ad67fab8866e7a446009207d2a3af24395003a8cb75f3981022eec/_data", "Destination": "/etc/nginx", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ],
具名挂载
-v 数据卷名称:容器内路径
docker run -d -v zhangbao_nginx:/etc/nginx --name nginx002 nginx
[root@hadoop101 ~]# docker volume ls DRIVER VOLUME NAME local 511511317ef0256d2d1570104e11a6ce897ba387267fbeec0192326dd6156067 local cc9ff269b7ad67fab8866e7a446009207d2a3af24395003a8cb75f3981022eec local e5303012839aa87faef7719a0407f690a9da8af1fcf6dfc2ef51cf20a5aa441f local zhangbao_nginx [root@hadoop101 ~]# docker volume inspect zhangbao_nginx [ { "CreatedAt": "2022-03-21T23:09:43+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/zhangbao_nginx/_data", "Name": "zhangbao_nginx", "Options": null, "Scope": "local" } ]
上面就是匿名挂载和具名挂载了,我们经常用的还有一种就是指定路径
指定路径挂载
-v 宿主机路径:容器路径
docker run -d -v /etc/nginx:/etc/nginx --name nginx003 nginx
[root@hadoop101 ~]# docker inspect nginx003 "Mounts": [ { "Type": "bind", "Source": "/etc/nginx", "Destination": "/etc/nginx", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
Docker可视化
portainer
一个提供web页面的Docker管理工具,命令如下:
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
访问:/ 88888888
然后选择本地的docker环境
可以看到本地环境有7个镜像,13个容器,10个数据卷。
查看有哪7个镜像,可以看到有我们之前测试使用的镜像,包括我们自己提交的一个修改后的新镜像tomcat001:1.0。
数据卷列表,包括我们创建的匿名数据卷,以及具名数据卷。
lazydocker
一个基于终端的Docker可视化查询工具。
github:run --rm -it -v \ /var/run/docker.sock:/var/run/docker.sock \ -v /.config/lazydocker:/.config/jesseduffield/lazydocker \ lazyteam/lazydocker
鼠标和方向键都可控制查看信息框,在整个屏幕底部也有提示
鼠标和方向键演示
每次查看都需要很长的命令,我们可以简化下
echo "alias lzd='docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -v /.config/lazydocker:/.config/jesseduffield/lazydocker lazyteam/lazydocker'" >> ~/.zshrc
更多请在某公号平台搜索:选手一号位,本文编号:2002,回复即可获取。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~