Docker Mongo
Dockerfile의 모든 내용을 알면 좋겠지만 이미 잘 구성된 내용이 있기 때문에 그 정보를 이용한다.
Docker Library에 이미 버전별로 docker image를 만들기위한 Dockerfile이 만들어져 있다.
#
docker 기본 명령docker build
: Dockerfile로 부터 image 빌드하기docker images
: show imagesdocker rm
: remove containerdocker rmi
: remove imagesdocker ps
: show container processdocker run
: instance 가동docker exec
: 실행중인 container 내부에 명령을 실행docker stop
: container 실행 중지
#
docker image build#
로컬파일로 build하기원하는 버전의 폴더에 들어가서 Dockerfile
과 entrypoint.sh
두 개의 파일을 가져온다. window는 shell script 파일은 없다.
두 파일을 다운로드한 폴더에서 아래 명령을 실행한다. docker images
명령으로 모든 image 목록을 조회한다.
#
git 저장소 url로 build하기또는 아예 Dockerfile이 있는 Url경로를 지정해도 된다.
#
docker pull명령으로 build하기library라고 하는 곳에 tag를 붙여서 image를 만들어 두고 pulling 하는 방식.
이 명령은 다 만들어진 image를 가져오는 방법이기 때문에 실패가능성이 낮고 빠르게 설치를 완료할 수 있다.
#
image를 이용해 container instance 만들기아래 명령으로 새로운 instance를 만들고 실행한다.
#
구동중인 container에 명령 실행mongod 를 실행할 수도 있다.
#
docker-mongo db에 연결하기외부(host)에서 docker-mongo의 db에 연결하려면 port를 publish해 주어야 한다.
연결정보를 알기 위해 inspect
명령을 이용해 mongo가 들어 있는 container의 정보를 확인할 수도 있다.
#
container, image 중지, 제거!!! 이 명령 실행은 주의 해야 한다. 이미지를 지울때 디스크도 지워질 수 있다.
container의 실행을 중지시키려면 docker stop
명령을 쓴다.
중지상태의 모든 container를 보려면 docker ps -all
옵션을 사용한다.
container, image 지우기
#
docker image를 aws container에 올리기- aws ecs 에 registry만들기(ecr)
- aws cli로 aws ecs get-login 명령 실행 - docker login
- aws ecr 페이지에 보면 명령을 예시한 부분이 있는데 이걸 그대로 사용하면 안된다.
- 예시로 제시된 명령의 서버 경로에 문제가 있다. 이건 아마도 현재 로컬에 저장된 aws의 config를 기준으로 get-login 명령에 의해 login 정보가 생성되기 때문인것 같다.
- $(aws ecr get-login --no-include-email --region ap-northeast-2 --registry-ids 489848783055)
- registry id를 직접 입력해 주어야 한다.
- 그런데 로컬에서 사용중인 사용자와 push 할 ecr의 계정이 일치하지 않는 경우 권한 오류 발생한다.
- 이 경우 해당 사용자의 계정으로 로그인 문자를 만들어주기 위해 --profile 을 사용한다.
- 로컬에 profile 추가하는 방법은 https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-getting-started.html
- 결론은 최종 로그인 명령은 $(aws ecr get-login --no-include-email --region ap-northeast-2 --registry-ids 489848783055 --profile user2) 가 되겠다.
- 일단 ecr에 push 하기 위한 image를 tagging 해야 한다.
- docker tag mongo:latest 489848783055.dkr.ecr.ap-northeast-2.amazonaws.com/onlydel-test-repo:latest
- ecr에 push
#
이후 작업들- ecs cluster 만들기
- service 만들기
- service task 정의
cluster, service, task를 만드는 작업은 겉으로보기엔 굉장히 평온해 보이지만 내부적으로 많은 리소스의 생성과 설정작업이 연관되어 있다. 이 복잡한 작업들을 한 번에 모두 이해할 수는 없지만, 전체적인 흐름과 구조를 파악하고 있어야 한다.
#
service, task의 생성으로 자동 발생한 route53 hosted-zone의 삭제 이슈어떤 절차에 의해 삭제를 해야 하는건진 모르겠지만, 일단 남아 있는 hosted-zone을 콘솔에서 지우지 못하는 문제가 있다. 이 놈들은 aws cli를 통해 service영역을 삭제해야 한다.