[Docker] Docker


Docker가 일반적으로 사용하는 명령

– 자주 사용하는 명령어와 옵션을 Docker에서 정리해보자.

1. 도커 시스템 정보

  • Docker 버전 : Docker 버전 및 세부 정보 확인
  • docker -v : docker 버전 및 빌드 버전을 한 줄로 간단히 확인합니다.
  • docker system info: Docker의 시스템 전체 정보를 확인합니다.
  • Docker 시스템 이벤트: 서버에서 실시간 이벤트를 수신합니다.
  • docker system df : docker 디스크 사용량을 확인합니다.
  • docker login -u (id) : 도커 허브에 로그인

2. 도커 이미지 명령어

2-1 이미지 목록 출력

– 도커의 이미지 목록을 확인합니다.

$docker images

# 또는 - 위의 커맨드와 아래의 커맨드는 동일함.

$docekr image ls

# 모든 이미지 표시
$docker images -a

2-2 이미지 세부정보 보기

#docker image inspect (이미지명)

$doker image inspect boot:letest

2-3 Docker 허브 이미지 찾기

– Docker Hub에 업로드된 공개 이미지를 열람할 수 있습니다.

– 이미지가 오피셜 란에서 오피셜인지 확인할 수 있습니다.

# docker search (옵션) <검색어>
$docker search mysql

# 옵션 사용 예제 - 자동빌드 설정, star수 15개 이상인 mysql 이미지
$docker search --filter is-automated=true --filter starts=15 mysql

– 가능성

–automated=(true/false) : 자동화된 빌드 설정 여부
–no-trunc=false: 모든 결과 출력(필터링 없음)
–filter start=(시작 번호) : 별 개수만큼 검색합니다.
–filter is-official=true : 공식 이미지만 검색
–limit=(숫자): 검색 결과 개수 검색(기본값 = 25)


2-4 Dockerfile로 이미지 생성(빌드)

# 기본 커맨드
# docker build -t (dockerHub ID)/(이미지명):(태그명) (DockerFile위치)

# 태그 지정X 시 :latest 지정됨
$docker build -t (dockerHub ID)/(이미지명) .

옵션 -t: 생성할 이미지를 의미합니다.


2-5 이미지 삭제

# 이미지만 삭제
$docker rmi (이미지 ID)

# 컨테이너 + 이미지 강제 삭제
$docker rmi -f (이미지 ID)

3. 도커 컨테이너

3-1 현재 실행 중인 컨테이너 확인

$docker ps

3-2 실행 및 중지된 컨테이너 목록 확인

$docker ps -a

3-3 컨테이너 삭제

# 컨테이너 단건 삭제
$docker rm (컨테이너 ID)

# 컨테이너 다건 삭제
$docker rm (컨테이너 ID}, (컨테이너 ID)

# 컨테이너 전체 삭제
$docker rm 'docker ps -a -q'

3-4 컨테이너에 대한 액세스

# 실행되고 있는 컨테이너에 접속 - attach
# 컨테이너 run시 /bin/bash 사용하지 않았다면 접속 불가.
$docker attach (컨테이너명, ID)

# 실행중인 컨테이너에 접속, 명령수행가능(일시적) - exec
# exit로 종료
$docker exec -it (컨테이너명, ID) /bin/bash

3-5 컨테이너 시작, 중지, 다시 시작

# 컨테이너 시작
$docker start (컨테이너명, ID)

# 컨테이너 중지 
$docker stop (컨테이너명, ID)

# 컨테이너 재시작
$docker restart (컨테이너명, ID)

3-6 Docker 실행 – 컨테이너화

– 옵션은 가장 많이 사용되며 가장 복잡합니다.

– 로컬 이미지 사용 여부 또는 도커 허브 등에 존재하는 이미지 사용 여부

# image -> Container 생성 및 실행
# docker run (options) image(:tag, @digest) (command) (args)

# Local
$docker run -d mysql:latest

# Docker Hub 
# docker run (options) (docker hub ID)/(이미지명)
$docker run -d test123/mysql

# 가장 많이 쓰이는 옵션 및 실전 예제 
# docker hub id가 test123인 repo에서 mysql 이미지를 컨테이너화
# 컨테이너를 터미널에 연결허용(-it), 백그라운드에서 동작(-d), 포트포워딩(-p)
# 컨테이너의 이름은 testMysql로 지정.
$docker run -it -d -p 8080:8080 --name testMysql test123/mysql

– 가능성

-it : 표준 입력(STDIN) 허용 및 터미널 연결 활성화(옵션 -i, -t 함께 사용)
-d : 백그라운드에서 컨테이너 실행(예: SpringBoot 서버, DB{MySQL, Oracle})
-p : 컨테이너 포트 포워딩 옵션(호스트 포트: 컨테이너 포트)
-> 8080:3000 – 8080번 포트로 접속시 컨테이너의 3000번 포트로 포워딩한다.
–name : 생성할 컨테이너의 이름을 지정합니다.


3-7 컨테이너 이름 변경

$docker rename (현재 컨테이너명) <변경할 컨테이너 이름>