Ⅰ:拉取镜像
docker pull postgres:12
Ⅱ:创建数据卷
docker volume create tb-postgres-data
[root@iZbp16q6j4wh5685xon9unZ ~]# docker volume create tb-postgres-datatb-postgres-data----------------------------------------------------------------------------[root@iZbp16q6j4wh5685xon9unZ ~]# docker volume lsDRIVER VOLUME NAMElocal tb-postgres-data----------------------------------------------------------------------------[root@iZbp16q6j4wh5685xon9unZ ~]# docker inspect tb-postgres-data[{"CreatedAt": "2021-11-30T11:13:08Z","Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/tb-postgres-data/_data","Name": "tb-postgres-data","Options": {},"Scope": "local"}]
Ⅲ:查看镜像中容器内的Volumes
docker inspect mysql:8.0[root@iZbp16q6j4wh5685xon9unZ ~]# docker inspect mysql:8.0[......"Volumes": { "/var/lib/postgresql/data": {} },......]
Ⅳ:运行镜像,并挂载目录到宿主机上
docker run -d \--restart=always \--name tb-postgres \-e POSTGRES_DB=thingsboard \-e POSTGRES_PASSWORD=postgres \-p 5432:5432 \-v tb-postgres-data:/var/lib/postgresql/data \postgres:12
--restart=always是设置容器开启启动。-v是设置容器的数据目录,挂载到宿主机的目录上。这样即使容器删除了,数据还是在宿主机上保存着。tb-postgres-data是使用docker volume create tb-postgres-data命令创建的挂在目录。/var/lib/postgresql/data这里的路径不能随便写,使用docker inspect mysql:8.0命令获取到的Volumes的路径。
