~~NOCACHE~~ ## 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 #docker run時に実行されるコマンド CMD #コンテナ起動時に実行、"一つだけ"記述できます。 その他のコマンドは下記サイトを参照するとわかりやすい。 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) {{tag>AWS Docker AwsBatch ECS ECR}}