ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

docker学习笔记3

2022-02-06 09:33:02  阅读:124  来源: 互联网

标签:volume 容器 -- 笔记 学习 nginx 挂载 docker


一、联合文件系统(Union File System)

  • 联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。

二、commit镜像

2.1 启动tomcat

docker run -p 3344:8080 -it tomcat

2.2 进入到tomcat容器内

-t, --tty Allocate a pseudo-TTY

 docker exec -it 8b71f4516308 /bin/bash
  • 发现webapps文件夹是空的,也就是官方的tomcat镜像是空的

2.3 提交修改后的tomcat容器到本机

docker commit -a="zhouhao" -m="add webapps app" 8b71f4516308 tomcat-zhouhao:1.0
  • Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  • -a, --author string Author (e.g., “John Hannibal Smith hannibal@a-team.com”)
  • -m, --message string Commit message
  • 查看提交到本地的tomcat
[root@zhouhao ~]# docker images
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
tomcat-zhouhao   1.0       4a6332ef2158   31 seconds ago   684MB
tomcat           latest    4ebba13e9156   26 hours ago     680MB
nginx            latest    c316d5a335a5   9 days ago       142MB
centos           latest    5d0da3dc9764   4 months ago     231MB

三、容器数据卷

3.1 什么是容器数据卷

docker的理念

  • 将应用和环境打包成一个镜像
  • 如果把数据放在容器中,删除容器,数据就会丢失。希望数据持久化。
  • 容器之间可以有一个数据共享技术。docker容器中产生的数据,同步到本地,这就是卷技术。实质上就是目录挂载,将容器中的目录挂载到本地
    在这里插入图片描述
  • 为了达到容器的持久化和同步操作,容器之间也是可以数据共享的

3.2 使用数据卷

方式一:使用命令挂载

  • -v, --volume list Bind mount a volume
  • Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
#数据卷命令
docker run -it -v 主机目录:容器内目录
  • 进入容器,并挂载容器中的目录
docker run -it -v /home/ceshi:/home centos /bin/bash
  • docker inspect 容器ID :查看容器的详细信息,其中就有挂载信息,找Mounts字段
docker inspect c575e50de3c9
  "Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi",
                "Destination": "/home",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

四、安装MySQL

4.1 获取MySQL镜像

docker pull mysql:5.7

4.2 运行MySQL镜像

  • -d, --detach Run container in background and print container ID
  • -e, --env list Set environment variables
[root@zhouhao home]# 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

五、具名挂载与匿名挂载

5.1 启动Nginx镜像,匿名挂载

  • -p, --publish list Publish a container’s port(s) to the host,随机分配端口号
  • -v, --volume list Bind mount a volume
#-v 容器内路径
docker run -d -P -v /etc/nginx --name nginx01 nginx
  • 查看所有volume的情况
[root@zhouhao data]# docker volume ls
DRIVER    VOLUME NAME
local     44555d070e3a87388d7619150271810ad816f99d870f155d0ee5ec1fae74d3ec
local     b08bca742834322fd7a9ced89c1a77734a3779b40f48aec6d2a341297e89863d

5.2 启动Nginx镜像,具名挂载

  • 启动nginx镜像,具名挂载方式
#-v 本机路径:容器路径
docker run -d -P -v juming:/etc/nginx --name nginx02 nginx
  • 查看volume挂载情况
[root@zhouhao data]# docker volume ls
DRIVER    VOLUME NAME
local     44555d070e3a87388d7619150271810ad816f99d870f155d0ee5ec1fae74d3ec
local     b08bca742834322fd7a9ced89c1a77734a3779b40f48aec6d2a341297e89863d
local     juming
  • 查看volume的具体挂载路径
  • Usage: docker volume inspect [OPTIONS] VOLUME [VOLUME…]
[root@zhouhao data]# docker volume inspect juming
[
    {
        "CreatedAt": "2022-02-05T22:45:22+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/juming/_data",
        "Name": "juming",
        "Options": null,
        "Scope": "local"
    }
]
  • docker中,在本机未指定容器的绝对挂载路径,挂载路径默认为/var/lib/docker/volumes
  • 通过具名挂载可以方便的找到容器中文件的挂载路径

5.3 如何判断是具名挂载,或者匿名挂载

  • -v 容器内路径 :是匿名挂载
  • -v 卷名:容器内路径 是具名挂载
  • -v /宿主机路径:容器内路径 是指定路径挂载

5.4 拓展

  • ro :read only
  • rw: read write
docker run -d -P -v juming:/etc/nginx:ro --name nginx02 nginx
docker run -d -P -v juming:/etc/nginx:rw --name nginx02 nginx
  • ro,只能通过宿主机修改文件,容器内容是无法修改文件
  • rw,默认是该模式

标签:volume,容器,--,笔记,学习,nginx,挂载,docker
来源: https://blog.csdn.net/lemmon_tree/article/details/122788354

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有