[ 데브위키 개발자를 위한 쉬운 도커 #7 ] 명령어 정리

김수호·2024년 8월 12일
0
post-thumbnail

이미지

  • 이미지 조회
    • docker images
    • docker image ls
      • ex) docker image ls nginx
  • 이미지 다운로드
    • docker pull 이미지명
  • 이미지 업로드
    • docker push 이미지명
  • 이미지 삭제
    • docker image rm 이미지명
    • docker rmi 이미지명
  • 도커파일(Dockerfile)을 통한 이미지 빌드
    • docker build -t [이미지명] [Dockerfile 위치]
    • docker build -f [도커파일명] -t [이미지명] [Dockerfile 위치]
      • 도커파일의 이름이 Dockerfile 이 아닌 경우, -f 옵션을 줘서, 실제로 빌드에 사용할 도커파일의 이름을 지정해주어야 한다.
  • 새로운 도커 이미지명 생성
    • docker tag 기존이미지명 추가할이미지명
    • 참고) 이렇게 이름을 추가하는 이유는, 같은 파일이더라도 이름을 어떻게 주는지에 따라서, 어디에 푸시되는지가 결정되기 때문이다. ( 이미지명에 따라서 업로드하는 곳이 달라지게 되는 것이다. )
  • 이미지의 메타데이터(세부 정보) 조회
    • docker image inspect 이미지명
    • 참고) 실행 결과로, 이미지의 레이어의 해시 값도 포함되어 나온다. ( RootFS > Layers )
  • 이미지의 레이어가 어떻게 구성되어 있는지 확인할 수 있다.
    • docker image history 이미지명

컨테이너

  • 생명주기 참고)
  • 실행 중인 컨테이너 리스트 조회
    • docker ps
    • 모든 컨테이너 조회 시 -a 옵션을 주어야 한다.
  • 컨테이너 생성
    • docker create --name {컨테이너명} 이미지명
  • 컨테이너 실행
    • docker start 컨테이너명
    • 참고) -i 옵션 추가 시, 컨테이너를 실행함과 동시에 컨테이너의 출력을 바로 터미널로 연결할 수 있다.
  • 컨테이너 실행
    • docker createdocker start 의 조합으로 새 컨테이너를 생성하고 시작한다.
    • docker run 은 완전 새로운 도커 이미지를 실행하는거고 start 는 기존 이미지를 실행하는 것
    • docker run --name {컨테이너명} 이미지명
      • -d : 백그라운드 실행
      • -p [host-port]:[container-port] : 호스트 포트와 컨테이너 포트 연결
      • --name {컨테이너명} : 컨테이너의 이름을 지정할 수 있다.
  • 실행 중인 컨테이너 중지
    • docker pause 컨테이너명
  • 중지된 컨테이너 재실행
    • docker unpause 컨테이너명
  • 컨테이너 정지
    • docker stop 컨테이너명
  • 컨테이너 재시작
    • docker restart 컨테이너명
  • 컨테이너 삭제
    • docker rm 컨테이너명/ID
    • 실행중인 컨테이너를 삭제하려면 -f 옵션을 주어야 한다.
  • 컨테이너 로그 확인
    • docker logs 컨테이너명
  • 실행중인 컨테이너의 메타데이터(세부 정보) 조회
    • docker container inspect 컨테이너명
  • 실행중인 컨테이너로 쉘 접속 ( Container Interaction )
    • docker exec -it 컨테이너명/ID /bin/bash
    • 참고) docker exec -it leafy-postgres su postgres bash -c "psql --username=myuser --dbname=mydb"
      • -c 옵션은 sh 나 bash 와 같은 셸 내에서 사용되는 옵션으로, 특정 명령어를 실행할 때 쉘의 -c 옵션을 통해 명령어를 문자열로 전달할 수 있다.
      • docker exec 명령 자체에는 -c 옵션이 없고, 쉘에서 -c 를 사용할 수 있다.
      • 참고) it = interaction
  • 컨테이너 실행 시 메타데이터의 Cmd 덮어쓰기
    • docker run --name {컨테이너명} 이미지명 (덮어쓰기할 실행명령)
    • ex) docker run --name customCmd nginx cat usr/share/nginx/html/index.html
  • 컨테이너 실행 시 메타데이터의 Env 덮어쓰기
    • docker run --env KEY=VALUE 이미지명
    • ex) docker run -d -p 8081:3000 --name blueColorApp --env COLOR=blue devwikirepo/envnodecolorapp
      • 참고) -e 또는 --env 옵션은 Docker 컨테이너에서 환경 변수를 설정할 때 사용한다. 이 옵션을 통해 컨테이너 내에서 사용할 환경 변수를 정의할 수 있다.
  • 컨테이너 실행과 동시에 터미널 접속
    • docker run -it --name 컨테이너명 이미지명 bin/bash
  • 실행 중인 컨테이너의 상태를 새로운 이미지로 생성 (Commit 방식)
    • docker commit -m 커밋명 [실행중인컨테이너명] [생성할이미지명]
  • 리소스 관련
    • 컨테이너가 사용할 최대 CPU 코어 수 정의
      • docker run --cpus={CPUcore수}
      • 참고) 소수점 입력 가능
    • 컨테이너가 사용할 최대 메모리 정의
      • docker run --memory={메모리용량}
      • 참고) b, k, m, g 단위로 지정 가능 ( 단위를 입력하지 않으면 default: 바이트 )
    • 실행 중인 컨테이너가 사용하는 리소스의 사용량 조회
      • docker stats (컨테이너명/ID)
      • 참고) stats 명령을 사용하면, CPU와 메모리 사용량과 네트워크 디스크 사용량을 조회할 수 있다.
    • HOSTOS에서 발생하는 이벤트 로그 조회
      • docker events
      • 참고) events 명령을 사용하면, HostOS에서 발생하는 컨테이너 관련 이벤트 로그를 실시간으로 확인할 수 있다.

