本文章详细的介绍了如何在一台虚拟机上面安装docker和docker compose环境,并且使用docker-compose.yml来部署postgres数据库。

环境准备:

我是准备了一个空的虚拟机,系统为centOS 7.9.2009

首先确定你的机器是否能够连接外网

网络准备:

1. 如果有外网,执行下面操作

安装并启动docker

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl start docker

sudo systemctl enable docker

2. 如果没有外网, 请先离线安装docker环境

下载对应版本的docker-20.10.17.tgz 文件,上传到虚拟机某个盘符下,比如/data下面

tar -zxvf docker-20.10.9.tgz

[root@centos247 docker]# tar -zxvf docker-20.10.9.tgz 
docker/
docker/containerd-shim-runc-v2
docker/dockerd
docker/docker-proxy
docker/ctr
docker/docker
docker/runc
docker/containerd-shim
docker/docker-init
docker/containerd


解压的docker文件夹全部移至/usr/bin目录

    cp -p docker/* /usr/bin

① 在/usr/lib/systemd/system/目录下,创建docker.service文件
② 编辑docker.service文件


[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/dockerd \
                -H tcp://0.0.0.0:4243 \
                -H unix:///var/run/docker.sock \
                --selinux-enabled=false \
                --log-opt max-size=1g
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

sudo rm  /etc/systemd/system/docker.service.d/override.conf
systemctl reset-failed docker.service
systemctl start docker.service
systemctl daemon-reload
systemctl start docker.service
docker iamges

3. 接下来安装docker-compose环境

  1. 下载docker-compose-linux-x86_64文件
  2. 离线安装docker-compose
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v
#查看版本 
docker-compose version

到此,docker环境是安装好了,接下来

 查看防火墙配置


查看防火墙状态
systemctl status firewalld


关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

 接下来是编写docker-compose.yml之前的准备工作

如果你有外网,可以直接在docker-compose.yml里面写公网镜像地址

如果你没有外网,可以下面镜像压缩包,上传到虚拟机上面,然后使用如下指令加载镜像

docker load < /data/docker/镜像包.tar

使用docker images 指令查看镜像名称

现在镜像有了,开始准备编写yml

创建目录

看你自己想将数据库挂载在哪个地方

mkdir -p /data/pg
cd /data/pg
vi docker-compose.yml
chmod 777 -R /data/

编辑yml

在使用vi命令的时候,可以编辑yml了

version: '2'
services:
  pg:
    image: 'postgres:14'
    container_name: pg
    restart: always
    ports:
    - "5432:5432"
    environment:
    - 'TZ=Asia/Shanghai'
    - 'POSTGRES_PASSWORD=12345678'
    - 'POSTGRES_USER=postgres'
    volumes:
    - '/data/pg:/var/lib/postgresql/data'

我的yml放在/data/pg目录下,进入到这个目录

启动docker容器

docker-compose up -d

新版本的docker可能会自带docker compose指令,这个时候你可以使用docker compose up -d 来启动

至此,postgres数据库已经启动完毕了,你可以在这里创建数据库,创建表结构和导入数据库了。

有什么地方讲的不够详细的,可以留言评论问我,看到了第一时间回复。

GitHub 加速计划 / compose / compose
33.27 K
5.15 K
下载
compose - Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过Compose文件格式简化应用部署过程。
最近提交(Master分支:2 个月前 )
501b5acd Add `jhrotko` to Core Maintainers. Signed-off-by: Laura Brehm <laurabrehm@hey.com> 9 天前
f51bc4cd Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com> 9 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