Ⅰ:拉取镜像

    1. docker pull postgres:12

    Ⅱ:创建数据卷

    1. docker volume create tb-postgres-data
    1. [root@iZbp16q6j4wh5685xon9unZ ~]# docker volume create tb-postgres-data
    2. tb-postgres-data
    3. ----------------------------------------------------------------------------
    4. [root@iZbp16q6j4wh5685xon9unZ ~]# docker volume ls
    5. DRIVER VOLUME NAME
    6. local tb-postgres-data
    7. ----------------------------------------------------------------------------
    8. [root@iZbp16q6j4wh5685xon9unZ ~]# docker inspect tb-postgres-data
    9. [
    10. {
    11. "CreatedAt": "2021-11-30T11:13:08Z",
    12. "Driver": "local",
    13. "Labels": {},
    14. "Mountpoint": "/var/lib/docker/volumes/tb-postgres-data/_data",
    15. "Name": "tb-postgres-data",
    16. "Options": {},
    17. "Scope": "local"
    18. }
    19. ]

    Ⅲ:查看镜像中容器内Volumes

    1. docker inspect mysql:8.0
    2. [root@iZbp16q6j4wh5685xon9unZ ~]# docker inspect mysql:8.0
    3. [
    4. ......
    5. "Volumes": { "/var/lib/postgresql/data": {} },
    6. ......
    7. ]

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

    1. docker run -d \
    2. --restart=always \
    3. --name tb-postgres \
    4. -e POSTGRES_DB=thingsboard \
    5. -e POSTGRES_PASSWORD=postgres \
    6. -p 5432:5432 \
    7. -v tb-postgres-data:/var/lib/postgresql/data \
    8. postgres:12
    • --restart=always是设置容器开启启动。
    • -v是设置容器的数据目录,挂载到宿主机的目录上。这样即使容器删除了,数据还是在宿主机上保存着。
    • tb-postgres-data是使用docker volume create tb-postgres-data命令创建的挂在目录。
    • /var/lib/postgresql/data这里的路径不能随便写,使用docker inspect mysql:8.0命令获取到的Volumes的路径。