栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

使用docker安装mysql

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用docker安装mysql

使用docker安装mysql

进入镜像仓库搜索mysql

https://hub.docker.com

Start a mysql server instance
docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD="root" -p 33006:3306  mysql:5.7

docker image ls
docker ps
docker inspect mysql01 | grep -i -A 10 mounts # 查看容器的volume卷的挂载情况
docker volume ls  # 查看所有容器的volume卷的挂载情况

# 进入容器
docker exec -it mysql01 /bin/bash  # 进入一个新开的容器终端tty
docker attach mysql01     # 进入应用正在运行的tty终端,一般不用

命名挂载和匿名挂载

所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/volume_name/_data

我们通过命名挂载可以方便的找到我们的一个卷,大多数情况使用“命名挂载”

# 如何确定是命名挂载还是匿名挂载,或者是指定路径挂载呢?
-v 容器内路径    # 匿名挂载  docker run -d -v /etc/my.cnf.d(这里的路径是容器内路径) mysql:5.7  
-v 卷名:容器内路径  # 命名挂载  docker run -d -v mysql_conf(这是指定卷的名字):/etc/my.cnf.d(这里的路径是容器内路径) mysql:5.7  
-v 宿主机路径:容器内路径   # 指定路径挂载  docker run -d -v /etc/my.cnf.d(这是指定宿主机的路径):/etc/my.cnf.d(这里的路径是容器内路径) mysql:5.7 
# 三种挂载,无论如何都是要指定容器内路径的(即使只写了-v volume_name ,docker也会将volume_name当成容器内的路径/volume_name)
# 只要不指定卷名,就都是匿名挂载(docker会自动生成一个很长的名字),指定路径挂载也是匿名挂载。

拓展:

# 通过 -v 容器内路径:ro rw 设置容器内部对挂载路径的读写权限
ro readonly       # 只读 在容器内对挂载路径只有读的权限  只能在宿主机改写
rw readwrite      # 读写 在容器内对挂载路径有读写权限  (不写)默认是读写权限

# 一旦设置了容器权限,容器对我们挂载出来的内容就有限制了!
docker run -d -P --name mysql01 -v volume_name:/etc/my.cnf.d:ro mysql:5.7
docker run -d -P --name mysql01 -v volume_name:/etc/my.cnf.d:rw mysql:5.7
# -P 后面不指定端口,就是将容器内所有的端口映射到宿主机的随机端口,如果-p和-P都不写,容器内的端口将不会在宿主机体现

初识Dockerfile

Dockerfile 就是用来构建docker镜像的构建文件!命令脚本!
通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个一个的命令,每个命令就是一层!

# 创建一个dockerfile文件,名字可以随机,建议 Dcokerfile
# 文件中的内容 指令(大写) 参数
vim dockerfile01
FROM centos
VOLUME ["volume01","volume02"]    # 创建自动挂载卷(这里有两个目录都挂载到了宿主机)
CMD echo "-------------end--------------"
CMD /bin/bash

docker build -f dockerfile01 -t wanglei/volume:1.0 ./

[root@localhost docker]# vim dockerfile01
[root@localhost docker]# docker build -f dockerfile01 -t wanglei/volume:1.0 ./
Sending build context to Docker daemon  4.824MB
Step 1/4 : FROM centos
 ---> 5d0da3dc9764
Step 2/4 : VOLUME ["volume01","volume02"]
 ---> Running in 8ea22ac968e9
Removing intermediate container 8ea22ac968e9
 ---> 40b18e479ba3
Step 3/4 : CMD echo "-------------end--------------"
 ---> Running in 0b91f86a71e4
Removing intermediate container 0b91f86a71e4
 ---> 1f4b2e1a7639
Step 4/4 : CMD /bin/bash
 ---> Running in 4dff03f756a2
Removing intermediate container 4dff03f756a2
 ---> 7c5d85ed94aa
Successfully built 7c5d85ed94aa
Successfully tagged wanglei/volume:1.0
[root@localhost docker]# docker image ls
REPOSITORY            TAG       IMAGE ID       CREATED                  SIZE
wanglei/volume        1.0       7c5d85ed94aa   15 seconds ago           231MB

启动自己写的容器

docker run -it wanglei/volume:1.0 /bin/bash

[root@localhost docker]# docker run -it wanglei/volume:1.0 /bin/bash
[root@401ac91e43ce /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  volume01	volume02
[root@401ac91e43ce /]# 

数据卷的继承(多个容器之间数据共享)

–volumes-from

docker run -it   --volumes-from cranky_agnesi wanglei/volume:1.0 [/bin/bash]

[root@61109017b74c /]# [root@localhost docker]# docker ps
ConTAINER ID   IMAGE                COMMAND       CREATED              STATUS              PORTS     NAMES
61109017b74c   wanglei/volume:1.0   "/bin/bash"   about a minute ago   Up about a minute             stoic_agnesi
401ac91e43ce   wanglei/volume:1.0   "/bin/bash"   37 minutes ago       Up 32 minutes                 cranky_agnesi

[root@localhost docker]# docker inspect stoic_agnesi cranky_agnesi  |grep -A 21 Mounts
        "Mounts": [
            {
                "Type": "volume",
                "Name": "2551b83726df7ab54b58454523fc15e0440af4920d6f6220c6ca0a389ac9e2d7",
                "Source": "/var/lib/docker/volumes/2551b83726df7ab54b58454523fc15e0440af4920d6f6220c6ca0a389ac9e2d7/_data",
                "Destination": "volume02",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "eb07285423fd818adef2954a53f623dd86c0cd91b6db48c07061ab21a0512a3b",
                "Source": "/var/lib/docker/volumes/eb07285423fd818adef2954a53f623dd86c0cd91b6db48c07061ab21a0512a3b/_data",
                "Destination": "volume01",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
--
        "Mounts": [
            {
                "Type": "volume",
                "Name": "eb07285423fd818adef2954a53f623dd86c0cd91b6db48c07061ab21a0512a3b",
                "Source": "/var/lib/docker/volumes/eb07285423fd818adef2954a53f623dd86c0cd91b6db48c07061ab21a0512a3b/_data",
                "Destination": "volume01",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "2551b83726df7ab54b58454523fc15e0440af4920d6f6220c6ca0a389ac9e2d7",
                "Source": "/var/lib/docker/volumes/2551b83726df7ab54b58454523fc15e0440af4920d6f6220c6ca0a389ac9e2d7/_data",
                "Destination": "volume02",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
[root@localhost docker]# 

结论:

容器之间配置信息的传递,数据卷容器的什么周期一直持续到没有容器使用为止。

但是一旦持久化到了本地,这个时候本地的数据是不会删除的!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321056.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号