Week16-容器化技術與容器服務

作業內容

參考:玩轉 Docker 容器技術:1-6章 ,按課件內容實踐,並給出實驗報告。

操作系統

本文是基於CentOS7進行的實驗。

安裝Docker

安裝過程

我用的是CentOS,用國內阿里雲安裝,運行以下命令:

//安裝 yum-utils , 使用 yum-config-manager 工具設置Yum源, 後面兩個是 devicemapper驅動依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
//使用阿里源訪問
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//查看指定版本
yum list docker-ce --showduplicates
//安裝指定版本
sudo yum install -y --setopt=obsoletes=0 \
   docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
   docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
//啓動並加入開機啓動
sudo systemctl start docker
sudo systemctl enable docker

過程中,我出現了以下問題,原因是沒有把當前用戶加入docker用戶組,解決方法見此鏈接
在這裏插入圖片描述

驗證安裝成功

在終端輸入docker version,可以看到client和server的信息:
在這裏插入圖片描述

運行第一個容器

按照老師的PPT,輸入docker run hello-world運行hello-world鏡像:
在這裏插入圖片描述
輸入以下指令docker run -it ubuntu bash運行Ubuntu鏡像:
在這裏插入圖片描述

Docker基本操作

顯示本地鏡像庫內容

輸入docker images可以看到本地已經有了剛剛下載的ubuntu和hello-world鏡像:
在這裏插入圖片描述

顯示運行中的容器

輸入docker ps,由於沒有運行中的容器,所以內容爲空:
在這裏插入圖片描述

顯示所有容器(包含已中止)

輸入docker ps -a,可以看到已經中止的ubuntu和hello-world容器:
在這裏插入圖片描述

繼續運行原容器並進入

根據容器的NAMES屬性輸入以下命令來重新運行ubuntu容器:

docker restart $NAMES
docker ps
dockerr attach $NAMES

在這裏插入圖片描述

MySQL與容器化

拉取MySQL鏡像

輸入docker pull mysql:5.7拉取鏡像:
在這裏插入圖片描述
再輸入docker images檢查鏡像是否下載成功:
在這裏插入圖片描述

構建docker鏡像

使用MySQL容器構建文件Dockerfile來構建鏡像,它的常見指令如下:
在這裏插入圖片描述

  • 創建文件夾
    新建一個文件夾mydock,並在裏面創建一個dockerfile:
    在這裏插入圖片描述
  • 錄入dockfile內容
    在這裏插入圖片描述
  • 構建鏡像
    運行命令docker build . -t hello構建鏡像hello:
    在這裏插入圖片描述
  • 運行鏡像
    輸入docker run -it --rm hello -H
    在這裏插入圖片描述

使用MySQL容器

  • 啓動服務器
    輸入以下命令:
    sudo docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
    
    在這裏插入圖片描述
  • 啓動MySQL客戶端
    輸入以下命令憑藉用戶名和密碼打開數據庫端口:
    docker run -it --net host mysql:5.7 "sh"
    mysql -h127.0.0.1 -P3306 -uroot -proot
    

在這裏插入圖片描述

  • 創建卷並掛載
    創建卷mydb並掛在/var/lib/mysql中:
    docker rm $(docker ps -a -q) -f -v
    docker volume create mydb
    docker run --name mysql2 -e MYSQL_ROOT_PASSWORD=root -v mydb:/var/lib/mysql -d mysql:5.7
    
    在這裏插入圖片描述
  • 啓動客戶端容器鏈接服務器
    使用``–link```連接兩個容器,使得客戶端容器內可以使用mysql這個別名訪問服務器:
    docker run --name myclient --link mysql2:mysql -it mysql:5.7 bash
    mysql -hmysql -P3306 -uroot -proot
    
    在這裏插入圖片描述

Docker倉庫(Registry)

registry是registry映像的一個實例,在Docker中運行。我將根據官網指南搭建私有容器倉庫。

運行本地倉庫

使用以下命令來啓動倉庫容器:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
在這裏插入圖片描述

將映像從Docker Hub複製到registry

以下示例表示從Docker Hub上拉取ubuntu:16.04鏡像,並且重新標記爲my-ubuntu,然後把它推送到本地倉庫。最後刪除掉ubuntu:16.04my-ubuntu鏡像,把my-ubuntu鏡像從本地倉庫移除。

  • 拉取ubuntu:16.04鏡像
    輸入命令:docker pull ubuntu:16.04
    在這裏插入圖片描述
  • 將鏡像標記爲localhost:5000/my-ubuntu。這將爲現有鏡像創建一個附加標籤。當標籤的第一部分是主機名和端口時,推入時Docker會將其解釋爲倉庫的位置。
    輸入命令:docker tag ubuntu:16.04 localhost:5000/my-ubuntu
  • 將鏡像推送到在localhost:5000運行的本地倉庫
    輸入命令:docker push localhost:5000/my-ubuntu
    在這裏插入圖片描述
  • 刪除本地緩存ubuntu:16.04和localhost:5000/my-ubuntu 鏡像,可以測試從倉庫拉取鏡像。這不會從倉庫中刪除localhost:5000/my-ubuntu鏡像。
    輸入命令:
    docker image remove ubuntu:16.04
    docker image remove localhost:5000/my-ubuntu
    
    在這裏插入圖片描述
  • 把localhost:5000/my-ubuntu鏡像從倉庫中拉取出來
    輸入命令:docker pull localhost:5000/my-ubuntu
    在這裏插入圖片描述

停止本地倉庫

  • 停止倉庫,可以用以下命令,和停止容器一樣的操作:
    docker container stop registry
  • 刪除倉庫,用以下命令:
    docker container rm -v registry
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章