00x1:
端口映射:
如圖:這就是把容器的 5000端口和主機的32768端口相映射,所以通過訪問主機的32768端口就可以訪問容器的web界面
這個端口是系統默認的如果自定義命令:docker run -d -p 5123:5000 training/webapp python app.py
同時可以多端口映射,可映射指定ip。
docker logs -f training/webapp 查看容器內web應用信息
docker port 容器名查看映射端口情況,有時候多端口映射的時候有用
00x2:實現兩個容器的連接
實現容器之間的互相通信: 在源容器和接受容器之間的創建一個隧道也就是容器互聯:
命令是link 參數是 link name:alias name 是連接容器的名字,而alias 是隧道也就是連接的名字:舉個實例:是web容器和數據庫容器之間的聯系
先創建數據庫容器:先下載鏡像: docker pull training/postgres
然后創建數據庫容器: docker run -d -P --name db training/postgres
先刪除之前下載的webapp/training 容器web,然后創建新的容器和數據庫容器建立聯系
docker rm -f web
建立新的容器連接db容器
docker run -d --name web --link db:db training/webapp python app.py
這個命令就是創建了名字叫 db的鏈接,鏈接的web容器和db容器 如圖:
docker ps查看連接情況:
這個注意的是數據庫安全情況,沒有用-p 為了不讓數據庫端口暴露在主機上
env命令可以查看連接容器的環境變量
還可以在容器的/etc/host 里面查看具體ip
00x3:Dockerfile 詳情:
Dockerfile 分為四個部分: 基礎鏡像信息,維護者信息,鏡像操作指定,和容器啟動指令,它是由一條一條語句組成,支持#號開頭的注釋行
Dockerfile 基本命令: dockerfile 就是利用一系列的指令的順序解析實現自動的image
通過build 命令執行dockerfile 的描述來構建鏡像,dockerfile client 會把整個context 打包發送到Docker
Server端,然后server端build鏡像,成功后刪除context目錄
Dockerfile catch : 每次都會執行命令后提交一個鏡像,如果要重新使用之前的鏡像,可以通過-no-cache的方式來禁用這個cache
Dockerfile 大小寫不敏感,但是建議全部大寫
FROM 鏡像 必須第一行
MAINTAINER 標識鏡像的作者
RUN: run就是啟動容器,執行命令,然后提交存儲層文件變更,如果執行多條命令:需要加上:&& 符號可以有多個run,支持的是兩種運行方式:RUN <CMD> /bin/sh -c "cmd" 運行
CMD命令:CMD命令的作用是容器的默認啟動命令,就是執行container的默認操作
一個dockerfile 只要一個cmd 命令 ,當有多個cmd命令的時候,只執行最后一條。
EXPOSE聲明端口:
格式是: EXPOSE <端口1><端口2> 這個只是一個聲明,不會真正的應用,但是當隨機映射端口的時候,也是docker run -P的時候,會自動的使用這個鏡像服務端口
ENV:
ENV key value
用來設置環境變量: 當鏡像創建容器的時候自動設置環境變量
WORKDIR 指定當前的工作目錄
這僅僅是基礎知識,對於dockerfiles的實戰還需加強學習