搭建一个简单的 docker server
出于各种原因,希望有一台机器专门跑 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 玩儿了
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。