리눅스 docker
IT 위키
더 많은 작업
도커 컨테이너와 이미지를 만들고 실행·관리하는 명령행 도구이다.
- 경로 : /usr/bin/docker
- 패키지 : docker-ce (Docker 공식 저장소에서 설치)
- 데몬 : dockerd (systemctl start docker)
- Rocky Linux 8 기본 저장소에는 도커 대신 호환 도구인 podman이 들어 있으며, podman-docker 패키지를 설치하면 docker 명령으로 podman을 쓸 수 있다.
- 이미지·컨테이너 데이터 기본 위치 : /var/lib/docker/
# docker [옵션] 명령 [인수]
- 이미지
- pull 이미지[:태그] : 레지스트리(기본 Docker Hub)에서 이미지를 내려받는다. 태그를 생략하면 latest이다.
- images : 로컬에 있는 이미지 목록을 출력한다.
- build -t 이름[:태그] 경로 : 경로의 Dockerfile로 이미지를 만든다.
- rmi 이미지 : 이미지를 삭제한다.
- tag 원본 대상 : 이미지에 새 이름(태그)을 붙인다.
- push 이미지 : 이미지를 레지스트리에 올린다.
- 컨테이너
- run [옵션] 이미지 [명령] : 이미지로 새 컨테이너를 만들고 실행한다.
- ps : 실행 중인 컨테이너 목록을 출력한다. -a를 붙이면 중지된 컨테이너도 출력한다.
- exec [옵션] 컨테이너 명령 : 실행 중인 컨테이너 안에서 명령을 실행한다.
- stop 컨테이너 / start 컨테이너 / restart 컨테이너 : 컨테이너를 중지·시작·재시작한다.
- rm 컨테이너 : 중지된 컨테이너를 삭제한다. -f를 붙이면 실행 중인 컨테이너도 강제로 삭제한다.
- logs [-f] 컨테이너 : 컨테이너의 표준 출력 로그를 출력한다.
- inspect 대상 : 컨테이너나 이미지의 상세 정보를 JSON으로 출력한다.
- cp : 컨테이너와 호스트 사이에 파일을 복사한다.
- commit 컨테이너 이미지 : 컨테이너의 현재 상태를 새 이미지로 저장한다.
- -d, --detach : 컨테이너를 백그라운드에서 실행한다.
- -i, --interactive : 표준 입력을 열어 둔다.
- -t, --tty : 가상 터미널을 할당한다. 보통 -it로 함께 써서 셸에 접속한다.
- -p 호스트포트:컨테이너포트 : 호스트 포트를 컨테이너 포트에 연결(포워딩)한다.
- -P : 이미지에 EXPOSE된 모든 포트를 호스트의 임의 포트에 연결한다.
- -v 호스트경로:컨테이너경로 : 호스트 디렉터리나 볼륨을 컨테이너에 마운트한다.
- --name 이름 : 컨테이너 이름을 지정한다.
- -e 변수=값 : 환경 변수를 지정한다.
- --rm : 컨테이너가 종료되면 자동으로 삭제한다.
- --restart 정책 : 재시작 정책(no, on-failure, always, unless-stopped)을 지정한다.
- FROM : 기반 이미지를 지정한다.
- RUN : 이미지 빌드 중 명령을 실행한다.
- COPY / ADD : 파일을 이미지 안으로 복사한다. ADD는 URL과 압축 파일 자동 해제도 지원한다.
- WORKDIR : 작업 디렉터리를 지정한다.
- ENV : 환경 변수를 지정한다.
- EXPOSE : 컨테이너가 사용할 포트를 명시한다.
- CMD / ENTRYPOINT : 컨테이너 시작 시 실행할 명령을 지정한다.
# nginx 이미지를 내려받아 백그라운드로 실행하고, 호스트 8080 포트를 컨테이너 80 포트에 연결한다. # docker pull nginx # docker run -d --name web -p 8080:80 nginx # 호스트 디렉터리를 웹 문서 경로에 마운트하여 실행한다. # docker run -d --name web2 -p 8081:80 -v /srv/html:/usr/share/nginx/html nginx # 실행 중인 컨테이너에 셸로 접속한다. # docker exec -it web /bin/bash # 모든 컨테이너와 이미지 목록을 확인한다. # docker ps -a # docker images # 컨테이너를 중지하고 삭제한다. # docker stop web # docker rm web # 현재 디렉터리의 Dockerfile로 이미지를 만든다. # docker build -t myapp:1.0 .
- docker run의 -d, -it, -p, -v, --name 옵션의 의미와 포트 연결 형식(호스트:컨테이너)이 자주 출제된다.
- ps는 실행 중인 컨테이너만, ps -a는 전체 컨테이너를 보여 준다.
- 컨테이너 삭제는 rm, 이미지 삭제는 rmi이다.
- Dockerfile 지시어(FROM, RUN, CMD, EXPOSE 등)의 역할을 묻는 문제가 나온다.
- 도커
- 컨테이너 가상화
- 리눅스 가상화
- virsh 명령어 : 가상 머신을 관리한다.
- systemctl 명령어