Container data volume

Container Data Volume Technology

It is a technology that persists the data in the container to the Linux host.

# 1. 使用命令挂载 -v
docker run -it -v 主机目录:容器目录

# 将容器centos 的home目录挂载到linux的用户docker_study/centos_home目录下面
[root@izbp1imy docker_study]# docker run -it -v      /usr/echo_lovely/docker_study/centos_home:/home 0d120b6ccaa8 /bin/bash
[root@09670c4a0836 /]#

# 2. 查看挂载信息~
docker inspect 被挂载的容器id

# 3. 在容器的home目录创建文件, 文件同步
[root@09670c4a0836 home]# touch demo.java
[root@09670c4a0836 home]# ls
demo.java
[root@09670c4a0836 home]#

# 4. 查看宿主机上的文件

[root@izbp1imy centos_home]# ls
demo.java

# 5. 在宿主机上修改demo.java , 双向绑定
[root@izbp1imy centos_home]# vim demo.java
[root@izbp1imy centos_home]# ls
demo.java
[root@izbp1imy centos_home]# cat demo.java
/*
 *@author echo_lovey
 *
 *@date 2020/11/24 11:05
 *
 */

public class demo {
    
    

    public static void main(Stirng[] args) {
    
    

        System.out.println("hello world ~");
    }

}
# 上面在宿主机上修改并查看了文件

# 6. 进入容器,在容器中查看对应的文件
[root@izbp1imy centos_home]# ls
demo.java
[root@izbp1imy centos_home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
09670c4a0836        0d120b6ccaa8        "/bin/bash"         22 minutes ago      Up 8 minutes                            eloquent_thompson
[root@izbp1imy centos_home]# docker attach 09670c4a0836
[root@09670c4a0836 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@09670c4a0836 /]# cd /home
[root@09670c4a0836 home]# ls
demo.java
[root@09670c4a0836 home]# cat demo.java
/*
 *@author echo_lovey
 *
 *@date 2020/11/24 11:05
 *
 */

public class demo {
    
    

    public static void main(Stirng[] args) {
    
    

        System.out.println("hello world ~");
    }

}
[root@09670c4a0836 home]#

# 上面可以看到被挂载的容器目录,和挂载到linux上指定目录。
# 其中一个改变,另外一个会同步!

Mount mysql

The container is easy to be deleted and the data needs to be mounted locally

1. 获取mysql镜像
docker pull mysql:5.7

2. 进行数据挂载~ 配置密码~ (docker hub) 可以挂载数据和配置文件,同时挂载多个。

# 官方的使用, 设置密码
 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

# 设置端口, 挂载了容器中的mysql 到data, 配置文件到conf目录。 并设置了密码~
[root@izbp1imy docker_study]# docker run -d -p 3310:3306 -v /usr/echo_lovely/docker_study/mysql/data:/var/lib/mysql -v /usr/echo_lovely/docker_study/mysql/conf:/etc/mysql/conf.d --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
421381366f7f7b90e2b332e82321e5e3b69263b3651b3ad0de31f6eb95b916f9
[root@izbp1imy docker_study]# 


# 外部使用sqlyog,测试连接到容器中的数据库成功,创建数据库。 查看linux中的数据库

[root@izbp1imy docker_study]# cd mysql
[root@izbp1imy mysql]# ls
conf  data
[root@izbp1imy mysql]# cd data
[root@izbp1imy data]# ls
auto.cnf    ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile0  ibtmp1  performance_schema  public_key.pem   server-key.pem
bitqian_db  ca.pem      client-key.pem   ibdata1         ib_logfile1  mysql   private_key.pem     server-cert.pem  sys

Named and anonymous mount

# 匿名:-v 后面只指定被挂载的目录
匿名: docker run -d -P -v /etc/nginx/conf.d nginx

# 具名: 指定名称, 带有目录和不带目录
# -v nginx_volume:/etc/jjj 
# -v /home/dir:/etc/jjj # 好像不被放到挂载信息里面

# 1. 不指定目录的具名挂载centos
docker run -d --name centos01 -P -v centos01:/home centos

# 查看挂载的卷
docker volume ls

# 1.1. 查看centos1 被挂载的卷的信息
[root@izbp1imy home]# docker volume inspect centos01
[
    {
    
    
        "CreatedAt": "2020-11-24T14:57:32+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/centos01/_data",
        "Name": "centos01",
        "Options": null,
        "Scope": "local"
    }
]

# volume info ~
DRIVER              VOLUME NAME
local               centos01


# 被挂载的卷在/var/lib/docker/volumes/这个目录

# 2. 指定目录的挂载, 挂载信息未被记录~
docker run -d -p 81:80 -v /usr/echo_lovely/docker_study/nginx:/etc/nginx/ --name nginx01 nginx

# 3. 匿名挂载 有挂载信息~
docker run -d -P --name nginx02 -v /etc/nginx nginx

# volume info ~
DRIVER              VOLUME NAME
local               1d4cbe2f068c0f318b9057bbec374546a69c683f2637540ba05d4c2d12c69a42



# 给被挂载的文件夹同时赋予 读写权限
# 只读   read only
docker run -d -P --name nginx02 -v /etc/nginx:ro nginx
# 读写都可 read write
docker run -d -P --name nginx02 -v /etc/nginx:rw nginx

Persistence and synchronization of containers. Data can also be shared between containers.

Guess you like

Origin blog.csdn.net/qq_44783283/article/details/110098519