局域网Docker安装PostgreSql
提前搭建好docker环境
准备postgres11-6.tar镜像
cd mkdir docker-data cd docker-data mkdir postgres
将postgres11-6.tar放入上面的路径下
sudo docker load -i postgres11.6.tar
生成Loaded image ID : sha256:xxxxxxx 表示成功加载
查看所有镜像
sudo docker images
如果存在下列情况
REPOSITORY TAG IMAGE ID CREATED SIZE
2c963c0eb8c6 xxxxx xxxx
则需要修改镜像名
sudo docker tag [镜像id] [新镜像名称]:[新镜像标签] sudo docker tag 2c963c0eb8c6 postgres:11.6
sudo docker run\ --name postgres\ -v /home/sunline/docker-data/postgres:/var/lib/postgresql/data\ -e POSTGRES_PASSWORD=123456\ -p 5432:5432\ -d postgres:11.6
创建容器命令:docker run
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-e:表示传递环境变量
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
启动后记得查看容器情况
sudo docker ps -a
如果是以下情况,则成功启动
CONTAINER ID IMAGE COMMAND CREATED
ca919d49e902 postgres:11.6 “docker-entrypoin…” 11 minuter ago
STATUS PORTS NAMES
Up 15 seconds 0.0…0.0:5432->5432/tcp postgres
STATUS中 Up表示成功
如果STATUS中 Exited(1)9minutes ago & PORTS 为 空
则表示启动失败。
此时可以采用这个命令启动
sudo docker postgres (容器名称 或者 容器ID)
还是启动不了则查看
-v /home/sunline/docker-data/postgres:/var/lib/postgresql/data\
中的/home/sunline/docker-data/postgres路径 该用户是否可以读写操作
如果不行,则删除该目录,重新建立目录
cd /home/sunline rm -rf docker-data mkdir docker-data cd docker-data mkdir postgres
启动成功,查看端口是否开启
netstat -ntlp
尝试使用工具远程连接该数据库。
docker stop 容器名称(或者容器ID) docker inspect 容器名称(容器ID) docker rm 容器名称(容器ID) docker save 镜像id > 绝对路径 便于自己好找 eg:docker save ef4 > /oa-data/docker_images_back/ibmjava.tar docker load < 绝对路径 便于自己好找 eg:docker load < /oa-data/docker_images_back/ibmjava.tar 将静态文件还原为镜像, 并导入docker 更换镜像的名称 docker tag 镜像id 镜像名字:镜像版本 docker rmi 镜像ID docker rmi `docker images -q`
原文链接:https://blog.csdn.net/qq_36743202/article/details/118110421