1. Docker CLI 커맨드
Docker를 조작하기 위한 인터페이스로 Docker 커맨드( Docker CLI )가 있습니다.
이 커맨드에는 구체적인 작업을 지정하기 위한 서브 커맨드가 있으며, docker COMMAND와 같이 실행할 수 있습니다. 서브 커맨드 설명은 「 docker COMMAND - help 」 로 확인할 수 있습니다.
커맨드에 대한 자세한 내용은 다음 URL을 참고하길 바랍니다.
https://docs.docker.com/engine/reference/commandline/docker/
docker
docs.docker.com
1) 이미지 관리 커맨드
이미지는 컨테이너를 만들 때의 토대가 되는 것으로, 컨테이너 내부의 파일 시스템 세트 등이 포함되어 있습니다.
커맨드 | 의미 |
$ docker image build $ docker build |
Dockerfile로 이미지 빌드 |
$ docker image history $ docker history |
이미지 생성 기록 보기 |
$ docker image import $ docker import |
tar 아카이브( docker container export로 가져온 것 )로 이미지 만들기 |
$ docker image inspect | 이미지 상세 정보 보기 |
$ docker image load $ docker load |
tar 아카이브( docker image save로 출력한 것 )로 이미지 로드 |
$ docker image ls $ docker load |
이미지 리스트 보기 |
$ docker image prune | 불필요한( 태그가 붙어 있지 않아 컨테이너로 사용되지 않은 것 ) 이미지 삭제 |
$ docker image pull $ docker pull |
레지스트리로부터 이미지 취득( pull ) |
$ docer image push $ docker push |
레지스트리에 이미지 전송( push ) |
$ docker image rm $ docker rmi |
이미지 삭제 |
$ docer image save $ docker save |
이미지( docker image load 읽을 수 있는 ) tar 아카이브로 출격 |
$ docker image tag $ docker tag |
기존의 이미지에 태그르 붙이기( 다른 이미지 이름 붙이기 ) |
각 항목의 두 번째 줄에 있는 짧은 커맨드는 첫 번째 줄의 docker image에서 시작하는 커맨드와 거의 같은 의미를 가지고 있기 때문에 이후부터는 주로 짧은 커맨드를 사용하여 설명하겠습니다.
2) 컨테이너 관리 커맨드
컨테이너는 이미지 위에서 움직이는 환경이빈다. 또한, 다음에 설명하는 볼륨과 네트워크 등을 구성하기 위한 설정도 포함되어 있으며, 컨테이너 내부에서 프록르매을 실행하는 환경 세트가 갖추어져 있습니다.
컨테이너는 다시 만드는 것으로 동일한 환경을 재현할 수 있습니다.
컨테이너 내부의 환경에서 변경되더라도, 이미지 등에는 영향을 주지 않도록 되어있는 것이 특징입니다.
커맨드 | 의미 |
$ docker container attach $ docker attach |
실행 중인 컨테이너에 표준 입출력 연결 |
$ docker container commit $ docker commit |
컨테이너 내부에서 변경된 파일을 베이스로 이미지 만들기 |
$ docker container cp $ docker cp |
파일이나 폴더를 컨테이너와 호스트 환경 간에 복사 |
$ docker container create $ docker create |
새 컨테이너 만들기 |
$ docker container diff $ docer diff |
컨테이너 내부에서 변경된 파일 검사 |
$ docker container exec $ docker exec |
실행 중인 컨테이너 내부에서 커맨드 실행 |
$ docker container export $ docker export |
컨테이너 파일 세트를 tar 아카이브 형식으로꺼내기 |
$ docker container inspect | 컨테이너의 자세한 정보 보기 |
$ docker container kill $ docker kill |
실행 중인 컨테이너( Docker가 만든 PID 1 프로세스 )에 신호 보내기 |
$ docker container logs $ docker logs |
컨테이너 로그 취득 |
$ docker container pause | 컨테이너로 실행 중인 모든 프로세스 일시 중지 |
$ docker container port $ docker port |
컨테이너 포트 매핑 보기 |
$ docker container prune | 정지 중인 컨테이너 모두 삭제 |
$ docker container rename $ docker rename |
컨테이너 이름 변경 |
$ docker container restart $ docker restart |
컨테이너 다시 시작 |
$ docker container rm $ docker rm |
컨테이너 삭제 |
$ docker container run $ docker run |
새로운 컨테이너로 커맨드 실행 |
$ docker container start $ docker start |
정지 중인 컨테이너 기둥 |
$ docker container stats $ docker stats |
컨테이너의 자원 이용 상태 보기( top 커맨드의 일종 ) |
$ docker container stop $ docker top |
실행중인 컨테이너 중지 |
$ docker container unpause $ docker unpause |
컨테이너 내부에서 실행중인 프로세스 보기( ps 커맨드의 일종 ) |
$ docker container unpause $ docker unpause |
( docker pause로 ) 일시 정지 상태인 프로세스 재개 |
$ docker container update $ docker update |
컨테이너 설정 업데이트 |
$ docker container wait $ docker wait |
컨테이너 종료를 기다리고 나서 종료 코드 보기 |
3) 볼륨 관리 커맨드
볼륨은 컨테이너의 라이프 사이클과는 별개의 독립적인 영역입니다. 컨테이너를 삭제하면 컨테이너에서 변경된 파일은 제거되지만, 볼륨은 명시적으로 삭제하지 않는 한 내용이 유지됩니다. 또한, 볼륨은 여러 컨테이너에 걸쳐 공유되며 호스트 환경의 디렉터리를 공유할 수 있습니다.
커맨드 | 의미 |
$ docker volume create | 볼륨 만들기 |
$ docker volume | inspect 볼륨에 대한 자세한 정보 보기 |
$ docker volume ls | 볼륨 목록 보기 |
$ docker volume prune | 불필요한 볼륨 삭제 |
$ docker volume rm | 볼륨 삭제 |
4) 네트워크 관리 커맨드
Docker는 컨테이너마다 호스트 환경과 독립적인 네트워크와 네트워크 주소를 할당할 수 있습니다. 이에 따라 동일한 포트를 수신할 수 있도록 한 컨테이너를 여러 개 기동해 놓을 수 있습니다. 또한 Docker는 내부에 DNS 서버를 가지고 있으며, 컨테이너 이름( 서비스 이름 )을 사용하여 다른 컨테이너와 통신할 수 있게 되어 있습니다.
커맨드 | 의미 |
$ docker network connect | 컨테이너를 네트워크에 연결 |
$ docker network create | 네트워크 만들기 |
$ docker network discon-nect | 네트워크 컨테이너 끊기 |
$ docker network inspect | 네트워크에 대한 자세한 정보 보기 |
$ docker network ls | 네트워크 목록 보기 |
$ docker network prune | 불필요한 네트워크 삭제 |
$ docker network rm | 네트워크 삭제 |
5) 그 밖의 커맨드
그 외에도 사용할 서브 커맨드 목록은 다음과 같습니다. 여기에서는 Experimental인( 차후 Docker 에 추가하기 위해 실험 중인 기능들 ) 커맨드 Swarm( 클러스 구성 ) 관련 커맨드, Docker EE 고유의 커맨드는 생략했습니다.
커맨드 | 의미 |
$ docker builder * | 빌드 관련 관리 커맨드 |
$ docker checkpoint * | 체크 포인트 관리 커맨드 |
$ docker config * | Docker 설정을 관리하는 커맨드 |
$ docker events | Docker 서버에서 발생한 이벤트 정보 보기 |
$ docker image * | 이미지 관리 커맨드 |
$ docker info | 시스템 전반의 정보 보기 |
$ docker inspect | Docker 오브젝트( 컨테이너나 이미지나 네트워크 등 )에 대한 자세한 정보 보기 |
$ docker login | Docker 레지스트리에 로그인 |
$ docker logout | Docker 레지스트리에서 로그아웃 |
$ docker manifest * | 메니페스트 관리 커맨드 |
$ docker network * | 네트워크 관리 커맨드 |
$ docker plugin * | 플러그인 관리 커맨드 |
$ docker search | Docker Hub에서 이미지 검색 |
$ docker system * | Docker 관리 커맨드 |
$ docker trust * | 이미지의 서명 관리 커맨드 |
$ docker version | Docker 버전 정보 보기 |
$ docker volume * | 볼륨 관리 커맨드 |
※ 커맨드 뒤에 Asterisk( * ) 표시가 있는 것은 서브 커맨드 옵션이 있는 것입니다.
2. Dockerfile 명령
Dockerfile은 이미지를 구축하기 위한 작업을 차례대로 기술한 것입니다. Dockerfile을 사용하면 파일 내에 작성되어 있는 순서대로 명령어가 실행되며 이미지를 구축해 나갑니다.
Docker 공식문서 : https://docs.docker.com/reference/dockerfile/
Dockerfile reference
Find all the available commands you can use in a Dockerfile and learn how to use them, including COPY, ARG, ENTRYPOINT, and more.
docs.docker.com
Dockerfile에는 다음과 같은 명령을 사용할 수 있습니다. 여기에서는 폐지 예정( deprecated ) 명령은 생략했습니다.
커맨드 | 의미 |
FROM | 베이스 이미지 지정 |
RUN | 베이스 이미지에 새로운 레이어를 추가해 커맨드를 실행하고, 결과를 빌드 이미지에 반영 |
CMD | 컨테이너 시작할 때 실행할 커맨드 설정 |
LABEL | 이미지에 레이블을 설정 |
EXPOSE | 컨테이너에서 공개하는 포트 번호 설정 |
ENV | 환경 변수 설정 |
ADD | 이미지에 파일 복사( 압축 파일의 경우 압축을 해제하여 복사함 ) |
COPY | 이미지에 파일 복사 |
ENTRYPOINT | 컨테이너 시작할 때 실행할 커맨드 설정 |
VOLUME | 볼륨이 마운트 될 위치 설정 |
USER | 커맨드를 실행할 때 사용할 ID 설정 |
WORKDIR | 커맨드를 실행할 때 작업 디렉터리 설정 |
ARG | 빌드 시에만 사용되는 변수 설정 |
ONBUILD | 이 이미지를 베이스로 빌드할 때 커맨드가 실행되도록 하기 |
STOPSIGNAL | 컨테이너를 중지시킬 때의 시그널 번호 설정 |
HEALTHCHECK | 헬스체크를 위한 커맨드 설정 |
SHELL | 커맨드 실행할 때 쉘 설정 |
FROM은 베이스 이미지를 지정하는 명령입니다. Dockerfile은 FROM 명령부터 시작해야 합니다. 이 이미지를 베이스로 하여 이어지는 다음 단계의 명령으로 적용되는 변경 내용이 축적됩니다.
3. Docker Compose 커맨드
Docker Compose는 여러 컨테이너와 이미지를 정리하고 쉽게 관리하기 위한 도구입니다. 이것을 사용하면 여러 컨테이너가 연계되어 움직이는 서비스를 쉽게 관리할 수 있습니다.
Docker Compose에서는 라이프 사이클을 관리하는 컨테이너를 서비스라고 합니다.
이 서비스에서 사용하는 컨테이너의 설정( 환경 변수, 네트워크, 볼륨, 포트 포워딩 설정 등 )은 Compose 파일이라는 YAML 파일( docker-compose.yml )에 기술하게 되어 있습니다.
서비스에서 적용된 설정은 Compose 파일에 기술된 자원( 컨테이너, 이미지, 볼륨, 네트워크 )에만 적용되기 떄문에 여러 환경을 관리할 때 안전하게 조작할 수 있으며, db 같은 추상적인 서비스 이름도 안전하게 사용할 수 있습니다. 따라서 하나의 컨테이너를 움직이더라도 docker 커맨드ㅂ돠 쉽게 컨테이너를 관리할 수 있습니다.
Docker Compose는 CLI 도구인 docker-compose 커맨드로 제공됩니다. 이 커맨드는 구체적인 작업을 지정하기 위한 서브 커맨드가 있으며, docker-compose와 같이 실행할 수 있습니다.
커맨드 | 의미 |
$ docker-compose build | 서비스 빌드( 혹은 재구축 ) |
$ docker-compose bundle | Compose 파일로 Docker 번들 만들기 |
$ docker-compose config | Compose 파일 확인 후 보기 |
$ docker-compose create | 서비스 만들기 |
$ docker-compose down | 컨테이너를 중지하고 관리하는 자원 제거 |
$ docker-compose events | 컨테이너에 발생한 이벤트 보기 |
$ docker-compose exec | 실행 중인 컨테이너에서 커맨드 실행 |
$ docker-compose help | 커맨드 도움말 보기 |
$ docker-compose images | 이미지 목록 보기 |
$ docker-compose kill | 컨테이너 시그널 송신 |
$ docker-compose logs | 컨테이너 출력 보기 |
$ docker-compose pause | 서비스 일시 정지 |
$ docker-compose port | 공개된 포트 할당 보기 |
$ docker-compose ps | 컨테이너 목록 보기 |
$ docker-compose pull | 서비스의 이미지 pull |
$ docker-compose push | 서비스의 이미지 push |
$ docker-compose restart | 서비스 다시 시작 |
$ docker-compose pull | 서비스의 이미지 pull |
$ docker-compose push | 서비스의 이미지 push |
$ docker-compose restart | 서비스 다시 시작 |
$ docker-compose rm | 정지 중인 컨테이너 삭제 |
$ docker-compose run | 한 번만 작동하는 커맨드 실행 |
$ docker-compose scale | 서비스 컨테이너 수 변경 |
$ docker-compose satart | 서비스 시작 |
$ docker-compose top | 실행 중인 프로세스 정보 보기 |
$ docker-compose unpause | 일시 정지 중인 컨테이너 다시 시작 |
$ docker-compose up | 서비스를 만들고 시작 |
$ docker-compose version | Docker Compose 버전 정보 보기 |
'Docker' 카테고리의 다른 글
[Docker] Docker란? (0) | 2024.03.04 |
---|