xtring's dev blog

4. 컨테이너를 실행해 보자

Section 1) 도커 엔진 시작/종료하기

도커 엔진을 시작/종료하는 방법

도커 엔진은 설치와 함께 실행되며, 계속 동작 상태로 남아 있지만 컨테이너를 실행 중이 아니라면 컴퓨터의 리소스를 거의 차지하지 않으므로 문제가 없다.

Section2) 컨테이너의 기본적인 사용 방법

컨테이너 사용의 기본은 도커 명령d어

> docker ~

명령어와 대상

> docker image pull penguin
> docker container start penguin
> docker container run penguin

옵션과 인자

> docker container run -d penguin --mode=1

기본적인 명령어 - 정리

커맨드(상/하위 커맨드)

옵션

> ~ --name penguin

대상

> docker container start <옵션> penguin

인자

--mode=1
--style nankyoku
Column: 상위 커맨드는 생략 가능하다?

간단한 명령어 사용해보기

> docker version
Client:
 Cloud integration: 1.0.17
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:55:20 2021
 OS/Arch:           darwin/arm64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:53:34 2021
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

대표적인 명령어

docker 명령어 
	 ㄴ 상위 명령어 
		 ㄴ하위 커맨드 
			 ㄴ 옵션
			 
---

docker 
	ㄴ container
		ㄴ start : 컨테이너 실행, 생략 O
			ㄴ -a
			ㄴ -i
		ㄴ stop : 컨테이너 정지, 생략 O
			ㄴ -t
		ㄴ create : 도커 이미지로부터 컨테이너 생성
			ㄴ -a
			ㄴ -e
			ㄴ -i
			ㄴ -p
			ㄴ -v
			ㄴ ...
		ㄴ run : 도커 이미지를 내려받고 컨테이너를 생성해 실행(다운로드는 필요한 경우에만).
		        docker image pull, docker container create, docker container start라는 세 개의 명령어를 하나로 합친 것과 같음.
			ㄴ -d
		ㄴ exec : 실행 중인 컨테이너 속에서 프로그램을 실행, 생략 O
		ㄴ rm : 정지 상태의 컨테이너를 삭제, 생략 O
		ㄴ ls : 컨테이너 목록을 축력, docker ps로도 가능
		ㄴ cp : 도커 컨테이너와 도커 호스트 간에 파일을 복사, 생략 O
		ㄴ commit : 도커 컨테이너를 이미지로 변환, 생략 O
		ㄴ ...
	ㄴ image
		ㄴ pull : 도커 허브 등의 리포지토리에서 이미지를 내려받음, 생략 O
		ㄴ rm : 도커 이미지를 삭제, docker rmi로 가능
		ㄴ ls : 내려 받은 이미지의 목록을 출력, 생략 X
		ㄴ build : 도커 이미지를 생성, 생략 O
		ㄴ search
		ㄴ ...
	ㄴ volume
		ㄴ create : 볼륨을 생성
		ㄴ inspect : 볼륨의 상세 정보를 출력
		ㄴ ls : 볼륨의 목록을 출력
		ㄴ prune : 현재 마운트되지 않은 볼륨을 모두 삭제
		ㄴ rm : 지정한 볼륨을 삭제
		ㄴ ...
	ㄴ network
		ㄴ connect : 컨테이너를 도커 네트워크에 연결
		ㄴ disconnect : 컨테이너의 도커 네트워크 연결을 해제
		ㄴ create : 도커 네트워크를 생성
		ㄴ inspect : 도커 네트워크의 상세 정보를 출력
		ㄴ ls : 도커 네트워크의 목록을 출력
		ㄴ prune : 현재 컨테이너가 접속하지 않은 네트워크를 모두 삭제
		ㄴ rm : 지정한 네트워크를 삭제
		ㄴ ...
	ㄴ checkpoint : 현재 상태를 일시적으로 저장한 후, 나중에 해당 지점의 상태로 되돌릴 수 있음. 현재 실험적 기능
	ㄴ node : 도커 스웜의 노드를 관리하는 기능
	ㄴ plugin : 플러그인을 관리하느 기능
	ㄴ secret : 도커 스웜의 비밀값 정보를 관리하는 기능
	ㄴ service : 도커 스웜의 서비스를 관리하는 기능
	ㄴ stack : 도커 스웜 또는 쿠버네티스에서 여러 개의 서비스를 합쳐 구성한 스택을 관리하는 기능
	ㄴ swarm : 도커 스웜을 관리하느 기능
	ㄴ system : 도커 엔진의 정보를 확인하는 기능

컨테이너 조작 관련 커맨드(상위 커맨드 container)

이미지 조작 관련 커맨드(상위 커맨드 image)

볼륨 조작 관련 커맨드(상위 커맨드 volume)

네트워크 조작 관련 커맨드(상위 커맨드 network)

그 밖의 상위 커맨드

단독으로 쓰이는 커맨드

docker
	ㄴ login : 도커 레지스트리에 로그인
	ㄴ logout : 도커 레지스트리에 로그아웃
	ㄴ search : 도커 레지스트리를 검색
	ㄴ version : 도커 엔진 및 명령행 도구의 버전을 출력

Section 3) 컨테이너의 생성과 삭제, 실행, 정지

실제로 컨테이너를 생성하고 실행해보자

docker run 커맨드와 docker stop, docker rm 커맨드

docker run은 컨테이너를 생성하고 실행한다.

컨테이너 정지하기와 폐기하기

컨테이너를 생성하고 실행하는 커맨드: docker run (docker container run)

컨테이너를 생성해 실행하는 커맨드

컨테이너를 정지하는 커멘드: docker stop (docker container stop)

컨테이너를 삭제하는 커맨드: docker rm (docker container rm)

Column 한 번만 실행되는 컨테이너와 데몬 형태로 동작하는 컨테이너

docker ps 커맨드

컨테이너 목록의 정보

$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Section 04) 컨테이너의 통신

아파치 컨테이너를 만들고 웹페이지 확인하기

아파치?

“웹 서버 기능을 제공하는 소프웨어”

–> 아파치가 동작 중인 서버에 파일을 두면 이 파일을 웹 사이트 형태로 볼 수 있다.

앞선 방식으로는 컨테이에 접근할 수 없음 –> 가능하게 하기 위해서는 컨테이너를 실행할 때 설정이 필요

컨테이너와 통신하기

웹 사이트로 접근

실습: 통신이 가능한 컨테이너 생성

Section 05) 컨테이너 생성에 익숙해지기

다양한 유형의 컨테이너

아파치 이외의 소프트웨어가 담긴 여러 가지 컨테이너를 생성해보며 컨테이너를 생성하는 연습을 진행한다

실습: 아파치 컨테이너를 여러 개 실행하기

아파치 컨테이너 여러 개를 실행해본다.

run 커맨드 실행

> docker run --name apa000ex3 -d -p 8081:80 httpd
6241b2165bfee7a1b006368ab91c3d9354d246a02d26865b88e881c533d46414
> docker run --name apa000ex4 -d -p 8082:80 httpd
db73665906ab179bef3a71a41526d4cfafc1bb7b34348f8be4134b09994a3db4
> docker run --name apa000ex5 -d -p 8083:80 httpd
fa07f90adaf97ee03949ca6f4c6b8eeaf62240cc80f43cdda1361203bbd61980
> docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS                                   NAMES
fa07f90adaf9   httpd     "httpd-foreground"   7 seconds ago    Up 6 seconds    0.0.0.0:8083->80/tcp, :::8083->80/tcp   apa000ex5
db73665906ab   httpd     "httpd-foreground"   14 seconds ago   Up 13 seconds   0.0.0.0:8082->80/tcp, :::8082->80/tcp   apa000ex4
6241b2165bfe   httpd     "httpd-foreground"   21 seconds ago   Up 20 seconds   0.0.0.0:8081->80/tcp, :::8081->80/tcp   apa000ex3

stop 커맨드를 사용해 컨테이너 종료 -> 삭제하기

> docker stop apa000ex3
apa000ex3
> docker stop apa000ex4
apa000ex4
> docker stop apa000ex5
apa000ex5
> docker rm apa000ex3
apa000ex3
> docker rm apa000ex4
apa000ex4
> docker rm apa000ex5
apa000ex5
> docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          

Section 06) 이미지 삭제

컨테이너를 다루는 데 필요한 일련의 조작과 더불어 이미지를 삭제하는 방법도 알아보자

이미지 삭제

docker image rm 커맨드

docker image ls 커맨드

이미지 목록의 정보

docker image ls
REPOSITORY                                                  TAG             IMAGE ID       CREATED         SIZE
nginx                                                       latest          a5cdc6683c84   3 weeks ago     198MB
mysql                                                       latest          1ba038aab342   3 weeks ago     876MB
httpd                                                       latest          3405bcd9d2a6   3 months ago    178MB
registry.dev.kurlycorp.kr/local-dev-proxy/local-dev-proxy   latest          c3c7b19612ee   4 months ago    184MB
registry.dev.kurlycorp.kr/local-dev-proxy/local-dev-proxy   <none>          d33519bda791   9 months ago    1.15GB
kurly-www-v2_web                                            latest          4ca5df343e49   11 months ago   18.9MB
kurly-www-v2_app                                            latest          f673f95dedc0   11 months ago   987MB
nginx                                                       1.20.0-alpine   1ef2477c082c   4 years ago     21.2MB
Column: 이미지 버전과 이미지 이름

#docker