네트워크

  • 네트워크 리스트 조회
    • docker network ls
  • 네트워크 상세 정보 조회
    • docker network inspect 네트워크명
  • 네트워크 생성
    • docker network create 네트워크명
  • 네트워크 삭제
    • docker network rm 네트워크명

 


볼륨

  • docker volume ls
    • 볼륨 리스트 조회
  • docker volume inspect 볼륨명
    • 볼륨 상세 정보 조회
  • docker volume create 볼륨명
    • 볼륨 생성
  • docker volume rm 볼륨명
    • 볼륨 삭제
    • 참고) 컨테이너에 마운트 되어 있는 볼륨은 삭제할 수 없다. 실제로 볼륨을 사용하는 컨테이너가 없을 때에만 볼륨을 삭제할 수 있다.
  • 참고) 컨테이너 생성 시 볼륨을 컨테이너의 내부 경로에 마운트
    • docker run -v {도커의 볼륨명}:{컨테이너의 내부 경로}
      • ex) docker run -d --name my-postgres -e POSTGRES_PASSWORD=password -v mydata:/var/lib/postgresql/data postgres:13
      • 참고) Windows Git Bash 환경의 경우 마운트 경로 설정시, mydata://var/lib/postgresql/data 와 같이 작성해주어야 한다.
        • 슬래시가 하나만 있을 때는 윈도우에서 자체적으로 C드라이브의 경로로 자동으로 변환이 되어서 에러가 발생한다.

 


Docker Compose

참고로 Docker Compose에서 말하는 서비스컨테이너 와 동일한 개념이다.

  • docker compose up -d
    • YAML 파일에 정의된 서비스 생성 및 시작
    • 참고) -d 옵션은 docker run 명령을 사용할 때와 마찬가지로, 컨테이너들을 백그라운드로 실행하는 옵션이다.
  • docker compose ps
    • 현재 실행중인 서비스들의 상태 표시
  • docker compose build
    • 서비스를 실행하지는 않고 서비스의 이미지만 빌드
  • docker compose logs
    • 컴포즈를 사용해서 실행한 컨테이너들의 로그를 한 번에 확인할 수 있다.
  • docker compose down
    • YAML 파일에 정의된 서비스 종료 및 제거
    • 참고) 컨테이너와 네트워크 등은 삭제되지만, 볼륨은 삭제되지 않지 않고 유지된다. ( volume 은 영속성을 가지는 데이터이기 때문에 기본적으로 삭제되지 않고 유지된다. )
      • 볼륨도 삭제하는 경우, docker compose down -v 로, -v 옵션을 주어야 한다.
  • docker compose up -d -build
    • 로컬에 이미지가 있어도 다시 이미지를 빌드
  • 참고) 컴포즈 파일 지정해서 실행
    • ex) docker compose -f compose-prod.yml up --build -d

 


기타

  • docker version
    • Client 와 Server 의 버전 및 상태 확인
  • docker info
    • 도커 클라이언트와 서버의 플러그인 정보 확인
    • 현재 실행 중인 호스트 OS의 시스템 상세 정보 확인
  • docker --help
    • 명령어 메뉴얼 확인
  • docker cp 원본위치 복사위치
    • 컨테이너와 호스트 머신 간 파일 복사.
    • 실행중인 컨테이너로 특정 파일을 복사할 수 있다. 그리고 컨테이너 내부에 있는 파일도 호스트 머신으로 복사해올 수 있다.
    • docker cp 컨테이너명:원본위치 복사위치
      • 컨테이너 -> 호스트머신으로 파일 복사
    • docker cp 원본위치 컨테이너명:복사위치
      • 호스트머신 -> 컨테이너로 파일 복사

 

✔️ 참고

  • https://velog.io/@agzg/docker%EB%8F%84%EC%BB%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%AA%A8%EC%9D%8C

강의를 듣고 정리한 글입니다. 코드와 그림 등의 출처는 데브위키 강사님께 있습니다.
( https://inf.run/Apgvc )

profile
현실에서 한 발자국

0개의 댓글