AWS EC2 上安裝 Docker 的示例
關於 AWS EC2 的建立,參見: AWS 第一個 NodeJS 應用程式
關於 Docker,參加:Docker 學習筆記
目前我已經有了兩個 AWS 的 EC2 例項:
- 公有 IP:
18.222.176.214
- 公有 IP:
52.14.52.46
在 AWS EC2 安裝 Docker
我們在主機 18.222.176.214
和 52.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.46
:ssh -i "XiangSecret.pem" ec2-user@52.14.52.46
建立名為 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.214
:ssh -i "XiangSecret.pem" ec2-user@18.222.176.214
通過 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
啟動後,通過如下兩種方式來訪問頁面:

相關文章
- Udemy AWS SAA - EC2
- Docker上安裝RedisDockerRedis
- 在aws ec2上使用root使用者登入
- 快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLabGitlab
- 在CentOS上安裝dockerCentOSDocker
- centos 線上安裝 dockerCentOSDocker
- 在docker上安裝AWVSDocker
- 在ubuntu上安裝docker, 使用國內的安裝源UbuntuDocker
- 在 Rocky Linux 上安裝最新的 DockerLinuxDocker
- Centos7上安裝dockerCentOSDocker
- 在CentOS 8.1上安裝 DockerCentOSDocker
- 如何在Windows上安裝DockerWindowsDocker
- 基於ARM的AWS EC2例項上的PG跑起來效能怎麼樣?
- AWS CodePipeline部署Maven專案至EC2Maven
- 在Centos7上安裝DockerCentOSDocker
- 在Oracle Linux 7.1上安裝DockerOracleLinuxDocker
- aws安裝jenkins步驟Jenkins
- Docker的安裝Docker
- AWS EC2 例項型別命名規則型別
- 將AWS EC2資源下載到本地
- 如何從阿里雲ECS遷移到AWS EC2?阿里
- AWS(amazon ec2)伺服器流量查詢伺服器
- AWS EC2 Linux | ssh 使用密碼登入Linux密碼
- Docker架構及在Centos7上安裝dockerDocker架構CentOS
- CentOS上安裝Docker Compose-記錄CentOSDocker
- CI與CD之Docker上安裝JenkinsDockerJenkins
- CentOS7上安裝和使用DockerCentOSDocker
- AWS Linux2 安裝 nginxLinuxNginx
- Linux 下的 Docker 安裝與使用 Docker-compose 安裝LinuxDocker
- docker的解除安裝Docker
- AWS釋出針對Amazon EC2的Apple macOS例項APPMac
- 解決laravel 連線不上docker 安裝的redisLaravelDockerRedis
- docker 安裝Docker
- 安裝dockerDocker
- 安裝 dockerDocker
- 如何在ubuntu[linux] 上用docker安裝SqlserverUbuntuLinuxDockerSQLServer
- docker安裝及解除安裝Docker
- 后羿 - TenSunS v1.1.0 支援對接AWS的EC2、RDS、ElastiCacheAST