Docker 概述
- Docker 是一個開源的應用容器引擎
- 誕生於 2013 年初,基於 Go 語言實現, dotCloud 公司出品(後改名爲Docker Inc)
- Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上。
- 容器是完全使用沙箱機制,相互隔離
- 容器性能開銷極低
- Docker 從 17.03 版本之後分爲 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版)
docker架構:
- 鏡像(Image):Docker 鏡像(Image),就相當於是一個 root 文件系統。比如官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統的 root 文件系統。
- 容器(Container):鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的類和對象一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啓動、停止、刪除、暫停等。
- 倉庫(Repository):倉庫可看成一個代碼控制中心,用來保存鏡像。
實驗0 基礎實驗
1.docker安裝實驗
(1)在本機ubuntu環境中安裝docker
系統版本:ubuntu14.04
步驟:
# step 1: 安裝必要的一些系統工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安裝GPG證書
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 寫入軟件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新並安裝 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
注:上述命令下載文件時可能會下載不全,根據提示使用修復(--fix)下載,直到下載完全正確。
驗證:
wuyi@ubuntu:~$ sudo docker version
[sudo] password for wuyi:
Client:
Version: 18.06.3-ce
API version: 1.38
Go version: go1.10.3
Git commit: d7080c1
Built: Wed Feb 20 02:27:13 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.3-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: d7080c1
Built: Wed Feb 20 02:25:38 2019
OS/Arch: linux/amd64
Experimental: false
wuyi@ubuntu:~$
(2) docker源修改
將docker源配置爲阿里雲鏡像:
- 進入官網:https://dev.aliyun.com/
- 進行註冊賬戶並登錄
- 在產品與服務中找到容器鏡像服務,點擊進入
- 左欄中點擊鏡像加速器
- 按操作文檔進行配置
- 注:ubuntu14.04不支持systemctl,重啓docker使用service命令(sudo service docker start)
2.鏡像管理實驗
(1) 搜索mysql鏡像(... search + 關鍵詞 可以用來搜索鏡像)
$ sudo docker search ubuntu
(2) 下載搜索列表中的第一項
# 使用這條指令可以下載名爲ubuntu的鏡像
$ sudo docker pull ubuntu
# 下載 ubuntu的鏡像,且指定版本14.04
$ sudo docker pull ubuntu:14.04
# 從指定的鏡像源dl.dockerpool.com下載最新的Ubuntu鏡像
$ sudo docker pull dl.dockerpool.com:5000/ubuntu
(3) 使用 sudo docker images查看本地鏡像
(4) 使用tag命令,依次創建3個本地別名文件
$ sudo docker tag mysql mysql:1
$ sudo docker tag mysql mysql:2
$ sudo docker tag mysql mysql:3
$ sudo docker images
最後查看本地鏡像信息,體會REPOSITORY、TAG、IMAGE ID之間的變化
(5)使用rmi命令刪除 mysql:1 鏡像,再使用 images 查看變化
(6)使用rmi命令刪除 mysql 鏡像,再使用 images 查看變化
(7)使用rmi命令刪除 Image ID ,再使用 images 查看變化
(提示:強制刪除加 -f )
# 類似於
$ sudo docker rmi d72169616e20
(8)下載ubuntu鏡像,並使用inspect命令查看ubuntu鏡像的信息,先查看全部信息,再單獨查看DockerVersion信息(提示:sudo docker inspect -f {{".DockerVersion"}} ubuntu:1)
3.容器管理實驗
1.體會容器的兩種創建並啓動方式
第一種 : create + run 運行容器
(1) 使用create命令由ubuntu鏡像創建一個容器(注意使用 -it 指令)
(2) 分別使用 sudo docker ps -a 和 sudo docker ps 查看本機容器狀態
(3) 使用start相關的命令啓動一個容器
(4) 再分別使用 sudo docker ps -a 和 sudo docker ps 查看本機容器狀態
第二種:使用run直接運行一個容器
(5) 使用run直接由ubuntu鏡像創建一個容器,並使其在後臺以守護態運行
$ sudo docker run -idt ubuntu
(6) 再分別使用 sudo docker ps -a 和 sudo docker ps 查看本機容器狀態
2.進入處於運行態的容器
(7) 使用 exec 進入剛剛創建的容器
3.關閉處於Up狀態(即,啓動狀態)的容器
(8) 使用stop命令終止一個容器,針對NAME終止其中一個容器,針對CONTAINER ID 終止另一個容器
(9) 再分別使用 sudo docker ps -a 和 sudo docker ps 查看本機容器狀態
容器的刪除(體會刪除運行中容器以及不運行的容器)
(10)先啓動一個容器,注意NAMES與STATUS
(11)對於兩個不同狀態的容器分別執行刪除
回答問題:
1. 簡要談談你對鏡像,容器的理解.
答:利用面向對象的思想,鏡像相當於一個類,而容器是鏡像這個類的實例。
2. do docker run -idt ubuntu 命令中 idt三個字母分別代表的含義.
答:-i:開啓stdin
-d:守護方式 daemon 在後臺運行 docker container
-t:分配一個僞tty終端
3. sudo docker ps -a 與 sudo docker ps命令的區別?
答:有-a參數表示顯示所有的容器,無-a參數只顯示啓動的容器。
實驗1-數據管理實驗
- 在容器內創建一個數據卷
- 掛載主機目錄或者文件作爲數據卷
- 創建數據卷容器
- 在共享數據卷中創建一個文件
- 在其他的容器中查看被剛剛創建的文件
實驗問答:
1. 簡述 touch 命令的作用
答:touch命令用於修改文件或者目錄的時間屬性,包括存取時間和更改時間。若文件不存在,系統會建立一個新的文件。
2. 簡述 ls 命令的作用
答: ls命令用於顯示指定工作目錄下之內容(列出目前工作目錄所含之文件及子目錄)。
實驗2-網絡配置實驗
1. 將容器與主機的端口號相綁定(分別使用不同的方法)
2. 實現容器與容器的互聯,使用ping命令檢驗連通性
參考:https://shimo.im/docs/FnT8B0CdmlkiD1mO/read