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
- 定時關閉AWS上的EC2機器例項
- 在aws ec2上使用root使用者登入
- Docker上安裝RedisDockerRedis
- 快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLabGitlab
- 在CentOS上安裝dockerCentOSDocker
- 在mac上安裝DockerMacDocker
- linux上安裝Docker(非常簡單的安裝方法)LinuxDocker
- 在ubuntu上安裝docker, 使用國內的安裝源UbuntuDocker
- 在CentOS 8.1上安裝 DockerCentOSDocker
- 在docker上安裝AWVSDocker
- 如何在Windows上安裝DockerWindowsDocker
- Centos7上安裝dockerCentOSDocker
- centos6上安裝dockerCentOSDocker
- 在 Rocky Linux 上安裝最新的 DockerLinuxDocker
- 在Centos7上安裝DockerCentOSDocker
- 如何在 CentOS 7 上安裝 DockerCentOSDocker
- Mac 安裝 AWS-CLIMac
- 使用Putty連線AWS的EC2(Linux系統)Linux
- 使用SecureCRT連線AWS的EC2(Linux系統)SecurecrtLinux
- AWS(amazon ec2)伺服器流量查詢伺服器
- 潘凡談AWS EC2和MongoDB應用MongoDB
- AWS EC2 例項型別命名規則型別
- Docker的安裝Docker
- Docker架構及在Centos7上安裝dockerDocker架構CentOS
- 在Oracle Linux 7.1上安裝DockerOracleLinuxDocker
- CentOS7上安裝和使用DockerCentOSDocker
- 在 Linux 上安裝和使用 DockerLinuxDocker
- AWS EC2 Linux | ssh 使用密碼登入Linux密碼
- 如何從阿里雲ECS遷移到AWS EC2?阿里
- aws安裝jenkins步驟Jenkins
- 解決laravel 連線不上docker 安裝的redisLaravelDockerRedis
- docker的解除安裝Docker
- AWS釋出針對Amazon EC2的Apple macOS例項APPMac
- 后羿 - TenSunS v1.1.0 支援對接AWS的EC2、RDS、ElastiCacheAST
- CI與CD之Docker上安裝JenkinsDockerJenkins
- CentOS上安裝Docker Compose-記錄CentOSDocker
- AWS CodePipeline部署Maven專案至EC2Maven