docker学习笔记4 -安装mysql

1、安装mysql

  a、docker pull mysql:5.7 #下载镜像 

  b、 #启动mysql

[root@51668 data]# docker run -d -p 3316:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql5.7.1 mysql:5.7
77ada7f11321387dfed8779cc2593b0015c81e90e77a03d5451fc42412dcb260

  -d #后台运行

  -p 主机端口:容器端口 #端口映射

  -v  linux目录:容器内部目录 #挂载目录,实现数据和容器分离,保证容器删除后数据不会丢失

  -e #设置环境

  --name #名称  

2、具名挂载和匿名挂载

  a、# 具名挂载

[root@51668 data]# docker run -p 3344:80 -d -v juming:/etc/nginx --name nginx01 nginx
6bda2224880ade7f89e3a5e67c2e2716059b58960f73227b0aedb5ec633c7247

  b、匿名挂载

   docker run -p 3344:80 -d -v /etc/nginx --name nginx01 nginx 

  c、查看挂载到本地的目录

[root@51668 data]# docker volume ls
DRIVER VOLUME NAME
local juming

d、查看挂载目录的绝对路径(/var/lib/docker/volumes路径是具名挂载和匿名挂载的默认路径)

[root@51668 data]# docker volume inspect juming
[
{
"CreatedAt": "2021-06-13T16:36:02+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming/_data",
"Name": "juming",
"Options": null,
"Scope": "local"
}
]

e、如何确定具名挂载、匿名挂载,还是路径挂载

-v 容器内路径               #匿名挂载

-v 卷名:容器内路径    #具名挂载

-v /宿主机路径:容器内路径  #路径挂载

f、通过-v 容器内路径:ro  rw 改变读写权限

ro  readonly  #只读

rw readwrite  #读写

docker -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro   nginx #只读  -P随机映射端口 

docker -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw  nginx  #读写 

#一旦设置了ro只读权限,就说明这个路径只能通过宿主机来操作,容器内部无法操作

 

3、使用Dockerfile匿名挂载

     a、编写Dockerfile文件  

FROM centos
VOLUME ["/home/volume01"]
CMD echo "------ end ------"
CMD bin/bash

       b、生成镜像

  docker build -f dockerfile1  -t  xifeng/centos :1.0

  c、运行镜像并进入容器内

  docker  run  -it  --name centos01  xifeng/centos :1.0  /bin/bash

  d、docker inspect centos01 #查看挂载路径

       

  

4、使用数据卷容器实现容器之间的数据共享

  a、docker  run  -it  --name centos01  xifeng/centos :1.0  /bin/bash  #启动容器centos01 作为数据卷容器

  b、docker run -it --volumes-from centos01 --name centos02 xifeng/centos:1.1 /bin/bash #启动容器centos02  挂载到centos01  

结论:容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有没有容器使用为止,但是一旦持久化到本地,这时,本地的数据是不会删除的。

多个mysql之间实现数据共享

a、docker run -d -p 3316: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

b、docker run -d -p 3306:3306 --name mysql02 --volumes-from mysql01 mysql:5.7

posted @ 2021-06-12 23:21  西风51668  阅读(49)  评论(0编辑  收藏  举报