[Docker] Docker 기본 명령어

 
by 박신종


다음은 Docker를 사용하기 위한 명령어를 나열하였다.


l. Docker 기본 명령어

docker pull [Image name]          # 이미지를 로컬 도커 엔진으로 내려받는다.
docker create -it --name [name] [Image name]
# 컨테이너 생성은 run이 아닌 create도 가능. 들어가진 않고 생성만 한다.
docker start [Container ID/Name]  # 생성된 컨테이너를 실행한다.
docker attach [Container ID/Name] # 실행중인 컨테이너에 들어간다.
docker run -it [Image ID/Name]    # 도커 이미지를 실행(create, start, attach를 모두 포함).
# --name 옵션에 컨테이너 이름을 설정할 수 있다.
docker exec -it [Container ID/Name]   # 컨테이너 실행.
docker stop [Container ID/Name] # 실행중인 컨테이너 종료.
docker ps [Container ID/Name]   # 실행중인 컨테이너 목록 확인.
docker ps -a                    # 모든 컨테이너 목록 확인 (id 확인할 수 있다).
docker images [Image ID/Name]   # 로컬 도커 엔진에 저장되어있는 이미지 목록 확인.
docker rm [Conatiner ID/Name]   # 사용이 끝난 컨테이너 삭제. -f 옵션으로 실행중인 컨테이너 삭제할 수 있다.
docker rmi [Image ID/Name]      # 이미지 삭제 (해당 이미지를 사용하는 컨테이너가 있다면 종료&삭제 해야한다.)
docker container prune          # 모든 컨테이너 일괄 삭제.
docker inspect [Container ID/Name]  # 컨테이너 정보 확인.
docker rename [name1] [name2]   # 컨테이너 이름을 변경한다.

도커 컨테이너 ID는 무작위의 16진수 해쉬값을 고유값으로 저장되며, 너무 길어 일반적으로 앞의 12자리만 사용한다.

16진수 모두 확인하고자 한다면 docker inspect [Container ID/Name] | grep Id 입력한다.


docker ps 명령어에 -q 옵션을 활용하여 ID만 출력하게 할 수있다.

이를 이용하여 docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) 모든 컨테이너를 중지, 삭제할 수 있다.



ll. Container 명령어

exit or Ctrl + D      # 컨테이너 종료.
Ctrl + P, Q          # 컨테이너를 종료하지 않고 빠져나온다.



lll. 추가

$ docker run 옵션

docker run 
-it				# 컨테이너 내부 진입하도록 attach 상태로 설정.
-d				# detached 모드 상태로, 컨테이너를 백그라운드에서 동작하도록 함.
-e [env]	# 컨테이너 내부 환경변수 설정.

-d 옵션으로 run을 실행하면 입출력이 없는 상태로 컨테이너를 실행한다. 컨테이너 내부에서 프로그램이 터미널을 차지하는 포그라운드(foreground)로 실행돼 사용자의 입력을 받지 않는다.

detached 모드인 컨테이너는 반드시 컨테이너에서 프로그램이 실행돼야 하며, 포그라운드 프로그램이 실행되지 않으면 컨테이너는 종료된다.


$ docker exec

docker exec [Container ID/Name] [명령어]				# 컨테이너 내부 명령어를 실행한다.
docker exec -it [Container ID/Name] /bin/bash
# 컨테이너 내부 /bin/bash 실행하고, -it 옵션을 사용해 배시 셸을 쓸 수 있다.

docker exec -it mysqldb /bin/bash 로 컨테이너 입력상태가 되었을 때 exit을 써도 컨테이너가 종료되지 않는다. 이는 mysqld 프로세스가 컨테이너 안에서 여전히 포그라운드 모드로 동작하고 있기 때문이다.