1. 程式人生 > >Docker學習--docker的基本認識

Docker學習--docker的基本認識

video 技術分享 必須 png 獲取 查看 contain bash ubuntu15

1、Docker 架構

Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。

Docker 容器通過 Docker 鏡像來創建。

容器與鏡像的關系類似於面向對象編程中的對象與類。

技術分享圖片

2、Ubuntu16.04上安裝docker比較容易,如果你的Ubuntu系統當中還沒有安裝docker,輸入docker命令後,Ubuntu16.04系統會提示你執行怎樣的命令完成docker的安裝。

3、docker的使用:基本的docker命令

1)

docker run ubuntu:15.10 /bin/echo "Hello world"  

語句參數說明:

docker: Docker 的二進制執行文件。

run:與前面的 docker 組合來運行一個容器。

ubuntu:15.10指定要運行的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。

/bin/echo "Hello world": 在啟動的容器裏執行的命令

以上命令完整的意思可以理解為:Docker 以 ubuntu15.10 鏡像創建一個新容器,然後在容器裏執行 bin/echo "Hello world"語句。

2)容器的啟動方式

1>啟動命令行交互模式的容器,即為容器啟動偽終端。

docker run -i -t ubuntu:15.10 /bin/bash

語句參數說明:

-t:在新容器內指定一個偽終端或終端。

-i:允許你對容器內的標準輸入 (STDIN) 進行交互。

此時我們已進入一個 ubuntu15.10系統的容器

我們嘗試在容器中運行命令 cat /proc/version和ls分別查看當前系統的版本信息和當前目錄下的文件列表

技術分享圖片

2>啟動後臺運行模式的容器,使用-d參數

docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

技術分享圖片

標題說明:

CONTAINER ID:容器ID

NAMES:自動分配的容器名稱

在容器內使用docker logs命令,查看容器內的標準輸出

docker logs e403feed3e7a

技術分享圖片

因為docker在創建並運行容器的時候自動為我們的容器分配了id和名字,所以我們還可以使用以下命令進行日誌的查看:

docker logs sad_agnesi

技術分享圖片

可以看到效果是一樣的。

3)容器的停止:使用docker stop 容器id/容器名

1>根據容器id停止指定的容器

docker stop e403feed3e7a

  2>根據指定容器名停止容器

docker stop sad_agnesi

4)獲取或者拉新鏡像

docker pull ubuntu:15.10

5)創建鏡像

當我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。

1>從已經創建的容器中更新鏡像,並且提交這個容器鏡像

我們通過需要修改的鏡像創建一個容器並運行容器。

docker run -t -i ubuntu:15.10 /bin/bash

在運行的容器偽終端內使用 apt-get update 命令進行應用更新。
在完成操作之後,輸入 exit命令來退出這個容器的偽終端。

技術分享圖片

此時容器ID為748bddac7d6d的容器,是按我們的需求更改了的容器。我們可以通過命令 docker commit來提交容器副本。

技術分享圖片

參數說明:

-m:提交日誌信息

-a:指定鏡像作者

748bddac7d6d:指定提交的容器ID

runoob/ubuntu:v2:指定要創建的目標鏡像名

我們可以使用 docker images 命令來查看我們的新鏡像 runoob/ubuntu:v2,如上圖。

使用我們的新鏡像 runoob/ubuntu 來啟動一個容器:

技術分享圖片

2>使用 Dockerfile 指令來構建一個新的鏡像

我們使用命令 docker build , 從零開始來構建一個新的鏡像。為此,我們需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建我們的鏡像。

技術分享圖片

執行鏡像構建文件:

技術分享圖片

構建命令參數說明:

-t :指定要創建的目標鏡像名

. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑

查看我們新構建的鏡像:

技術分享圖片

以我們新構建的鏡像啟動一個容器:

技術分享圖片

從上面看到新鏡像已經包含我們創建的用戶lfy。

對Dockerfile構建鏡像文件說明:

每一個指令都會在鏡像上創建一個新的層,每一個指令的前綴都必須是大寫的。

第一條FROM,指定從哪個鏡像源創建新的鏡像。

RUN 指令告訴docker 在鏡像內執行命令,安裝了什麽。

給鏡像增加tag標簽:使用 docker tag 命令

技術分享圖片

可以看到,執行docker tag命令是為鏡像新添加一個標簽,而不是修改原有的標簽。

6)鏡像的刪除:鏡像的刪除,需要先停止相應鏡像的容器的運行,否則會報錯。

我們可以使用如下命令查看當前系統已經創建的所有容器,無論其是否在啟動運行。

技術分享圖片

技術分享圖片

刪除容器:

技術分享圖片

刪除指定鏡像:

技術分享圖片

小結:

1>刪除容器使用命令docker rm 容器id/容器名;刪除鏡像使用命令docker rmi 鏡像id/鏡像名。

2>刪除鏡像前,需要先刪除容器。

7)docker容器的連接

docker run -d -p 4000:22 -p 4001:8080 -p 4002:1521  -p 4003:445  -p 4004:3999  -p 4005:8443  -p 4006:18011  -p 4007:18043  --name usdp40 -h usdp40 --privileged 127.0.0.1:5000/usdp/video:c82 /etc/init.d/after.local

-P :是容器內部端口隨機映射到主機的高端口。
-p : 是容器內部端口綁定到指定的主機端口。

 

Docker學習--docker的基本認識