開機時確保 docker 網路建立 docker 網路不要冠上 service 的名稱
需求:
ubuntu 18 之後預設已經沒有 /etc/rc.local 這個檔案,所以,要自已加1個,然後就能做開機之後要做的事
docker 的網路已經事先建(create)好了,如果直接在 docker-compose.yml 的設定檔裏面直接引用的話,不但會和建好的網路相衝,必須移掉相衝的網路重新啟用容器,而啟用設定檔內的網路時, service 的名稱就會冠在 network NAME 前面,不是很直覺
如果 docker 網路沒有建好,想要開機時確保網路建立起來
工作環境:
ubuntu server 18 lts
docker
/etc/rc.local
動手:
/etc/rc.local 這個檔預設是沒有的,開起來就行,記得加上執行的權限,等一下重開機才會執行
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
vim /etc/rc.local
在 exit 0 之前加上你要做的事,確保建立 docker 網路
docker network create your.network.name --driver=bridge --subnet=192.168.0.0/24 || true
編輯容器的設定檔 /somewhere/docker-compose.yml
services:
app:
image: someone/app:latest
restart: always
volumes:
- /path/you/want:/data
ports:
- "1.2.3.4:1:1"
- "2:2/udp"
networks:
# 把既有的網路指定給 service 用
your.network.name:
ipv4_address: 192.168.0.2
environment:
- TZ=Asia/Taipei
env_file:
- ./.env
networks:
your.network.name:
# 這個設定可以使用既有的網路
external: true
重開機
sudo reboot
檢查是否成功
重新登入系統看你的 docker network 和你的 docker container 有沒有 run 起來
docker ps
應該要出現 app 這個 container
docker network list
應該要出現 your.network.name 這個網路
收工!
留言
張貼留言