介紹如何使用Docker構建鏡像,並經過阿里雲鏡像服務分發到ECS服務器,運行該鏡像。linux
容器技術
容器是一個容許咱們在資源隔離的過程當中,運行應用程序和其依賴項的 、輕量的 、操做系統級別的虛擬化技術, 運行應用程序所需的全部必要組件都打包爲單個鏡像,這個鏡像是能夠重複使用的。當鏡像運行時,它是運行在獨立的環境中,並不會和其餘的應用共享主機操做系統的內存、CPU或磁盤。這保證了容器內的進程不會影響到容器外的任何進程。golang
鏡像倉庫(Registry)
Docker的鏡像存儲中心一般被稱爲Registry。當您須要獲取本身私有鏡像時,首先須要登陸Registry,而後拉取鏡像。修改過鏡像以後,您能夠再次將鏡像推送回Registry中去。或者在本地經過Docker鏡像構建的功能生成鏡像,再推送到Registry中。docker
容器鏡像服務ACR(Alibaba Cloud Container Registry)
阿里雲容器鏡像服務ACR默認實例版提供基礎的容器鏡像服務,包括安全的應用鏡像託管能力、精確的鏡像安全掃描功能、穩定的國內外鏡像構建服務以及便捷的鏡像受權功能,從而方便用戶進行鏡像全生命週期管理。shell
1.打開系統自帶的終端工具。
Windows:CMD或Powershell。
MAC:Terminal。json
ssh root@123.123.123.123
命令顯示結果以下:centos
3.輸入yes,贊成繼續後將會提示輸入登陸密碼。 密碼爲已建立的雲服務的ECS的登陸密碼。安全
Docker 是一個開源的容器引擎,用於建立、管理和編排容器,能夠輕鬆爲任何應用建立一個輕量級、可移植、自給自足的容器。本步驟將在ECS上部署一個Docker服務,並配置DockerHub的鏡像加速器。服務器
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast && yum -y install docker-ce
systemctl start docker
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://registry.docker-cn.com"] } EOF
systemctl restart docker
本步驟操做將在工做空間下建立一個基於Golang的HelloWorld代碼文件和一個用來構建運行Hello代碼所需環境鏡像的Dockerfile文件。網絡
mkdir -p /tmp/demo && cd /tmp/demo
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
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
docker build . -t demo:v1
命令運行結果以下所示:
說明:
參數.表示指定當前路徑做爲構建上下文,即Dockerfile所在的本地路徑。
參數-t demo:v1指定鏡像名稱和標籤。
docker run -d -p 8000:80 demo:v1
命令運行結果以下所示:
說明:
參數-d設置容器運行模式爲後臺運行。
參數-p 8000:80將容器內部使用的網絡端口映射到主機上,其中8000爲主機端口,80爲容器內部使用端口。
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.執行如下命令登陸到阿里雲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
命令運行結果以下所示:
docker pull registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1
命令運行結果以下所示:
docker run -d -p 8000:80 registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1
命令運行結果以下所示:
curl localhost:8000
命令運行結果以下所示: