docker 的使用

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 
相關文章
相關標籤/搜索