Docker鏡像管理快速入門

簡介

介紹如何使用Docker構建鏡像,並經過阿里雲鏡像服務分發到ECS服務器,運行該鏡像。linux

背景知識

容器技術
容器是一個容許咱們在資源隔離的過程當中,運行應用程序和其依賴項的 、輕量的 、操做系統級別的虛擬化技術, 運行應用程序所需的全部必要組件都打包爲單個鏡像,這個鏡像是能夠重複使用的。當鏡像運行時,它是運行在獨立的環境中,並不會和其餘的應用共享主機操做系統的內存、CPU或磁盤。這保證了容器內的進程不會影響到容器外的任何進程。golang

鏡像倉庫(Registry)
Docker的鏡像存儲中心一般被稱爲Registry。當您須要獲取本身私有鏡像時,首先須要登陸Registry,而後拉取鏡像。修改過鏡像以後,您能夠再次將鏡像推送回Registry中去。或者在本地經過Docker鏡像構建的功能生成鏡像,再推送到Registry中。docker

容器鏡像服務ACR(Alibaba Cloud Container Registry)
阿里雲容器鏡像服務ACR默認實例版提供基礎的容器鏡像服務,包括安全的應用鏡像託管能力、精確的鏡像安全掃描功能、穩定的國內外鏡像構建服務以及便捷的鏡像受權功能,從而方便用戶進行鏡像全生命週期管理。shell

鏈接ECS服務器(如未購買可在此處體驗ECS

1.打開系統自帶的終端工具。
Windows:CMD或Powershell。
MAC:Terminal。json

  1. 在終端中輸入鏈接命令ssh [username]@[ipaddress]。您須要將其中的username和ipaddress替換爲第1小節中建立的ECS服務器的登陸名和公網地址。例如:
ssh root@123.123.123.123

在這裏插入圖片描述
命令顯示結果以下:centos

在這裏插入圖片描述
3.輸入yes,贊成繼續後將會提示輸入登陸密碼。 密碼爲已建立的雲服務的ECS的登陸密碼。安全

搭建Docker服務

Docker 是一個開源的容器引擎,用於建立、管理和編排容器,能夠輕鬆爲任何應用建立一個輕量級、可移植、自給自足的容器。本步驟將在ECS上部署一個Docker服務,並配置DockerHub的鏡像加速器。服務器

  1. 安裝Docker的依賴庫。
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 添加Docker CE的軟件源信息。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安裝Docker CE。
yum makecache fast &&
yum -y install docker-ce
  1. 啓動Docker服務。
systemctl start docker
  1. 配置DockerHub鏡像加速器。
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
  1. 重啓Docker服務。
systemctl restart docker

準備應用代碼和Dockerfile

本步驟操做將在工做空間下建立一個基於Golang的HelloWorld代碼文件和一個用來構建運行Hello代碼所需環境鏡像的Dockerfile文件。網絡

  1. 建立工做空間。
mkdir -p /tmp/demo && cd /tmp/demo
  1. 在工做空間下建立HelloWorld代碼文件,用來在容器環境中監聽HTTP服務,輸出HelloWorld字符串。
cat > /tmp/demo/main.go << EOF
package main

import (
        "fmt"
        "net/http"
)

func main() {
        http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
                fmt.Fprintf(w, "Hello! World\n")
        })

        fmt.Println("start to serve...")
        http.ListenAndServe(":80", nil)
}
EOF
  1. 在工做空間下建立Dockerfile文件。
cat > /tmp/demo/Dockerfile << EOF
FROM golang:1.12-alpine

# change current working dir
WORKDIR /go/src/app

# copy main.go into /go/src/app
COPY . .

# go build and install the app
RUN go install -v ./...

# run the app by default
CMD ["app"]
EOF

本地構建鏡像並運行鏡像

本步驟將指導您使用Docker基本命令構建和運行鏡app

  1. 使用docker build命令構建鏡像。
docker build . -t demo:v1

命令運行結果以下所示:

在這裏插入圖片描述
說明:
參數.表示指定當前路徑做爲構建上下文,即Dockerfile所在的本地路徑。
參數-t demo:v1指定鏡像名稱和標籤。

  1. 使用docker run命令運行鏡像。
docker run -d -p 8000:80 demo:v1

命令運行結果以下所示:

在這裏插入圖片描述

說明:

參數-d設置容器運行模式爲後臺運行。
參數-p 8000:80將容器內部使用的網絡端口映射到主機上,其中8000爲主機端口,80爲容器內部使用端口。

  1. 使用curl工具訪問容器中的HelloWorld服務。
curl localhost:8000

命令運行結果以下所示:
在這裏插入圖片描述

4.使用docker rm命令刪除容器。

docker rm -f $(docker ps -a | grep "demo:v1" | awk '{print $1}')

命令運行結果以下所示:

在這裏插入圖片描述

建立遠程鏡像倉庫

本步驟操做將指導您使用本身的阿里雲帳號開通容器鏡像服務並建立鏡像倉庫。阿里雲容器鏡像服務默認實例版可無償使用,其使用限制請參見容器鏡像服務計費說明。

1.使用您的阿里雲主帳號登陸容器鏡像服務控制檯

2.【前往開通】》單擊【設置Registry登陸密碼】》設置阿里雲Docker Registry登陸密碼,而後單擊 【肯定】 。
3.在容器鏡像服務控制檯,依次單擊 【默認實例】 > 【命名空間】 > 【建立命名空間】,在 【建立命名空間】 彈框中填寫命令空間名稱,而後單擊 【肯定】 。
在這裏插入圖片描述

  1. 單擊 【本地倉庫】 > 【建立鏡像倉庫】 。在鏡像倉庫列表,選擇上一步建立的鏡像倉庫,單擊 【管理】 ,查看鏡像倉庫詳情。

推送鏡像

本步驟操做將本地鏡像推送到遠程倉庫中,並運行遠程倉庫中的指定版本鏡像。請將本步驟命令中涉及的遠程鏡像地址替換爲步驟六中建立的鏡像倉庫的公網地址。

1.執行如下命令登陸到阿里雲Docker Registry。

docker login --username="用戶名" registry.cn-hangzhou.aliyuncs.com

說明: 請將下面命令中的用戶名替換爲您的阿里雲帳號全名,回車後輸入遠程鏡像倉庫密碼,密碼爲步驟六開通服務時設置的密碼。

請登陸阿里雲用戶中心查看您的主帳號用戶名稱。
在這裏插入圖片描述
命令運行結果以下所示:

在這裏插入圖片描述
2.標記本地鏡像,將其納入遠程倉庫。

docker tag demo:v1 registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1

3.將本地鏡像推送到遠程倉庫。

docker push registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1

命令運行結果以下所示:
在這裏插入圖片描述

  1. 拉取指定版本的遠程鏡像。
docker pull registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1

命令運行結果以下所示:
在這裏插入圖片描述

  1. 運行拉取的遠程鏡像。
docker run -d -p 8000:80 registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1

命令運行結果以下所示:
在這裏插入圖片描述

  1. 訪問HelloWorld服務。
curl localhost:8000

命令運行結果以下所示:
在這裏插入圖片描述

相關文章
相關標籤/搜索