도커:compose
편집하기
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
==개요== 여러 컨테이너를 한번에 쌓아올려 이들을 한번에 관리할 때. 의존관계에 있는 컨테이너들을 관리할 때 사용한다. ===설치=== {| class="wikitable" !과정 !설명 !방법 |- |버전 확인 |최신 버전을 다음 링크에서 확인하자. |https://github.com/docker/compose/releases |- |설치 |위에서 얻은 버전을 우측의 명령에 적용하여 설치한다. | sudo curl -L "https://github.com/docker/compose/releases/download/설치버전<nowiki/>/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |- |권한 설정 | | sudo chmod +x /usr/local/bin/docker-compose |- |확인 | |docker-compose -v |} ==기초사용== 기본적으로 해당 파일이 있는 곳에서 실행한다. 다른 곳에 있다면 -f 옵션으로 파일경로를 지정한다. {| class="wikitable" !의도 !설명 !방법 |- |이미지 만들기 | |docker-compose build |- |컨테이너 생성, 실행 | {| class="wikitable" !옵션 !설명 |- | -d |백그라운드에서 실행. |- | -f |파일 경로를 지정할 수 있다. docker-compose -f [파일경로] |} |docker-compose up -d |- |컨테이너 정지 |컨테이너 일시정지. |docker-compose stop |- |컨테이너 시작 | |docker-compose start |- |컨테이너 재시작 | |docker-compose restart |- |컨테이너 다운 |compose파일과 관련 있는 컨테이너를 정지, 삭제시킨다. |docker-compose down |} ==기본내용== 다음과 같은 형태로 크게 서비스, 네트워크, 볼륨을 정의한다.<syntaxhighlight lang="yaml"> version: '3' # Compose정의파일의 버전. 소수점 안쓰면 최신버전. services: 서비스명: image: 이미지:태그 # 태그 안쓰면 latist buils: Dockerfile경로 # 안써도 됨. 상대경로 지정 가능. (./디렉토리) 서비스명2: image: mariadb restart: always environment: MYSQL_RANDOM_ROOT_PASSWORD: 'yes' volumes: esdata: driver: local </syntaxhighlight>yml 확장자의 파일로 쓰이는데, 들여쓰기로 계층구조를 나타낸다. ===서비스=== 다음과 같은 형태로 계층화 하여 작성한다.<syntaxhighlight lang="yaml"> services: 서비스명: image: 이미지:태그 </syntaxhighlight> {| class="wikitable" !요소 !설명 !방법 |- |이미지 지정 |(필수) 이미지를 지정한다. 태그를 안쓰면 latist. |<syntaxhighlight lang="yaml"> image: 이미지:태그 </syntaxhighlight> |- |컨테이너 이름 지정 |compose 파일로 실행하면 이름을 자동으로 생성하는데, 이게 불편할 때 사용. |<syntaxhighlight lang="yaml"> container_name: 컨테이너명 </syntaxhighlight> |- |도커파일 지정 |도커파일의 경로를 지정한다. <code>./하위디렉터리</code> 형태로 상대경로로도 가능하다. 도커파일의 이름이 Dockerfile이 아닌 경우, 아래처럼 작성한다. |<syntaxhighlight lang="yaml"> build: . # 현재경로 </syntaxhighlight><syntaxhighlight lang="yaml"> build: context: ./하위디렉터리 dockerfile: 파일명 </syntaxhighlight> |- |포트열기 |컨테이너가 공개하는 포트를 지정한다. 여러개를 열 수 있다. |<syntaxhighlight lang="yaml"> ports: - 호스트포트:컨테이너포트 </syntaxhighlight> |- |컨테이너 연결 |별명(앨리어스)를 지정할 수도 있다. 연결해두면 해당 컨테이너에서 http://서비스명 형태로 접근 가능. |<syntaxhighlight lang="yaml"> links: - 서비스명 - 서비스명:앨리어스명 </syntaxhighlight> |- |링크포트 열기 |링크된 컨테이너 사이에서만 포트를 공유할 경우. |<syntaxhighlight lang="yaml"> expose: - "포트번호" </syntaxhighlight> |- |의존관계 지정 |시작 순서를 제어한다.(해당 컨테이너가 이용 가능할 때까지 기다리진 않는다.) |<syntaxhighlight lang="yaml"> depends_on: - 의존하는서비스(ex.mysql) </syntaxhighlight> |- |환경변수 지정 |컨테이너 안의 환경변수를 지정한다. yes, no, true, false같은 bool연산자는 따옴표로 둘러싼다. |<syntaxhighlight lang="yaml"> environment: 변수명: 값 변수명2: 'yes' </syntaxhighlight> |- |환경변수 파일 지정 |설정할 환경변수가 많거나, 보안과 관련된 경우, 파일만 따로 보관하기도 한다. 경로는 상대경로, 절대경로 둘 다 가능. |<syntaxhighlight lang="yaml"> env_file: - ./경로1 - ./경로2 </syntaxhighlight> |} === 이외 서비스 설정 === {| class="wikitable" !요소 !설명 !방법 |- |working_dir |도커를 처음 시작하면 열, 컨테이너 내의 디렉터리 | |} ===볼륨=== {| class="wikitable" !요소 !설명 !방법 |- |볼륨 지정 |호스트디렉토리를 컨테이너디렉토리에 덮어쓴다. 호스트디렉토리는 컨테이너가 사라져도 유지. |<syntaxhighlight lang="yaml"> services: 서비스명: volumes: - 호스트디렉토리/:컨테이너디렉토리 </syntaxhighlight> |- |다른 컨테이너로부터 모든 볼륨 마운트 | |<syntaxhighlight lang="yaml"> services: 서비스명: volumes_from: - 컨테이너명 </syntaxhighlight> |} =관련에러= {| class="wikitable" !에러 !원인 !해결법 |- |docker exited with code 0 |시작 시 bash가 안 붙어서 발생 |해당 서비스 아래에 다음 코드 추가. stdin_open: true tty: true |} [[분류:도커]]
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보