本文基于Postgres14.7进行说明
拉取镜像
docker pull postgres:14.7
查看已拉取到本地的镜像
docker image ls
启动容器
创建数据存储目录
宿主机创建数据存储目录(可以是其他位置,/Users/leo笔者Mac上的用户目录,等价于~目录,读者自行调整目录)
mkdir /Users/leo/docker/postgres/data
运行容器
docker run --name postgres -p 5432:5432 \
-e POSTGRES_DB=my_db \
-e POSTGRES_USER=root \
-e POSTGRES_PASSWORD=123456 \
-v /Users/leo/docker/postgres/data:/var/lib/postgresql/data \
-d postgres:14.7
参数说明:
- docker run:运行Docker镜像
- --name postgres:设置容器名称为postgres
- -p:映射端口号,宿主机端口映射到容器内部端口
- -e POSTGRES_DB=my_db:新建一个名为my_db的数据库作为默认数据库,如果不指定则会创建一个名称与POSTGRES_USER相同的数据库
- -e POSTGRES_USER=root:用户名是root(不设置默认用户名postgres)
- -e POSTGRES_PASSWORD:数据库用户密码
- -v /Users/leo/docker/zookeeper/data:/data:将容器的/var/lib/postgresql/data目录挂载到宿主机的/Users/leo/docker/postgres/data目录(数据持久化)
- -d postgres:14.7:选择运行的Docker镜像并指定Tag(不指定的话默认是latest)
测试
进入容器
docker exec -ti postgres bash
用容器启动时设置的数据库参数连接数据库
# psql -U username -h hostname -p port -d dbname
psql -U root -h localhost -p 5432 -d my_db