目次

AWSでのDocker操作

はじめに

AWSでのDocker利用はECS、AWS Batchで利用する場合が多い。
共通でコンテナを作成、リポジトリに登録するコンテナimageのPUSHまでの操作について記載する。

Docker導入済インスタンスの作成

amzn2-ami-ecs-hvm-2.0.20200115-x86_64-ebs (ami-0cdf0c91f1d10e38e)

#!/bin/bash
yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
systemctl start amazon-ssm-agent

インスタンス内の環境準備

yum install python3 -y
pip3 install awscli --upgrade

export PATH=$PATH:/usr/local/bin
vi ~/.bash_profile //永続としたい場合は左記ファイルに追記

Dockerコンテナの準備

imageのベースは、https://hub.docker.com/_/amazonlinuxを利用して説明する

docker pull amazonlinux
           #↑dockerhubのURLの最後の部分

docker run --name amazonlinuxcontainer -it amazonlinux
                 #↑container名             ↑image名

上記コマンドを実施すると「bash-4.2#」と表示され、コンテナ内を操作できる。
「exit」で抜けられるが、containerがstop状態になるので、再度入りたい場合はcontainerをstartさせる必要がある。

docker start amazonlinuxcontainer
            #↑container名

docker exec -it amazonlinuxcontainer /bin/bash
               #↑container名

container→imageの作成

imageの作成には2つのやり方がある。

docker commitでのimageの作成

docker stop docker amazonlinuxcontainer
                  #↑container名

docker commit amazonlinuxcontainer XXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/XXXXXXXX:latest
             #↑container名         ↑リポジトリURI                                             ↑タグ(特に指定なければlatest)

docker buildでのimageの作成

docker build -t XXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/XXXXXXXXXX:latest
               #↑リポジトリURI                                            ↑タグ(特に指定なければlatest)

buildの場合はDockerfileが必要になるので事前に準備しておくこと。
※AWSBatchのコンテナプロパティで指定するコマンドは、DockerfileのCMDコマンドと競合(コンテナプロパティが優先)するので注意が必要

FROM amazonlinux:latest      #どのイメージを基にするか
   #↑image名  ↑tag名

RUN <command>                #docker run時に実行されるコマンド
CMD <command>                #コンテナ起動時に実行、"一つだけ"記述できます。

その他のコマンドは下記サイトを参照するとわかりやすい。
https://qiita.com/yu-croco/items/9b190f99fae982202c19

imageのPUSH

AWSREGION=ap-northeast-1
$(aws ecr get-login –region ${AWSREGION} –no-include-email)

docker push XXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/XXXXXXX:latest
       #↑リポジトリURI                                       ↑タグ(特に指定なければlatest)