개인 공부/Docker 1차 공부

Docker | 이미지 다운, 컨테이너 생성, 컨테이너 실행 명령어

이대곤 2023. 1. 13. 00:33

Docker 명령어

# 설치된 docker 엔진의 버전 확인

docker -v

# 이미지 다운로드

이미지명을 뒤에 지정하면 해당 이미지가 '도커 중앙 이미지 저장소' 로부터 로컬로 다운받아짐
다운 받아지면 Docker Desktop 에서 다운받아진 이미지들을 바로 확인해볼 수 있음

docker pull centos:7
docker pull ubuntu:14.04

# 로컬에 다운받아진 이미지 조회

docker images

# 이미지로 컨테이너 생성만(자동실행X, pull 은 자동으로 이뤄짐)

centos:7 이미지를 이용해 컨테이너를 실행하는데, 생성된 컨테이너 이름을 mycentos로 하라는 의미.

이렇게 하면 컨테이너가 생성될 뿐  내부로 들어가지 않는다.

docker create -i -t --name mycentos centos:7

# 생성된 컨테이너 목록 확인

* 아래 명령은 정지된 컨테이너는 제외하고 보여줌, 자동으로 부여된 컨테이너 ID도 확인 가능하다.

docker ps

* 아래 명령은 정지된 컨테이너를 포함해서 보여줌,
CONTAINER ID : 컨테이너에게 자동으로 할당된 ID(단, 이건 ID 앞자리만 일부만 보여준거, 풀은 다른 명령 사용요망)
STATUS : 언제 실행되고 
CREATED : 컨테이너가 생성되고 난 뒤 흐른 시간을 나타냄
IMAGE : 컨테이너가 생성될 때 사용된 이미지
COMMAND : 컨테이너가 시작될 때 실행될 명령어

docker ps -a

# 컨테이너 삭제

* 단, 실행중인 컨테이너는 삭제할 수 없음. 정지한 뒤 삭제해라.

docker rm 컨테이너명

* 실행중인 컨테이너를 강제로 삭제할 수 있다.

docker rm -f 컨테이너명

* 아래 명령어는 존재하는 모든 컨테이너를 삭제한다.

docker container prune

# 컨테이너 실행

만들어져 존재하는 mycentos 이미지를 이용해 컨테이너를 실행하라는 의미. 단, 컨테이너 내부로 들어가지진 않음.

컨테이너 명으로 실행가능하며, 컨테이너 ID로도 실행 가능하다.

docker start mycentos
docker start dd06c5cb6bf4
docker start dd0					// ID의 앞자리가 dd0인 컨테이너가 여러개 존재하지 않는 경우 가능

# 실행중인 컨테이너 내부로 들어가는 명령

cnetos 이미지로 만들어진 컨테이너를 실행 후 내부로 들어가는 거라는 의미로 쉘이 얻어진다.

docker attach mycentos

# 실행중인 컨테이너 실행중지

docker stop 컨테이너이름

# 이미지로 컨테이너 생성 + 실행 + 진입 한번에(가장 자주 사용, 그 이유는 컨테이너 생성과 동시에 보통 진입하기때문)

만약 지정한 이미지가 로컬에 존재하지 않으면 '도커 중앙 이미지 저장소' 로부터 로컬로 다운받아짐

그리고 이 이미지를 이용해 컨테이너를 생성하고 그 즉시 실행하기 때문에 커맨드라인이 우분투 형태로 변경됨

단 한 줄의 docker 명령어로 컨테이너를 생성 및 실행과 동시에 컨테이너 내부로 들어올 수 있다는게 놀랍다.
-i 와 -t 는 docker attach의 의미를 내포하고 있다고 보면 된다.

docker run -i -t ubuntu:14.04

# 우분투 컨테이너 진입 후 우분투 명령어인 'ls'

# 우분투 컨테이너 진입 후 내부에서 빠져나오는 명령어
1) exit : 컨테이너 내부에서 빠져나오면서 동시에 컨테이너를 정지시킴

2) Ctrl + D : 컨테이너 내부에서 빠져나오면서 동시에 컨테이너를 정지시킴(위와 동일)

3) Ctrl + P : 컨테이너를 중지시키지 않고, 컨테이너에서 빠져나옴

4) Ctrl + Q : 컨테이너를 중지시키지 않고, 컨테이너에서 빠져나옴