# Docker的網路-Dockerfile網路寫法 參考:https://docs.docker.com/engine/reference/builder/#run---network 我們很多網路的設定都是在docker run時附加上去的,其實在image打包時就可以設定好,另外一個地方就是docker compose yaml。 這邊使用官方的範例改寫的方式,來練習Dockerfile帶入network的寫法 ``` FROM ubuntu RUN apt-get update \ && apt-get upgrade -y \ && apt-get install -y inetutils-ping curl dnsutils net-tools traceroute --no-install-recommends \ && rm -rf /var/lib/apt/lists/* RUN --network=intra CMD ["sh"] ``` 這是前幾個範例有提到tedyang/ubuntu:1120912的Dockerfile,只是增加了--network=intra,我們看會有什麼結果 > docker build -t tedyang/ubuntu:test1 .  為何在Dockerfile指定network會有錯誤呢,因為Dockerfile的network只能包none跟host。 就是沒有網路或是不對外的網路。 我們重新撰寫: ``` FROM ubuntu RUN apt-get update \ && apt-get upgrade -y \ && apt-get install -y inetutils-ping curl dnsutils net-tools traceroute --no-install-recommends \ && rm -rf /var/lib/apt/lists/* RUN --network=none CMD ["sh"] ```  這次就成功了。  這邊看到一個奇怪的現象,已經在包image宣告沒有網卡了,但為什麼還是有?這邊理解是在docker run時,network預設會上bridge,所以直接覆蓋了image的設定。 所以還是比較建議從docker compose yaml撰寫network的設定。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up