728x90
명령어 사용법
* docker 를 사용을 위해 설치 부터 시작 해야한다
1. 우분투 시스템 패키지 업데이트
sudo apt-get update
2. 필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
3. Docker의 공식 GPG키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4. Docker의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. 시스템 패키지 업데이트
sudo apt-get update
6. Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
7. Docker가 설치 확인
7-1 도커 실행상태 확인
sudo systemctl status docker
7-2 도커 실행
sudo docker run hello-world
1. Docker 이미지 (Image) 관리
- docker images: 로컬 시스템에 저장된 Docker 이미지 목록을 보여줍니다.
- 옵션:
- -a 또는 --all: 중간 레이어 이미지까지 모두 표시합니다.
- -q 또는 --quiet: 이미지 ID만 표시합니다.
- --filter <key>=<value>: 특정 조건에 맞는 이미지만 필터링합니다 (예: --filter "label=com.example.version=1.0").
- --format <template>: 원하는 형식으로 출력합니다 (Go template 사용).
- 옵션:
- docker search <term>: Docker Hub에서 특정 키워드로 이미지를 검색합니다.
- 옵션:
- --limit <count>: 검색 결과 개수를 제한합니다.
- --filter <key>=<value>: 검색 결과를 필터링합니다 (예: --filter is-official=true).
- 옵션:
- docker pull <image_name>[:<tag>]: Docker Hub 또는 설정된 레지스트리에서 이미지를 다운로드합니다. 태그를 지정하지 않으면 latest 태그가 기본으로 사용됩니다.
- docker push <image_name>[:<tag>]: 로컬 이미지를 Docker Hub 또는 설정된 레지스트리에 업로드합니다.
- docker rmi <image_id_or_name> [...]: 로컬 이미지를 삭제합니다. 실행 중인 컨테이너에서 사용 중인 이미지는 삭제할 수 없습니다.
- 옵션:
- -f 또는 --force: 실행 중인 컨테이너가 있더라도 강제로 삭제합니다 (주의해서 사용).
- --no-prune: 태그가 없는 (dangling) 이미지는 삭제하지 않습니다.
- 옵션:
2. Docker 컨테이너 (Container) 관리
- docker ps: 현재 실행 중인 컨테이너 목록을 보여줍니다.
- 옵션:
- -a 또는 --all: 모든 컨테이너 (실행 중, 중지됨)를 표시합니다.
- -q 또는 --quiet: 컨테이너 ID만 표시합니다.
- --filter <key>=<value>: 특정 조건에 맞는 컨테이너만 필터링합니다 (예: --filter "status=running").
- --format <template>: 원하는 형식으로 출력합니다.
- -n <last>: 최근 생성된 n개의 컨테이너만 표시합니다.
- 옵션:
- docker run [OPTIONS] <image_name>[:<tag>] [COMMAND] [ARG...]: 새로운 컨테이너를 생성하고 실행합니다.
- 주요 옵션:
- -d 또는 --detach: 백그라운드에서 컨테이너를 실행합니다.
- --name <container_name>: 컨테이너 이름을 지정합니다.
- -p <host_port>:<container_port>: 호스트와 컨테이너의 포트를 연결합니다 (포트 포워딩).
- -v <host_path>:<container_path>[:<options>]: 호스트 디렉토리 또는 명명된 볼륨을 컨테이너에 마운트합니다 (데이터 영속성). 옵션으로는 ro (읽기 전용), rw (읽기/쓰기) 등이 있습니다.
- -e <VARIABLE>=<value>: 컨테이너 내 환경 변수를 설정합니다.
- --env-file <path>: 환경 변수 파일에서 환경 변수를 설정합니다.
- --link <container_name>[:<alias>]: 다른 컨테이너와 링크합니다 (레거시 기능, 네트워크 사용 권장).
- --network <network_name>: 컨테이너를 특정 네트워크에 연결합니다.
- --rm: 컨테이너가 종료되면 자동으로 삭제합니다.
- --restart <policy>: 컨테이너 종료 시 재시작 정책을 설정합니다 (no, on-failure, always, unless-stopped).
- 주요 옵션:
- docker start <container_id_or_name> [...]: 중지된 컨테이너를 다시 시작합니다.
- docker stop <container_id_or_name> [...]: 실행 중인 컨테이너를 정상적으로 종료합니다 (SIGTERM 후 유예 시간 후 SIGKILL).
- docker kill <container_id_or_name> [...]: 실행 중인 컨테이너를 강제로 종료합니다 (SIGKILL).
- docker restart <container_id_or_name> [...]: 실행 중인 컨테이너를 재시작합니다 (stop 후 start).
- docker rm <container_id_or_name> [...]: 중지된 컨테이너를 삭제합니다. 실행 중인 컨테이너는 삭제할 수 없습니다.
- 옵션:
- -f 또는 --force: 실행 중인 컨테이너를 강제로 종료 후 삭제합니다 (주의해서 사용).
- 옵션:
- docker logs <container_id_or_name>: 컨테이너의 로그를 확인합니다.
- 옵션:
- -f 또는 --follow: 실시간으로 로그를 따라갑니다.
- --since <time>: 특정 시간 이후의 로그만 표시합니다.
- --until <time>: 특정 시간 이전의 로그만 표시합니다.
- --tail <n>: 마지막 n개의 로그 라인만 표시합니다.
- 옵션:
- docker exec [OPTIONS] <container_id_or_name> <COMMAND> [ARG...]: 실행 중인 컨테이너 내부에서 명령을 실행합니다.
- 옵션:
- -it: 터미널을 할당하고 상호 작용 모드로 실행합니다 (쉘 접속 시 유용).
- -u <user>: 특정 사용자로 명령을 실행합니다.
- 옵션:
- docker stats [<container_id_or_name>...]: 실행 중인 컨테이너의 자원 사용량 (CPU, 메모리, 네트워크 I/O 등)을 실시간으로 보여줍니다.
- 옵션:
- --no-stream: 한 번만 통계를 표시하고 종료합니다.
- 옵션:
- docker top <container_id_or_name>: 실행 중인 컨테이너 내부의 프로세스를 보여줍니다.
- docker diff <container_id_or_name>: 컨테이너의 파일 시스템 변경 사항을 보여줍니다.
3. Docker 네트워크 (Network) 관리
- docker network ls: Docker 네트워크 목록을 보여줍니다.
- docker network create [OPTIONS] <network_name>: 새로운 Docker 네트워크를 생성합니다.
- 주요 옵션:
- -d 또는 --driver <driver>: 네트워크 드라이버를 지정합니다 (bridge, host, overlay 등). 기본은 bridge입니다.
- --subnet <subnet>: 서브넷을 지정합니다.
- --gateway <gateway>: 게이트웨이를 지정합니다.
- 주요 옵션:
- docker network connect <network_name> <container_id_or_name>: 실행 중인 컨테이너를 네트워크에 연결합니다.
- docker network disconnect <network_name> <container_id_or_name>: 컨테이너를 네트워크에서 분리합니다.
- docker network inspect <network_id_or_name>: Docker 네트워크의 상세 정보를 확인합니다.
- docker network rm <network_id_or_name> [...]: Docker 네트워크를 삭제합니다. 사용 중인 네트워크는 삭제할 수 없습니다.
4. Docker 볼륨 (Volume) 관리
- docker volume ls: Docker 볼륨 목록을 보여줍니다.
- docker volume create [OPTIONS] [<volume_name>]: 새로운 Docker 볼륨을 생성합니다.
- 주요 옵션:
- -d 또는 --driver <driver>: 볼륨 드라이버를 지정합니다 (local 등).
- --opt <key>=<value>: 드라이버별 옵션을 설정합니다.
- 주요 옵션:
- docker volume inspect <volume_name>: Docker 볼륨의 상세 정보를 확인합니다.
- docker volume rm <volume_name> [...]: Docker 볼륨을 삭제합니다. 사용 중인 볼륨은 삭제할 수 없습니다.
- docker volume prune: 사용하지 않는 로컬 볼륨을 모두 삭제합니다.
5. Docker Compose (Compose) 관련 명령어
Docker Compose는 여러 컨테이너로 이루어진 애플리케이션을 정의하고 실행하는 도구입니다. docker-compose.yml 파일을 기반으로 동작합니다. (별도 설치 필요)
- docker-compose up [OPTIONS] [--scale <service>=<num>...] [SERVICE...]: Compose 파일을 기반으로 서비스를 생성하고 시작합니다.
- 옵션:
- -d 또는 --detach: 백그라운드에서 실행합니다.
- --build: Dockerfile이 변경되었거나 이미지가 없는 경우 이미지를 빌드합니다.
- --force-recreate: 컨테이너를 강제로 다시 생성합니다.
- --scale <service>=<num>: 특정 서비스의 컨테이너 개수를 조정합니다.
- 옵션:
- docker-compose down [OPTIONS]: Compose 파일에 정의된 모든 서비스를 중지하고 삭제합니다.
- 옵션:
- --rmi <type>: 관련 이미지를 삭제합니다 (all, local).
- -v 또는 --volumes: 명명된 볼륨까지 삭제합니다.
- 옵션:
- docker-compose ps [OPTIONS] [SERVICE...]: Compose 파일에 정의된 서비스의 상태를 보여줍니다.
- docker-compose logs [OPTIONS] [SERVICE...]: 서비스의 로그를 확인합니다.
- 옵션은 docker logs와 유사합니다 (-f, --since, --tail 등).
- docker-compose exec [OPTIONS] <service> <command> [ARGS...]: 실행 중인 서비스의 컨테이너 내부에서 명령을 실행합니다.
- 옵션은 docker exec와 유사합니다 (-it, -u).
- docker-compose stop [SERVICE...]: 특정 서비스 또는 모든 서비스를 중지합니다.
- docker-compose start [SERVICE...]: 중지된 특정 서비스 또는 모든 서비스를 시작합니다.
- docker-compose restart [SERVICE...]: 특정 서비스 또는 모든 서비스를 재시작합니다.
- docker-compose build [OPTIONS] [SERVICE...]: Compose 파일에 정의된 이미지를 빌드합니다.
- docker-compose pull [SERVICE...]: 서비스가 사용하는 이미지를 다운로드합니다.
- docker-compose config [OPTIONS]: Compose 파일의 유효성을 검사하고 설정 내용을 보여줍니다.
6. 기타 유용한 명령어
- docker info: Docker 시스템의 전반적인 정보를 보여줍니다 (컨테이너 수, 이미지 수, 커널 버전 등).
- docker version: Docker 클라이언트 및 서버 버전을 보여줍니다.
- docker system df: Docker 관련 디스크 사용량을 보여줍니다 (이미지, 컨테이너, 볼륨, 빌드 캐시).
- docker system prune [OPTIONS]: 사용하지 않는 Docker 리소스 (중지된 컨테이너, 사용하지 않는 네트워크, dangling 이미지, 빌드 캐시)를 삭제하여 디스크 공간을 확보합니다.
- 옵션:
- -a 또는 --all: 사용하지 않는 이미지뿐만 아니라 사용하지 않는 모든 이미지를 삭제합니다.
- --volumes: 사용하지 않는 익명 볼륨도 삭제합니다.
- 옵션:
이 명령어들은 Docker를 사용하는 데 있어 가장 기본적인 부분이며, 익숙해질수록 Docker를 더욱 효율적으로 관리하고 활용할 수 있습니다. 필요에 따라 각 명령어의 옵션을 참고하여 사용하시면 됩니다.
728x90
'코드 > dev' 카테고리의 다른 글
DDL 작업 중 복제지연 원인과 해결 방안 (3) | 2025.05.22 |
---|---|
도커(Docker) 컨테이너(Container) (1) | 2025.04.21 |
Bastion (0) | 2025.04.13 |
처리율 제한 알고리즘 (0) | 2025.04.04 |
Nginx (0) | 2025.04.04 |