Docker CLI는 커맨드 라인 인터페이스를 통해 컨테이너, 이미지, 볼륨, 네트워크를 관리할 수 있게 해줍니다.
Docker CLI를 사용하기 위해 Docker CLI만 다운로드 해도 되지만 Docker Desktop를 설치해도 Docker CLI가 같이 설치되기 때문에 Docker Desktop을 설치하는 것을 추천합니다.
Docker Desktop For Window
docker run
Docker의 이미지를 이용해 컨테이너를 실행합니다.
docker container ls
Docker에서 실행되고 있는 컨테이너들의 리스트를 보여줍니다.
docker image ls
Docker에 설치된 이미지 리스트를 보여줍니다.
docker pull
Docker Hub나 다른 레지스트리에서 이미지를 가져옵니다.
docker push
Docker Hub나 다른 레지스트리에 이미지를 저장합니다.
docker build
dockerfile을 통해 이미지를 빌드합니다.
docker exec
컨테이너 내부에서 커맨드를 실행합니다.
docker logs
컨테이너의 로그 기록을 보여줍니다.
docker run 명령어와 관련된 옵션들을 살펴 보겠습니다.
-d, --detach
컨테이너를 백그라운드 모드로 실행합니다.
-e, --env
컨테이너의 환경 변수를 설정합니다.
-v, --volume
컨테이너에서 사용할 볼륨을 설정합니다.
-p, --publish
컨테이너의 포트를 호스트의 포트와 매핑합니다.
--name
컨테이너에 이름을 부여합니다.
--restart
컨테이너의 재시작 정책을 설정합니다.
--rm
컨테이너가 종료되면 자동으로 해당 컨테이너를 삭제합니다.
dockerfile은 스크립트로 Docker image를 빌드하기 위한 명령어들의 집합입니다.
# Set the base image to use
FROM alpine:3.7
# Update the system and install packages
RUN apk update && apk add curl
# Set the working directory
WORKDIR /app
# Copy the application file
COPY app.sh .
# Set the entry point
ENTRYPOINT ["./app.sh"]
위의 dockerfile은 아래 명령어로 빌드할 수 있습니다.
docker build -t my-image .
Docker Compose는 CLI 도구로써 YAML파일을 이용해서 Docker 애플리케이션의 여러 컨테이너를 정의하고 관리하게 해줍니다.
Docker Compose를 사용하기 위해서는 Docker Compose를 설치해야 하는데 Docker Desktop을 설치할 때 같이 설치됩니다.
아래는 docker-compose.yml 파일의 예시입니다.
version: '3'
services:
web:
image: webapp-image
ports:
- "80:80"
database:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=my-secret-pw
위 파일을 이용해 컨테이너를 실행하기 위해서는 아래 명령어를 사용하면 됩니다.
docker-compose up
docker run
컨테이너를 만들고 실행합니다.
docker container ls
실행중인 컨테이너의 목록을 보여줍니다.
docker container stop
실행중인 컨테이너를 멈춥니다.
docker container rm
멈춘 컨테이너를 삭제합니다.
docker exec
실행중인 컨테이너 내부에서 명령어를 실행합니다.
docker logs
컨테이너의 로그를 가져옵니다. 디버깅에 유용합니다.
docker image ls
사용가능한 모든 이미지를 보여줍니다.
docker build
dockerfile을 통해 이미지를 만듭니다.
docker image rm
이미지를 삭제합니다.
docker pull
Docker Hub와 같은 레지스트리에서 이미지를 가져옵니다.
docker push
Docer Hub와 같은 레지스트리에 이미지를 등록합니다.
docker volume create
새로운 볼륨을 만듭니다.
docker volume ls
모든 볼륨의 목록을 보여줍니다.
docker volume inspect
특정 볼륨에 대한 구체적인 정보를 보여줍니다.
docker volume rm
볼륨을 삭제합니다.
docker volume prune
사용하지 않는 모든 볼륨을 삭제합니다.
docker network create --driver
새로운 네트워크를 만듭니다.
docker network ls
모든 네트워크 목록을 보여줍니다.
docker network inspect
네트워크에 대한 구체적인 정보를 보여줍니다.
docker network connect
컨테이너를 네트워크에 연결합니다.
docker network disconnect
컨테이너를 해당 네트워크에서 연결을 끊습니다.
docker network rm
네트워크를 삭제합니다.