docker 學習 1. Docker 容許你在容器內運行應用程序, 使用 docker run 命令來在容器內運行一個應用程序。 輸出Hello world docker run ubuntu:15.10 /bin/echo "Hello world" 以上命令完整的意思能夠解釋爲:Docker 以 ubuntu15.10 鏡像建立一個新容器,而後在容器裏執行 bin/echo "Hello world",而後輸出結果。 2.運行交互式的容器 咱們經過docker的兩個參數 -i -t,讓docker運行的容器實現"對話"的能力 docker run -i -t ubuntu:15.10 /bin/bash 各個參數解析: -t:在新容器內指定一個僞終端或終端。 -i:容許你對容器內的標準輸入 (STDIN) 進行交互。 此時咱們已進入一個 ubuntu15.10系統的容器 咱們嘗試在容器中運行命令 cat /proc/version和ls分別查看當前系統的版本信息和當前目錄下的文件列表 咱們能夠經過運行exit命令或者使用CTRL+D來退出容器。 3. 啓動容器(後臺模式) 使用如下命令建立一個以進程方式運行的容器 docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done" 在輸出中,咱們沒有看到指望的"hello world",而是一串長字符 2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63 這個長字符串叫作容器ID,對每一個容器來講都是惟一的,咱們能夠經過容器ID來查看對應的容器發生了什麼。 首先,咱們須要確認容器有在運行,能夠經過 docker ps 來查看 CONTAINER ID:容器ID NAMES:自動分配的容器名稱 4. 在容器內使用docker logs命令,查看容器內的標準輸出 根據容器 id查看容器內部的輸出 docker logs 2b1b7a428627 根據容器 name查看容器內部的輸出 docker logs amazing_cori 5. 中止容器 docker stop 容器ID / 容器名稱 6. 查看硬件使用率 docker stats 7.運行一個web應用 前面咱們運行的容器並無一些什麼特別的用處。 接下來讓咱們嘗試使用 docker 構建一個 web 應用程序。 咱們將在docker容器中運行一個 Python Flask 應用來運行一個web應用。 docker pull training/webapp # 載入鏡像 docker run -d -P training/webapp python app.py #運行一個容器 參數說明: -d:讓容器在後臺運行。 -P:將容器內部使用的網絡端口映射到咱們使用的主機上。 Docker 開放了 5000 端口(默認 Python Flask 端口)映射到主機端口 32769 上。 這時咱們能夠經過瀏覽器訪問WEB應用 咱們也能夠經過 -p 參數來設置不同的端口: docker run -d -p 5000:5000 training/webapp python app.py 容器內部的 5000 端口映射到咱們本地主機的 5000 端口上。 8.網絡端口的快捷方式 經過 docker ps 命令能夠查看到容器的端口映射,docker 還提供了另外一個快捷方式 docker port,使用 docker port 能夠查看指定 (ID 或者名字)容器的某個肯定端口映射到宿主機的端口號。 上面咱們建立的 web 應用容器 ID 爲 bf08b7f2cd89 名字爲 wizardly_chandrasekhar。 我可使用 docker port bf08b7f2cd89 或 docker port wizardly_chandrasekhar 來查看容器端口的映射狀況。 docker port bf08b7f2cd89 9. 查看 WEB 應用程序日誌 docker logs [ID或者名字] 能夠查看容器內部的標準輸出。 docker logs -f 44e91ae4f916 image 10 .查看WEB應用程序容器的進程 docker top 44e91ae4f916 11. 檢查 WEB 應用程序 使用 docker inspect 來查看 Docker 的底層信息。它會返回一個 JSON 文件記錄着 Docker 容器的配置和狀態信息。 docker inspect 44e91ae4f916 12. docker ps -l 查詢最後一次建立的容器: 13. 移除WEB應用容器 咱們可使用 docker rm 命令來刪除不須要的容器 刪除容器時,容器必須是中止狀態,不然會報以下錯誤 Error response from daemon: You cannot remove a running container xx ,Stop the container before attempting removal or force remove 14. Docker 鏡像使用 當運行容器時,使用的鏡像若是在本地中不存在,docker 就會自動從 docker 鏡像倉庫中下載,默認是從 Docker Hub 公共鏡像源下載。 下面咱們來學習: 一、管理和使用本地 Docker 主機鏡像 二、建立鏡像 15. 列出鏡像列表 咱們可使用 docker images 來列出本地主機上的鏡像。 16. 各個選項說明: REPOSITORY:表示鏡像的倉庫源 TAG:鏡像的標籤 IMAGE ID:鏡像ID CREATED:鏡像建立時間 SIZE:鏡像大小 同一倉庫源能夠有多個 TAG,表明這個倉庫源的不一樣個版本,如ubuntu倉庫源裏,有15.十、14.04等多個不一樣的版本,咱們使用 REPOSITORY:TAG 來定義不一樣的鏡像。 因此,咱們若是要使用版本爲15.10的ubuntu系統鏡像來運行容器時,命令以下: docker run -t -i ubuntu:15.10 /bin/bash 若是要使用版本爲14.04的ubuntu系統鏡像來運行容器時,命令以下: docker run -t -i ubuntu:14.04 /bin/bash 17. 獲取一個新的鏡像 當咱們在本地主機上使用一個不存在的鏡像時 Docker 就會自動下載這個鏡像。若是咱們想預先下載這個鏡像,咱們可使用 docker pull 命令來下載它。 docker pull ubuntu:13.10 18. 查找鏡像 咱們能夠從 Docker Hub 網站來搜索鏡像,Docker Hub 網址爲: https://hub.docker.com/ 咱們也可使用 docker search 命令來搜索鏡像。好比咱們須要一個httpd的鏡像來做爲咱們的web服務。咱們能夠經過 docker search 命令搜索 httpd 來尋找適合咱們的鏡像。 NAME:鏡像倉庫源的名稱 DESCRIPTION:鏡像的描述 OFFICIAL:是否docker官方發佈 19. 拖取鏡像 咱們決定使用上圖中的httpd 官方版本的鏡像,使用命令 docker pull 來下載鏡像。 下載完成後,咱們就可使用這個鏡像了。 docker run httpd 20. 建立鏡像 當咱們從docker鏡像倉庫中下載的鏡像不能知足咱們的需求時,咱們能夠經過如下兩種方式對鏡像進行更改。 1.從已經建立的容器中更新鏡像,而且提交這個鏡像 2.使用 Dockerfile 指令來建立一個新的鏡像 在運行的容器內使用 mkdir create a dir 在完成操做以後,輸入 exit命令來退出這個容器。 此時ID爲e218edb10161的容器,是按咱們的需求更改的容器。咱們能夠經過命令 docker commit來提交容器副本。 docker commit -m="has update" -a="gaocng" cff94d57f05d gaocong/ubuntu:v1 21. 構建鏡像 咱們使用命令 docker build , 從零開始來建立一個新的鏡像。爲此,咱們須要建立一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建咱們的鏡像。 FROM centos:6.7 MAINTAINER Fisher "71849@qq.com" RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D 每個指令都會在鏡像上建立一個新的層,每個指令的前綴都必須是大寫的。 第一條FROM,指定使用哪一個鏡像源 RUN 指令告訴docker 在鏡像內執行命令,安裝了什麼。。。 而後,咱們使用 Dockerfile 文件,經過 docker build 命令來構建一個鏡像。 docker build -t runoob/centos:6.7 . 參數說明: -t :指定要建立的目標鏡像名 . :Dockerfile 文件所在目錄,能夠指定Dockerfile 的絕對路徑 使用docker images 查看建立的鏡像已經在列表中存在,鏡像ID爲860c279d2fec 後臺運行本身構建的鏡像 docker run -d -p 22:22 gaocong/centos:7 22 .容器命名 當咱們建立一個容器的時候,docker 會自動對它進行命名。另外,咱們也可使用 --name 標識來命名容器,例如: 23. 容器IP的查方法 docker inspect 容器ID或容器名 |grep '"IPAddress"' 24. 使用docker exec進入Docker容器 docker exec -it 775c7c9ee1e1 /bin/bash