方式一

Ⅰ:拉取镜像

  1. docker pull mysql:8.0

Ⅱ:创建数据卷

  1. docker volume create learn-pig-mysql-data
[root@iZbp16q6j4wh5685xon9unZ ~]# docker volume create learn-pig-mysql-data
learn-pig-mysql-data
----------------------------------------------------------------------------

[root@iZbp16q6j4wh5685xon9unZ ~]# docker volume ls
DRIVER    VOLUME NAME
local     173d1666ae26aaadd9006e6d8f97e0e338b299d27404e0c51778af09938e14b3
local     learn-pig-mysql-data
----------------------------------------------------------------------------

[root@iZbp16q6j4wh5685xon9unZ ~]# docker inspect learn-pig-mysql-data 
[
    {
        "CreatedAt": "2021-11-25T09:14:21+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/learn-pig-mysql-data/_data",
        "Name": "learn-pig-mysql-data",
        "Options": {},
        "Scope": "local"
    }
]

Ⅲ:查看镜像中容器内Volumes

docker inspect mysql:8.0
[root@iZbp16q6j4wh5685xon9unZ ~]# docker inspect mysql:8.0 
[
    ......
   "Volumes": {  "/var/lib/mysql": {} },
    ......
]

Ⅳ:运行镜像,并挂载目录到宿主机上

docker run -d \
       --restart=always \
       -v learn-pig-mysql-data:/var/lib/mysql \
       -p 3306:3306 \
       --name pig-mysql \
       -e MYSQL_ROOT_PASSWORD="root" \
       mysql:8.0
  • --restart=always是设置容器开启启动
  • -v是设置容器的数据目录,挂载到宿主机的目录上。这样即使容器删除了,数据还是在宿主机上保存着。注

方式二

使用docker-compose.yml文件方式部署msyq

version: '3'

services:
  mysql:
    image: mysql:latest
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "root"
    volumes:
      - 'mysql-data:/data'

volumes:
  mysql-data:
    driver: local