도커:컨테이너 관련

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2023년 1월 3일 (화) 12:43 판 (→‎이외 사용)
둘러보기로 이동 검색으로 이동
  1. 틀:Docker


  1. Docker
  2. 도커:설치
  3. 사용법
    1. 도커:이미지 관련
    2. 도커:컨테이너 관련

개요

컨테이너 사용과 관련된 기초적인 지식.

기초 사용

생성

  • 기본적으로 docker run 옵션 이미지이름:태그 형태로 컨테이너를 생성한다.
  • 로컬에 이미지가 없으면 자동으로 이미지를 받아온다.

옵션은 아래와 같은 것들이 있다. 가능하면 옵션들은 이미지 이름 앞에 두는 편이 좋다.

옵션 설명
-v 호스트경로:컨테이너경로 호스트의 파일을 컨테이너에 연결한다.(-v옵션 여러 개 사용 가능)
--expose 포트번호 다른 컨테이너에서 접속할 수 있는 포트번호를 설정한다.
--link 컨테이너:별칭 컨테이너를 다른 컨테이너와 연결해서 실행한다.(연결할 것이 실행되어 있어야 함)

호스트파일에 IP주소가 설정되어 별칭으로 접속할 수 있다.

/별칭:포트번호/연결한컨테이너하위디렉터리

(포트번호는 docker ps로 확인 가능)

-p 호스트포트:컨테이너포트 포트를 연결한다.
-d 데몬으로 실행(백그라운드에서 실행)
--privileged 모든 기능을 사용할 수 있게끔, 권한을 부여한다는 의미.

IP주소 등 네트워크 설정을 만질 수 있다.

/sbin/init과 함께 사용한다.

-e 환경변수 설정. 보통 다음과 같이 UTF-8로 인코딩함을 알려주기 위해 사용.

-e LANG=ko_KR.UTF-8

--restart=always docker를 재시작 해도 자동으로 구동하라는 옵션.

이외 사용

의도 설명 방법
재실행 이미 만들어진 컨테이너가 종료되었을 때 다시 실행한다. docker start 컨테이너
종료 도커를 재시작 할 때 도커 내부에서 서비스도 함께 종료된다.

systemctl apache2 start, service start mysql와 같은 명령으로 서비스를 실행해주어야 한다.

docker stop 컨테이너
현재 실행 컨테이너 확인 -a 옵션을 붙이면 종료된 컨테이너도 볼 수 있다. docker ps
컨테이너 내부로 접속 docker exec -it 컨테이너명 /bin/bash
컨테이너 삭제 docker rm 컨테이너

파일 관련

본 서버와 파일을 교환하는 등의 작업이 필요하다.

의도 설명 방법
호스트에서 컨테이너로 호스트의 파일을 컨테이너로 옮긴다. docker cp 호스트경로 컨테이너:컨테이너경로
컨테이너에서 호스트로 컨테이너의 파일을 호스트로 옮긴다. docker cp 컨테이너:컨테이너경로 호스트경로

ex) docker cp hello:/etc/file.conf ./ # 현재경로로 컨테이너의 파일을 꺼낸다.

변경파일 확인 컨테이너가 실행되며 변경된 파일목록 출력.

기준은 컨테이너를 생성한 이미지 기준.

A: 추가된 파일

C: 변경된 파일

D: 삭제된 파일

docker diff 컨테이너

컨테이너 옵션 변경

컨테이너가 실행되고 있는 상황에서 옵션을 변경할 수 없다. 굳이 컨테이너를 이미지화 했다가 다시 옵션을 주어 실행해야 한다.

컨테이너를 이미지화

보통 컨테이너를 돌리고 있는데 여기에 포트를 추가하거나 볼륨을 추가하고 싶을 때 거쳐야 한다.

과정 설명 방법
이미지로 저장 변경사항을 이미지로 생성한다.
옵션 설명
-a, --author="생성자" 생성자 정보를 기입한다.
-m, --message="코멘트" 코멘트를 단다.
docker images로 확인한다.

예시) docker commit -a "id8436" -m "JHwiki" 94b5dde4a907 id8436/jhwiki

docker commit 옵션 컨테이너 이미지:태그

이미지, 태그는 소문자로만 가능하다.

포트, 볼륨 추가하기

기존 사용중인 컨테이너에 포트, 볼륨, 옵션을 변경하려면 새로 만드는 방법밖에 없다.(이부분은 굉장히 아쉽다;;)

  1. 컨테이너를 이미지로 만든다.(방법은 위 참조)
  2. 기존 컨테이너를 지운다.
  3. 필요한 포트, 볼륨옵션을 주어 다시 실행.