1. 程式人生 > 實用技巧 >Docker-03-Docker配置

Docker-03-Docker配置

dockerfile建立映象

Dockerfile是一個文字格式的配置檔案,可以用來建立自定義的映象。

Dockerfile分為四部分:基礎映象資訊、維護者資訊、映象操作指令和容器啟動時執行指令。編寫完dockerfile之後可以通過docker build命令來建立映象

# 基礎映象資訊
FROM ubuntu

# 維護者資訊
MAINTAINER docker_user [email protected]

# 映象操作指令
RUN apt-get update

# 容器啟動時執行指令
CMD /usr/sbin/nginx


映象操作指令主要有:

  • FROM [:tag]
  • RUN :每條RUN指令將在當前映象基礎上執行指定命令,並提交為新的映象。
  • CMD:指定啟動容器時執行的命令,每個dockerfile只能有一條cmd指令,如果指定了多個,只有最後一條會被執行。如果使用者啟動容器時指定了執行的命令,則會覆蓋CMD指定的命令
  • EXPOSE:指定docker容器暴露的埠號
  • ENV: 指定環境變數
  • ADD :將容器的src複製到dest
  • COPY : 將本地直接的soc複製到容器的dest
  • ENTRYPOINT:配置容器啟動後指定的命令,只能有一個
  • VOLUME:建立一個可以從本地主機或其它容器掛載的掛載點。一般用來存放資料庫和需要保持的資料等。
  • USER daemon:指定執行容器時的使用者名稱或uid
  • WORKDIR:run、cmd、entrypoint的工作目錄
  • ONBUILD:當映象作為其它新建立映象的基礎映象時需要執行的指令

資料管理配置

容器中管理資料的方式有兩種:資料卷(data volumes)和資料卷容器(data volume containers)


資料卷是一個可供容器使用的目錄,它繞過檔案系統,可以提供很多有用的特性:

  1. 資料卷可以在容器間共享
  2. 對資料卷的修改會立馬生效
  3. 對資料卷的修改不會影響映象(就像對資料庫的修改不會影響程式碼本身)
  4. 資料卷會一致存在,直到沒有容器使用

資料卷的使用類似與linux下對目錄或檔案進行mount操作。

  • docker run -v /src/webapp:/opt/webapp:ro <image_name>
    :掛載宿主機的/src/webapp目錄作為資料卷,掛載到容器的/opt/webapp目錄。這樣對容器/opt/webapp目錄的操作:就會體現到宿主機的/src/webapp目錄上。ro表示容器只能讀改目錄。預設是讀寫rw
  • docker run -v ~/.bash_history:/.bash_history <image_name>:掛載宿主機的~/.bash_history檔案作為資料卷,掛載到容器的/.bash_history檔案。


資料卷是共享宿主機的檔案或目錄,而資料卷容器是共享一個docker容器,可以用來在容器之間共享持續更新的資料,可以讓使用者在容器之間自由的升級和移動資料卷。

  • docker run -v /dbv --name dbdata <image_name>:建立一個數據卷容器,並建立一個數據卷掛載到宿主機的/dbv目錄。
  • docker run --volumes-from dbdata --name db1 <image_name> db1掛載容器dbdata中的資料卷。此時,如果在dbdata容器的/dbv目錄下建立一個檔案,那麼在db1容器的/dbv目錄下也可以看到該檔案。
  • docker run --volumes-from dbdata -v /localDir":/backup --name backupContainer <image_name> tar cvf /backup/backup.tar /dbv。使用映象建立一個容器backupContainer;然後讓容器掛載dbdata容器的資料卷;然後掛載宿主機目錄/localDir到backupContainer的/backup目錄;然後容器啟動後執行tar命令備份,備份dbv的檔案到backup目錄。
  • docker run --volumes-from dbdata2 -v <localPath>:/backup backupContainer tar xvf /bakckup/back.tar: 將備份的資料回覆到容器backupContainer中

如果要刪除資料卷,必須在刪除最後一個掛載它的容器時,顯示的使用docker rm -v命令來刪除關聯的容器

網路基礎配置

網路基礎配置主要是將docker容器提供的服務,通過與外部埠對映的方式,暴露到外部。

  • docker run -P <image_name>: docker隨機對映宿主機埠至容器內部開放的埠
  • docker run -p <local_port>:<container_port> <image_name>
  • docker run --link db:db_alias:將新建立的容器連線到db容器。這允許新的容器訪問db容器的資訊。

Docker在兩個互聯的容器之間建立了安全隧道,而且不用對映它們的埠到宿主機上。docker通過兩種方式為容器公開連線資訊:

  1. 環境變數。例如在新容器的環境變數中配置db容器的ip地址和埠等資訊
  2. 更新/etc/hosts檔案。
  • docker port:檢視埠對映配置
  • docker logs:檢視應用日誌