開機時確保 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 這個網路


收工!

留言

這個網誌中的熱門文章

使用 Excel 計算2個地點之間的直線距離

LINE 儲存的檔案傳到 email 不方便 很不方便 非常不方便 但是有解的筆記

合併列印標籤漏印