Docker 이전 게시글 모음
1. 도커 컴포즈를 사용하는 이유
여러 개의 컨테이너를 하나의 서비스로 정의해 컨테이너 묶음으로 관리할 수 있다.
한 번에 여러 종류의 컨테이너를 생성, 시작, 삭제를 할 수 있게 해준다.
2. 도커 컴포즈 설치
#curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-'uname -s'-'uname -m' -o /usr/local/bin/docker-compose
#chmod +x /usr/local/bin/docker-compose
3. 도커 컴포즈 사용하기
컨테이너의 설정이 정의된 YAML 파일을 작성한다. (주의할 것 : tab 대신 들여쓰기는 space 2번)
파란색으로 표시한 stdin_open:true tty: true는 도커 컴포즈 오류로 인해 추가한 명령어이다. 자세한 설명은 4번에 추가하였다.
1) version
이는 compose file format을 뜻하는데, 다음 표를 참고하여 docker engine 버전에 맞게 선택할 수 있다.
버전 '3.7'을 할까 했지만, '3.0'이 도커 스웜과 호환이 된다고해서 '3.0'으로 설정하였다.
2) services
묶어서 관리하고 싶은 컨테이너들을 하나의 서비스로 묶는다.
나는 ipfs host를 대량 생성하는 것이 목적이기 때문에 service에 여러 종류의 컨테이너가 필요없었다.
따라서 서비스 명으로는 ipfs-host가 유일했고, 이는 go-ipfs 가 깔려있는 이미지(go-ipfs:0.0)를 가져온다.
도커 컴포즈를 통해서 이미지를 여러 개 복사하려고한다.
(솔직히 docker run 여러번하면 되지만...이렇게 도커컴포즈를 통해 생성한 컨테이너들은 동시에 docker start, docker rm이 가능하기 때문에 관리가 편리하다.)
3) 도커 컴포즈
이 명령어 한 줄로 ipfs-host를 6개 생성하였다.
$docker-compose scale ipfs-host=6 |
4. 도커 컴포즈 오류
yml 파일에 stdin_open: true tty: true 를 추가한 이유는, 도커 컴포즈를 통해 만든 컨테이너에 접근이 불가능했기 때문이다.
도커는 컨테이너에 docker start [컨테이너] , docker attach [컨테이너] 를 통해 접근하는데,
도커 컴포즈를 한 후 컨테이너에 접근할 때, docker start 후 바로 exit 되어버려 attach가 불가능했다.
구글링을 통해 찾아봤을 때 버전의 문제라는 사람들도 있었고,
도커 컴포즈의 버그라고 말하는 사람들도 있었는데,
어느 한 게시글에서 위 명령어를 추가함으로써 해결한 것을 찾았다. (올레!)
stdin_open: true tty: true 는 docker run -it 의 역할로, 셸 입출력이 가능하도록 한다. (대화형 셸)
'AWS, Docker > Docker' 카테고리의 다른 글
Docker 활용하기 <1. 웹서버 설치 및 실행> (0) | 2022.02.17 |
---|---|
Docker 시작하기 <Error 기록> (0) | 2022.02.17 |
Docker 시작하기 <3.Image> (0) | 2020.06.28 |
Docker 시작하기 <2.컨테이너> (0) | 2020.06.27 |
Docker 시작하기 <1.설치와 재설치> (0) | 2020.06.27 |