AWS EC2 上安裝 Docker

在 AWS EC2 安裝 Docker

參見:Amazon ECS 的 Docker 基本知識

我們在主機 18.222.176.21452.14.52.46 都安裝 Docker。

安裝最新的 Docker Community Edition 程序包:
sudo yum install -y docker

啓動 Docker 服務:
sudo service docker start

將 ec2-user 添加到 docker 組,以便您能夠執行 Docker 命令,而無需使用 sudo:
sudo usermod -a -G docker ec2-user

退出,再重新登錄以接受新的 Docker 組權限。您的新 SSH 會話將具有相應的 Docker 組權限,而無需再使用 sudo

我們可以使用 docker --version 來查看 Docker 的版本:

我們可以使用 docker info 來查看 Docker 的運行信息,可以看出目前既沒有鏡像 Image,也沒有容器 Container:

創建簡單 Web 應用程序的 Docker 鏡像

目標:我們在主機 52.14.52.46 上創建鏡像,然後在主機 18.222.176.214 上獲取鏡像。

首先登錄到主機 52.14.52.46ssh -i "XiangSecret.pem" [email protected]

創建名爲 Dockerfile 的文件。Dockerfile 是一個清單文件,描述了用於 Docker 鏡像的基本鏡像以及要安裝的項目以及在此項目上運行的內容。
touch Dockerfile

編輯 Dockerfile 並添加以下內容:
此 Dockerfile 使用 Ubuntu 12.04 鏡像。RUN 指令將更新包緩存,安裝一些適用於 Web 服務器的軟件包,然後將 Hello World! 內容寫入到 Web 服務器的文檔根目錄。EXPOSE 指令在容器上公開端口 80,CMD 指令啓動 Web 服務器。

FROM ubuntu:12.04

# Install dependencies
RUN apt-get update -y
RUN apt-get install -y apache2

# Install apache and write hello world message
RUN echo "Hello World!" > /var/www/index.html

# Configure apache
RUN a2enmod rewrite
RUN chown -R www-data:www-data /var/www
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2

EXPOSE 80

CMD ["/usr/sbin/apache2", "-D",  "FOREGROUND"]

從 Dockerfile 生成 Docker 鏡像:
docker build -t hello-world . 注意該命令最後有一個 . 表示 Dockerfile 在當前目錄。

通過 docker images 以驗證是否已正確創建鏡像:

驗證是否已正確創建鏡像

運行新構建的鏡像。 -p 80:80 選項將容器上公開的端口 80 映射到主機系統上的端口 80。
docker run -p 80:80 hello-world

啓動後,通過如下兩種方式來訪問頁面:

通過 docker ps 來查看正在運行的 Docker 容器:

通過 Ctrl + C 來停止 Docker 容器。

將鏡像推送至 Amazon Elastic Container Registry

首先需要通過 aws configure 配置好 AWS 賬號

如何可以找到 AWS Access Key ID 和 AWS Secret Access Key 呢?通過下圖的方式:

 

創建用於存儲 hello-world 鏡像的 Amazon ECR 存儲庫。

aws ecr create-repository --repository-name hello-world

在輸出中記下 "repositoryUri": "679435956173.dkr.ecr.us-east-2.amazonaws.com/hello-world"
PS:其中 679435956173 是 AWS Account Id。

使用上一步中的 repositoryUri 值標記 hello-world 鏡像:
docker tag hello-world 679435956173.dkr.ecr.us-east-2.amazonaws.com/hello-world

運行 aws ecr get-login --no-include-email 命令以獲取您的註冊表的 docker login 身份驗證命令字符串。
運行上一步中返回的 docker login 命令。此命令提供一個在 12 小時內有效的授權令牌。

 

最後,將鏡像推送至 Amazon ECR:
docker push 679435956173.dkr.ecr.us-east-2.amazonaws.com/hello-world

在另外一臺主機上獲取鏡像

參見:拉取鏡像

通過上面的步驟,我們已經在主機 52.14.52.46 上創建了鏡像,現在我們在主機 18.222.176.214 上獲取鏡像。

首先登錄到主機 18.222.176.214ssh -i "XiangSecret.pem" [email protected]

通過 aws ecr describe-repositories 列出一個註冊表中的存儲庫。我們可以看到 hello-world 這個鏡像的存儲庫

通過 aws ecr describe-images 命令描述存儲庫中的鏡像。
aws ecr describe-images --repository-name hello-world

運行 aws ecr get-login --no-include-email 命令以獲取您的註冊表的 docker login 身份驗證命令字符串。
運行上一步中返回的 docker login 命令。此命令提供一個在 12 小時內有效的授權令牌。

通過 docker pull 命令拉取鏡像。
鏡像名稱格式應爲 registry/repository[:tag] 以便按標籤拉取,或爲 registry/repository[@digest] 以便按摘要拉取。
docker pull 679435956173.dkr.ecr.us-east-2.amazonaws.com/hello-world:latest

 

通過 docker images 以驗證是否已正確獲得鏡像:

 

運行新構建的鏡像。 -p 80:80 選項將容器上公開的端口 80 映射到主機系統上的端口 80。
docker run -p 80:80 679435956173.dkr.ecr.us-east-2.amazonaws.com/hello-world

啓動後,通過如下兩種方式來訪問頁面:

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