出于各种原因,希望有一台机器专门跑 docker ,看了一下 CentOS 对 docker 的支持不算那么完美,那就直接用 debian 打底吧,反正跑起来以后大家都一样。

安装 docker

参照 docker 官网 的教程安装,卸载旧版本的 docker ,添加源,安装新版本

apt-get remove docker docker-engine docker.io containerd runc

apt-get update
apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

装好以后跑个 helloworld 测试一下

docker run hello-world

可以使用 systemctl 进行管理

systemctl status docker
systemctl start docker
systemctl restart docker
systemctl stop docker
systemctl enable docker

配置一下 docker hub 的镜像

vim /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com"
  ]
}

顺便把 docker compose 也装上

curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

部署 Portainer

Portainer 是个蛮有名的图形化管理工具。
这里直接使用 docker compose 部署

version: '3'
volumes:
  portainer_data:

services:
  portainer:
    image: portainer/portainer
    command: -H unix:///var/run/docker.sock
    restart: always
    ports:
      - 9000:9000
      - 8000:8000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

启动之后访问 9000 端口即可

Nginx 反代

考虑到接下来部署的各个服务都跑在千奇百怪的端口上,考虑前面加个 nginx 反代,这样就方便配置 vhost 了。

基于习惯,不想把 nginx 也跑在 docker 上,那就参照 上一篇文章 先编译安装个 nginx 出来。

略有区别的是部分包的名称

apt-get install libpcre3 libpcre3-dev zlib1g-dev openssl libssl-dev

新建个 vhost 反代一下 9000 端口的 Portainer

server {
    server_name          docker.home;
    access_log           /data/wwwlogs/docker.home.log;
    root                 /data/wwwroot/docker.home;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        proxy_connect_timeout   600;
        proxy_send_timeout      600;
        proxy_read_timeout      600;
    }
}

ok ,接下来就是慢慢折腾 Portainer 玩儿了

文章目录