Docker安装postgresql笔记
环境描述
操作系统:macos mojave 10.14.6
postgresql镜像地址:https://hub.docker.com/_/postgres
docker下载地址:https://download.docker.com/mac/stable/Docker.dmg
安装docker
下载dmg安装包后,直接傻瓜式安装,安装完成后,可以登录你的docker ID账号。
# 查看安装版本信息
$ docker --version
Docker version 19.03.8, build afacb8b
$ docker-compose --version
docker-compose version 1.25.4, build 8d51620a
配置国内加速经镜像
macos可以按下图新增镜像地址:第一个是自己申请的阿里云镜像地址;
第二个是docker的国内镜像地址
拉取postgresql镜像
命令格式:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Options:
-a, --all-tags 下载仓库所有的镜像版本
--disable-content-trust 跳过图像验证,默认true
-q, --quiet 禁止详细信息输出
下面是拉取最新的postgresql
$ docker pull postgres:latest
latest: Pulling from library/postgres
54fec2fa59d0: Pull complete
30a95add0890: Pull complete
57bc798d3c84: Pull complete
a41bedb2c5de: Pull complete
589548c3abb4: Pull complete
c4c6b75d5deb: Pull complete
8f8c045a6a99: Pull complete
69f9dd86b24d: Pull complete
45bbaba740ff: Pull complete
1761ca7befa0: Pull complete
57feb34018f4: Pull complete
bede8373accc: Pull complete
6e4c69fbe63b: Pull complete
8a7949704ab2: Pull complete
Digest: sha256:d96835c9032988c8a899cb8a3c54467dae81daaa99485de70e8c9bddd5432d92
Status: Downloaded newer image for postgres:latest
docker.io/library/postgres:latest
可以执行docker images查看本地镜像仓库
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres latest 0f10374e5170 13 hours ago 314MB
安装postgresql镜像
创建数据卷
参考docker数据存储文档
docker提供的三种类型数据管理:
- Volumes:卷存储在主机文件系统的一部分中,该文件系统由Docker管理(/var/lib/docker/volumes/在Linux上)。非Docker进程不应修改文件系统的这一部分。卷是在Docker中持久保存数据的最佳方法。
- Bind mounts:可以存储在主机系统上的任何位置。它们甚至可能是重要的系统文件或目录。Docker主机或Docker容器上的非Docker进程可以随时对其进行修改。
- tmpfs mounts:仅存储在主机系统的内存中,并且永远不会写入主机系统的文件系统中。
创建数据卷命令格式:
Usage: docker volume create [OPTIONS] [VOLUME]
Create a volume
Options:
--driver , -d local 指定卷驱动程序名称,string类型,默认local
--label 为卷设置元数据,list类型
--name 设置卷名称
--opt , -o 设置特定于驱动程序的选项,map类型
运行如下代码
$ docker volume create pgdata
pgdata
$ docker volume inspect pgdata
[
{
"CreatedAt": "2020-04-24T07:32:40Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/pgdata/_data",
"Name": "pgdata",
"Options": {},
"Scope": "local"
}
]
启动容器
$ docker run -p 5432:5432 -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres --name postgresql-1 -d
postgres
9ab1da1b9b84bf8a0344894c778f018f307f66ef08f0c93be33ed36d67778f84
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ab1da1b9b84 postgres "docker-entrypoint.s…" 38 seconds ago Up 37 seconds 0.0.0.0:5432->5432/tcp postgresql-1
进入容器终端
$ docker exec -it postgresql-1 bash
root@9ab1da1b9b84:/#
或
docker attach 容器id
退出容器
root@9ab1da1b9b84:/# exit
网上很多说exit退出后,会关闭容器,但是这个版本的我试了,不会