玩轉Docker容器技術1-6章實驗報告

容器生態系統&容器架構

環境選擇

容器需要管理工具、runtime 和操作系統,我們的選擇如下:

  1. 管理工具 - Docker Engine
    因爲 Docker最流行使用最廣泛。
  2. runtime - runc
    Docker 的默認 runtime
  3. 操作系統 - Ubuntu
    雖然存在諸如 CoreOS的容器 OS,因考慮到我們目前處於初學階段,選擇大家熟悉的操作系統更爲合適。等具備了紮實的容器基礎知識後再使用容器 OS 會更有利。

安裝Docker

配置 Docker 的 apt 源

  1. 安裝包,允許 apt 命令 HTTPS 訪問 Docker 源。
$ sudo apt-get install \
  apt-transport-https \
  ca-certificates \
  curl \
  software-properties-common
  1. 添加 Docker 官方的 GPG
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 將 Docker 的源添加到 /etc/apt/sources.list
$ sudo add-apt-repository \  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \  $(lsb_release -cs) \  stable"

安裝Docker

$ sudo apt-get update   
$ sudo apt-get install docker-ce

運行第一個容器

運行容器

$ sudo docker run -d -p 80:80 httpd

運行結果
在瀏覽器中輸入 http://[your ubuntu host IP]
瀏覽器結果

查看下載的httpd鏡像

$ sudo docker images

運行結果

查看正在運行的容器

$ sudo docker ps 

$ sudo docker container ls 

運行結果

鏡像

hello-world鏡像

下載hello-world鏡像

$ sudo docker pull hello-world

運行hello-world鏡像

$ sudo docker run hello-world

運行結果

通過docker commit 命令構建鏡像

下載CentOS的鏡像

$ sudo docker pull centos

運行容器

$ sudo docker run -it centos

安裝vi

  1. 確認vi沒有安裝
    運行結果
  2. 安裝vi
# yum install vim

運行結果

保存爲新鏡像

  1. 在新窗口中查看當前運行的容器
$ sudo docker ps

運行結果

  1. 將容器保存爲鏡像(centos-with-vi)
$ sudo docker commit peaceful_black centos-with-vi
  1. 查看新鏡像屬性
$ sudo docker images

運行結果

  1. 從新鏡像啓動容器,驗證 vi 已經可以使用
$ sudo docker run -it centos-with-vi

運行結果

通過 Dockerfile 構建鏡像

用 Dockerfile 創建上節的 centos-with-vi

$ touch Dockerfile

Dockerfile的內容爲

FROM centos
RUN yum install vim -y

運行docker build命令

$ sudo docker build -t centos-with-vi-dockerfile .

運行結果

查看新鏡像屬性

$ sudo docker images

運行結果

查看新鏡像的構建歷史

$ sudo docker history centos-with-vi-dockerfile

運行結果

搭建本地 Registry

啓動registry容器

$ sudo docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2

查看正在運行的容器

$ sudo docker ps

運行結果

查看倉庫內容

打開瀏覽器,訪問http://127.0.0.1:5000/v2/_catalog,可以查看到repositories: [] ,表示現在倉庫中沒有鏡像。
運行結果

重命名鏡像,使之與 registry 匹配

$ sudo docker tag httpd 127.0.0.1:5000/cccxxmo/httpd:v1

運行結果

上傳鏡像

$ sudo docker push 127.0.0.1:5000/cccxxmo/httpd

運行結果

刪除鏡像,重新從本地下載

$ sudo docker rmi 127.0.0.1:5000/cccxxmo/httpd:v1
$ sudo docker pull 127.0.0.1:5000/cccxxmo/httpd:v1

運行結果

查看倉庫內容

打開瀏覽器,再次訪問http://127.0.0.1:5000/v2/_catalog,可以看到上傳的鏡像。
運行結果

網絡

創建自定義網絡

創建bridge網絡

創建時可以通過指定--subnet--gateway參數指定IP網段,否則會使用Docker 自動分配的 IP 網段。

$ sudo docker network create --driver bridge my_net

運行結果

查看當前 host 的網絡結構變化

$ brctl show

運行結果

查看my_net的配置信息

$ sudo docker network inspect my_net

運行結果
之後若需要使用新創建的網絡,在啓動容器時通過--network指定該網絡即可。

存儲

需創建$HOME/htdocs/index.html

bind mount

$HOME/htdocsmount到httpd容器

$ sudo docker run -d -p 80:80 -v $HOME/htdocs:/usr/local/apache2/htdocs httpd

驗證修改是否生效

$ echo "update index page!" > $HOME/htdocs/index.html
$ curl 127.0.0.1:80

運行結果

docker managed volume

通過指明mount point運行容器

$ sudo docker run -d -p 80:80 -v /usr/local/apache2/htdocs httpd

更新數據

# echo "update volume from host!" > /var/lib/docker/volumes/ea4fa97ea0ec00dff3d4a22e959ddaf207c3b99c806048a623c72018580e43d5/_data/index.html
# curl 127.0.0.1:80

運行結果

volume container

創建一個volume container

$ sudo docker create --name vc_data -v $HOME/htdocs:/usr/local/apache2/htdocs -v $HOME/vc_test busybox

查看volume和bind

$ sudo docker inspect vc_data

運行結果

使用volume container

$ sudo docker run -d -p 80 --volumes-from vc_data httpd

運行結果

查看volume和bind是否一致

$ sudo docker inspect 7f3345ef4860

運行結果

更新數據

$ echo "This content is from a volume container!" > $HOME/htdocs/index.html
$ curl 127.0.0.1:32768

運行結果

data-packed volume container

用Dockfile構建鏡像

Dockfile內容如下:

FROM busybox:latest
ADD htdocs /usr/local/apache2/htdocs
VOLUME /usr/local/apache2/htdocs

htdocs/index.html內容如下:

This content is from a data packed volume container! 

build 新鏡像 datapacked

$ sudo docker build -t datapacked .

運行結果

用新鏡像創建 data-packed volume container

$ sudo docker create --name vc_data datapacked

啓動 httpd 容器並使用 data-packed volume container

$ sudo docker run -d -p 80:80 --volumes-from vc_data httpd
$ curl 127.0.0.1:80

運行截圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章