Docker在个人vps玩家中是非常好用的容器工具。只需要创建一个Nginx容器,接管80和443端口,所有服务都通过Nginx进行反代。
这样即主机只需要开放三个端口,80/443/22(建议改为ssh非标端口)
Docker 创建一个名为mynet的网络
1
| docker network create --driver bridge --subnet 172.20.0.0/24 --gateway 172.20.0.1 mynet
|
在docker compose文件中,使用如下方式即可指定一个地址为172.20.0.8:6379
的redis容器,这个地址即可通过Nginx反代到别的端口
而port无需手动指定映射,主机的46379端口并不会开放。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| version: '3' networks: default: external: true name: mynet
services: redis: container_name: redis7 image: redis:7 volumes: - ./build/redis/redis.conf:/etc/redis/redis.conf - ./build/redis/data:/data environment: TZ: Asia/Shanghai restart: always command: redis-server /etc/redis/redis.conf networks: default: ipv4_address: 172.20.0.8
|
这样启动的容器,重启也不会改变容器的ip地址。
若是使用docker命令,则类似下面这样,创建了一个172.20.0.3
地址的portainer容器。再使用Nginx对该内网地址进行反代即可。
1 2 3 4 5 6 7 8
| docker run -d \ --name=portainer \ --restart=always \ --network mynet \ --ip 172.20.0.3 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:2.16.2
|