美文网首页
Docker进阶命令

Docker进阶命令

作者: 攻城老狮 | 来源:发表于2020-07-10 13:45 被阅读0次

参考:https://www.bilibili.com/video/BV1og4y1q7M4?p=1


一. Portainer可视化面板

docker图形化界面管理工具,提供后台面板来操作docker

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

portainer后台登录界面

1-1594298714633.png

二. 生成镜像

1. docker commit 将运行容器生产为镜像

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名称[:tag]

# 测试 默认tomcat:9.0在webapps中没有应用,通过commit生成一个在webapps中有应用的镜像
# 1.拉取镜像
docker pull tomcat:9.0
# 2.创建容器
docker run -d -p 8080:8080 --name "mytomcat01" tomcat:9.0
# 3.进入该容器,发现在webapps中默认没有应用,将webapps.dist中的应用拷贝到webapps目录下
docker exec -it mytomcat01 /bin/bash
cp -r webapps.dist/* webapps/
exit
# 4.将该容器生成镜像
docker commit -m "mytomcat" -a "yqj" mytomcat01 yqj/tomcat:1.0
# 5.查看镜像,发现已经生成该镜像,该镜像的webapps中存在初始应用
docker images
REPOSITORY  TAG       IMAGE ID            CREATED             SIZE
yqj/tomcat  1.0       6e40c09e0572        48 seconds ago      647MB

2. 使用dockerfile构建镜像

具体步骤见后

三. 容器数据卷

容器的持久化和同步操作,也可以实现容器间的数据共享

1. 映射目录挂载

docker run -it -v 主机路径:容器内路径 镜像id

# 测试,创建centos容器,并与主机目录挂载
# 将主机的/root/external-volume目录与容器中的/home/internal-volume目录映射,在主机或者在容器内对该目录创建数据,均会共享。即使容器关闭也可以共享
docker run -it -v /root/external-volume:/home/internal-volume --name mycentos01 centos
# 查看挂载信息
docker inspect mycentos01

"Mounts": [
            {
                "Type": "bind",
                "Source": "/root/external-volume",
                "Destination": "/home/internal-volume",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

2. 匿名挂载

# 匿名挂载会自动生成挂载目录
docker run -it -v 容器内路径 镜像id

# 测试
# 匿名挂载
docker run -it -P -v /home/internal-volume --name mycentos01 centos
# 在容器内部挂载目录下创建文件
cd /home/internal-volume
echo "internal-volume data" >> test.txt
ctrl + P + Q
# 查看挂载目录
docker inspect mycentos01 
"Mounts": [
            {
                "Type": "volume",
                "Name": "94528bca90232192c216a771b100f6b6d378b0642c2734081fdf9ad59e7a9747",
                "Source": "/var/lib/docker/volumes/94528bca90232192c216a771b100f6b6d378b0642c2734081fdf9ad59e7a9747/_data",
                "Destination": "/home/internal-volume",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
# 查看全部的数据卷挂载情况
docker volume ls
# 进入主机的挂载目录查看信息
cd /var/lib/docker/volumes/94528bca90232192c216a771b100f6b6d378b0642c2734081fdf9ad59e7a9747/_data
cat test.txt
internal-volume data

3. 具名挂载

# 具名挂载会自动生成具名的挂载目录
docker run -it -v 卷名:容器内路径

# 测试
# 具名挂载
docker run -it -v testvolume:/home/internal-volume --name mycentos01 centos
ctrl + P + Q
# 查看挂载目录
docker inspect mycentos01
"Mounts": [
            {
                "Type": "volume",
                "Name": "testvolume",
                "Source": "/var/lib/docker/volumes/testvolume/_data",
                "Destination": "/home/internal-volume",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],
# 查看全部的数据卷挂载情况
docker volume ls

4. 三种挂载方式总结

  • -v 容器内路径 ===> 匿名挂载
  • -v 卷名:容器内路径 ===> 具名挂载
  • -v /主机路径:容器内路径 ===> 指定路径挂载
# 通过 -v 容器内路径:ro rw 改变读写权限
ro readonly # 容器内不可修改,智能在主机修改
rw readwrite # 默认

5. Dockerfile的方式挂载

具体步骤见后

6. 容器间数据共享

docker run -it --volumes-from 数据共享的另一个容器id 容器id

# 测试,两个容器间数据共享
# 创建一个centos容器,并在容器数据卷内添加文件
docker run -it -v /root/external-volume:/home/internal-volume --name mycentos01 centos
cd /home/internal-volumels
echo "mycentos01 add some data" >> test.txt
ctrl + P + Q
# 创建第二个centos容器,与第一个容器数据共享
docker run -it --volumes-from mycentos01 --name mycentos02 centos
# 查看容器内是否共享数据
cd /home/internal-volume
cat test.txt
mycentos01 add some data

相关文章

  • Docker进阶命令

    参考:https://www.bilibili.com/video/BV1og4y1q7M4?p=1 一. Por...

  • 2020学习规划

    docker 已入门,会使用管理命令,网络待加强,命令含义待加强 进阶: compose swarm 了解,待加强...

  • 记录一次Docker的学习

    Docker学习 Docker概述 Docker安装 Docker命令镜像命令容器命令操作命令... Docker...

  • K8s环境的搭建

    准备工作 我是先对docker初步到进阶的了解学习,常用的命令,基本的容器构建和docker原理概念学习完之后,步...

  • Docker

    Docker学习目标 Docker概述 Docker安装 Docker命令镜像命令容器命令操作命令... Dock...

  • Docker命令

    Docker命令总结: 帮助命令: docker version docker info docker --hel...

  • Docker常用命令

    Docker常用命令 Docker帮助命令 docker version:查看docker版本 docker in...

  • Docker 之 HAProxy + Django + Redi

    Docker 简介 Docker子命令分类 Docker 命令结构 Docker Architecture Ins...

  • dokcer命令帮助手册

    基础命令 docker version docker help docker info 镜像命令 docker i...

  • Docker 常用命令

    Docker 常用命令 镜像命令 docker images docker search docker pull ...

网友评论

      本文标题:Docker进阶命令

      本文链接:https://www.haomeiwen.com/subject/oyfmcktx.html