AmazonECR 및 EC2를 사용하여 AWS에서 Docker 이미지를 빠르게 이동
ECS도 대체로 검증이 끝났고 서비스 측은 그쪽을 이용할 예정이지만 기초를 되돌아본다는 뜻을 정리했다.
Docker
한 달 동안 도커를 만지작거렸지만, 여전히 손 옆에 있는 개발 환경에서 활동하는 것들, 다른 환경에서 그렇게 행동하는 것은 없는 장점이다.
지금까지 개발환경 OK→ST를 처음부터 다시 만들기→정식 공연도 같은 일을 해왔지만, 호스트 쪽에서 Docker 엔진을 넣었을 뿐, 실제 과정은 그렇게 개발환경의 물건을 이식할 수 있는 곳이 상당히 덥다.이런 인상.
할 일
ECR 사용 준비ECR에 Docker 이미지 등록EC2 제작EC2에서 ECR에서 pull로 나오는 Docker 컨테이너 설정
이른바 ECR
공식 이름 EC2 Container Registry
Amazon에서 제공하는 완전 관리 Docker 컨테이너 레지스트리입니다.
ECS(EC2 Container Service) 및 EB(Elastic Beanstalk)를 쉽게 설계할 수 있는 Docker 이미지 관리 솔루션
ECR로 뭐가 좋아요?
ECR 사용 준비(로컬에서 구현)
참조AWS Command Line Interface 설치 AWS CLI를 휴대용 시스템에 설치합니다.
기본적으로 AWS CLI 를 통해 수행됩니다.
1. 창고 만들기 및 확인
$aws ecr create-repository --repository-name tst-shnagai
{
"repository": {
"registryId": "xxxxx",
"repositoryName": "tst-shnagai",
"repositoryArn": "arn:aws:ecr:ap-northeast-1:xxxxx:repository/tst-shnagai",
"createdAt": 1496229520.0,
"repositoryUri": "xxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai"
}
}
GUI의 관점에서 볼 때 창고는 ECS 서비스의'창고'로 사용할 수 있다2.ecr 입장
세션이 12시간이라서 다음날 끝날 것 같아요.
## これで一発
$ $(aws ecr get-login --region ap-northeast-1)
Flag --email has been deprecated, will be removed in 17.06.
Login Succeeded
## $()の式展開を使わない場合
$ aws ecr get-login --region ap-northeast-1
docker login -u AWS -p eyJwYXlsb2FkIjoicURLTkxCTFhobUJuSTRxSDRNSUFBOEprc0txSnVuTVgrdzRzNkl4NU5rRDUxM0N...
### 標準出力の結果を貼り付けてログイン
$ docker login -u AWS -p eyJwYXlsb2FkIjoicURLTkxCTFhobUJuSTRxSDRNSUFBOEprc0txSnVuTVgrdzRzNkl4NU5rRDUxM0N...
Login Succeeded
ECR에 Docker 이미지 등록(로컬 시스템에서 구현)
수중에 있는 어떤 Docker 인상을ECR에 push하는 절차
손 옆에 Docker에 대한 인상을 ECR에 표시한 후 ECR에 push
1. docker tag 명령으로 표시
이번에는 예를 들어 수중에 있는'appache td'라는 docker 이미지에 대해 ECR의 규칙에 따라 이름으로 표시한다
## 元々のイメージ
$ docker image list |grep apache_td
apache_td latest 2c42dd3f5e5c 13 days ago 1.4GB
## タグ付けを実施
$ docker tag apache_td:latest xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai:latest
## imageIDは変わらないので、下記のような検索するとapache_tdがECRに対応したイメージとしてタグ付けされたことがわかる
$ docker image list |grep 2c42dd
xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai latest 2c42dd3f5e5c 13 days ago 1.4GB
apache_td latest 2c42dd3f5e5c 13 days ago 1.4GB
2. ECR에서 1로 표시된 Docker Image push
$ docker push xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai:latest
The push refers to a repository [xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai]
47d1cbb6b480: Layer already exists
...
latest: digest: sha256:14b7a5d491fa694c00f026bbc6c6cd09e0ddc63d0e586569a0de42a8ce7ec5d1 size: 2411
GUI에서 서명과 눌린 날짜와 시간을 확인하고 이미지가 무사히 향상되었는지 확인합니다이제 ECR에서 Docker 이미지에 로그인하면 완료!!
EC2 인스턴스 생성하기
1. 일반적인 상황에 따라 EC2 실례를 만든다. (OS는 기본적으로awscli를 포함하는amazon linux라면 비교적 쉽다)
IAMRole에 대해서만 [AmazonEC2 Contaainer Registry ReadOnly] 정책 제공
2. docker 설치
AWS의 공식 문서에만 따라 하기 때문에 명령만 나열합니다
Docker 설치
ec2-user에서 docker 명령은sudo 없이도 사용할 수 있습니다.
$ sudo yum update -y
$ sudo yum install -y docker
$ sudo service docker start
### ec2-userでsudoなしでdockerコマンドを打てるようにするため
$ sudo usermod -a -G docker ec2-user
###再ログイン
$ docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.03.1-ce
EC2에서 ECR에서 pull로 나오는 Docker 컨테이너 설정(EC2에서 구현)
1. ECR 진입
IAMRole 없이 로그인을 통해 팝업
$ $(aws ecr get-login --region ap-northeast-1)
Login Succeeded
2. ECR에서pull Docker 이미지
## ECRにアップロードしたイメージをpull
$ docker pull xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai:latest
latest: Pulling from tst-shnagai
996fe98f55d8: Pull complete
...
e6b377ddca6e: Pull complete
Digest: sha256:14b7a5d491fa694c00f026bbc6c6cd09e0ddc63d0e586569a0de42a8ce7ec5d1
Status: Downloaded newer image for xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai:latest
## 手元のイメージとして登録されたことを確認
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai latest 2c42dd3f5e5c 13 days ago 1.4 GB
3. docker 컨테이너 시작
pull 그림에서 용기 시작하기
## ホストの8080ポートにマッピングするtestという名前のコンテナを起動する
$ docker run -d --name test -p 8080:80 xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai:latest
dbbb74b6ebe95666d356250de8310c19403078f53e020069e9a6d10e479b2873
## -lオプションで最後に起動したコンテナを表示
$ docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dbbb74b6ebe9 xxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/tst-shnagai:latest "/bin/sh -c '/bin/..." 4 seconds ago Up 4 seconds 0.0.0.0:8080->80/tcp test
## 動作確認として、ホストの8080に対してcurlでリクエストしてみる
$ curl localhost:8080
version 1.2
총결산
일반적으로 AWS에서 ECR을 사용하여 docker 컨테이너를 시작하는 프로세스입니다.docker를 손으로 만지는 사람이라면 특별히 걸려 넘어지지 않는 내용이라고 생각해요.
ECS는 기본 운용(해당 발언에서 EC2 이후라고 부른다)을 추상화하고, 클러스터라는 EC2 합체에 ELB, 오토스케일링 등을 부착해 사용하는 서비스이기 때문에 이를 제대로 이해하지 못하면 진전에 큰 차이가 있다는 인상을 준다.
배후에서 무엇을 하고 있는지 이해하는 것이 중요하다.
Reference
이 문제에 관하여(AmazonECR 및 EC2를 사용하여 AWS에서 Docker 이미지를 빠르게 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shnagai/items/196c6affbddedebced5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)