Dockerfile相關
dockerfile含有兩種內容
- “#註釋”:註釋以#開始
- “INSTRUCTIONS”:指令以大寫字母開始
#我是註釋
#FROM必須是第一條,是基礎鏡像
FROM <image>
FROM <image>:<tag>
#指定作者和信息
MAINTAINER <name>
#當前鏡像構建時運行的命令
RUN <command> (shell) 既 /bin/sh -c command
RUN <exec>
如:
RUN ["executable","parameter1",...]
RUN ["/bin/bash","-c","echo Hello!"]
#暴露端口,但run是還是需要手動打開
EXPOSE <port> [<port>]
#鏡像運行後使用的命令,會被docker run [命令] 覆蓋
#它用來指定容器運行後的默認操作
CMD <command> (shell) 既 /bin/sh -c command
CMD <exec>
如:
CMD ["executable","parameter1",...]
CMD ["/bin/bash","-c","echo Hello!"]
CMD ["parameter1","parametre2",...] 常與 entrypoint搭配使用
#和CMD差不多,就是不會被覆蓋23333.
#可以配合CMD,在run時更改參數
ENTRYPOINT
#有空格的話加""
#ADD多個解壓tar
ADD <sre> <dest>
COPY <sre> <dest>
#卷:在多個容器間共享
VOLUME["/data"]
#制定工作目錄,建議使用絕對路徑
WORKDIR /xxx/xxx
#環境變量
ENV <key> <value>
ENV <key>=<value>
#指定用戶
USER user/uid/gid
USER xxx:group
#容器被變成鏡像,作爲鏡像創建容器時會觸發指令
ONBUILDE [instruction]
build後會刪除中間容器,但不會刪除中間鏡像
不使用構建緩存:--no-chach
Docker網絡相關
由虛擬網橋提供網絡服務,數據鏈路層的玩意之列的,不是很懂emmm
linux中:docker0
windows:DockerNAT
相當於虛擬網卡 就是虛擬網卡
linux中用 bridge-util 來管理網橋
容器間互聯:
--icc=true 是否可以互聯的字段
容器間默認是在一個局域網內,使用ip地址非常不可靠會隨這容器重啓而改變
run --link=[容器名ContainrtName]:[別名Alias]
使用例子:
上述方法已過時,現使用docker network,可參照這個
跨主機連接和包轉發啥的,暫時用不到,不學了~