도커 엔진 시작하기/종료하기
도커 엔진은 설치와 함께 실행되며, 동작 상태로 남아있지만 컨테이너를 실행 중이 아니라면 컴퓨터 리소스를 거의 차지하지 않아 문제가 되지 않는다.
도커 데스크톱은 도커 엔진을 자동으로 실행하도록 설정되어 있기 때문에 이 설정도 비활성화하지 않으면 컴퓨터가 부팅될 때마다 도커 엔진도 자동으로 실행된다.
도커 엔진이 종료되면 모든 컨테이너가 정지 상태가 되므로, 정전 등으로 전원이 내려가면 복구를 위해 컨테이너를 따로 실행하는 스크립트를 작성해야 한다.
도커 엔진 시작: 도커 데스크톱 클릭
도커 엔진 종료: 화면 오른쪽 아래 태스크 트레이에서 아이콘 우클릭 후 Quit Docker Descktop
컨테이너의 기본적인 사용 방법
컨테이너를 다루는 모든 명령은 ‘docker’로 시작한다.
도커 명령어의 기본
docker [커맨드] (옵션) [대상] (인자)
penguin이라는 이름의 이미지를 pull: docker image pull penguin
penguin이라는 이름의 이미지로 컨테이너를 start: docker container start penguin
docker container run -d penguin --mode=1
-d: 백그라운드로 실행, —mode=1: 모드 1로 실행
상위 커맨드 container은 start와 run 등과 함께 쓸 경우 생략 가능하다.
docker run = docker container run
옵션
-또는 —로 시작하는 것이 일반적이지만 -기호를 붙이지 않는 경우도 있다.
백그라운드로 실행 | -d |
키보드로 조작 | -i, -t |
여러 옵션 모아 쓰기 | -dit … |
커맨드에 값 전달 | —name 전달하고싶은 값 |
대상
커맨드와 달리 구체적인 이름을 지정
인자
-또는 —로 시작하는 경우가 많음
문자 코드 또는 포트 번호 등을 전달.
인자를 지정하는 경우는 많지 않음
실습
version 명령어 실행하기
cmd에 docker version 입력
docker version
컨테이너 조작 관련 커맨드
docker container 하위_커맨드 옵션
이미지 조작 관련 커맨드
docker image 하위_커맨드 옵션
볼륨 조작 관련 커맨드
docker volume 하위_커맨드 옵션
네트워크 조작 관련 커맨드
docker network 하위_커맨드 옵션
도커 네트워크란? 도커 요소 간의 통신에 사용하는 가상 네트워크
컨테이너의 생성과 삭제, 실행, 정지
컨테이너 실행: docker run
docker run=docker create+docker start+docker pull
컨테이너 정지: docker stop
컨테이너 삭제: docker rm
주요 옵션
옵션 형식 | 내용 |
—name 컨테이너_이름 | 이름 지정 |
-p 호스트_포트번호:컨테이너_포트번호 | 포트 번호 지정 |
-v 호스트_디스크:컨테이너_디렉터리 | 볼륨 마운트 |
—net=네트워크_이름 | 컨테이너를 네트워크에 연결 |
-e 환경변수_이름=값 | 환경변수 설정 |
-d | 백그라운드로 실행 |
-i | 터미널(키보드) 연결 |
-t | 특수 키 사용 |
-help | 사용 방법 안내 |
컨테이너 정지
docker stop 컨테이너_이름
컨테이너 삭제
docker rm 컨테이너_이름
실행중인 컨테이너 목록 출력
docker ps (옵션)
현재 존재하는 컨테이너의 목록 출력
docker ps -a
아파치 웹 서버 컨테이너 생성, 실행, 확인, 종료, 삭제하기
- apa000ex1이라는 이름의 컨테이너를 httpd라는 이름의 이미지로 생성하여 실행
docker run --name apa000ex1 -d httpd
- 실행 중인 컨테이너의 목록 확인
docker ps
run 시 출력되는 문자열이 컨테이너의 ID이다.
도커 데스크톱에도 똑같이 추가되었다.
- 컨테이너 종료
docker stop apa000ex1
삭제 후 ps로 확인해보면 리스트에는 뜨지만 Exited 상태라고 나온다.
- 컨테이너 삭제
docker rm apa000ex1
다시 ps로 확인해보면 빈 리스트가 뜬다.
컨테이너의 통신
아파치란?
웹 서버 기능을 제공하는 소프트웨어다.
아파치가 동작 중인 서버에 파일(html 등)을 두면 파일을 웹 사이트 형태로 볼 수 있다
웹 브라우저를 통해 컨테이너에 접근하기
웹 브라우저를 통해 컨테이너에 접근하려면 포트(통신 내용이 드나드는 통로)를 설정해야한다,
아파치는 서버에서 정해둔 포트 (80번 포트)에서 웹 사이트에 대한 접근을 기다리다가, 접근 요청이 오면 웹 사이트의 페이지를 제공한다. 그러나 컨테이너 속에서 실행 중인 아파치는 외부와 직접 연결되지 않아 접근이 불가하다.
따라서 컨테이너가 포트를 열어 내부의 아파치와 연결해준다.
호스트 포트 번호를 겹치지 않게 설정해야 여러 개의 웹 서버를 함께 실행할 수 있다.!
(포트를 같게 하고 싶다면, 리버스 프록시로 서버 이름을 통해 구별하게 한다)
통신이 가능한 컨테이너 생성하기
- 컨테이너 생성 및 실행
docker run --name apa000ex2 -d -p 8080:80 httpd
2. localhost:8080 접속
- 중지 및 삭제
docker stop apa000ex2
docker rm apa000ex2
컨테이너 생성에 익숙해지기
웹 서버/데이터베이스 서버용 컨테이너
이미지 이름 | 컨테이너의 내용 | 비고 |
httpd | Apache | -d로 백그라운드 실행, -p로 포트 번호 지정 |
nginx | Nginx | -d로 백그라운드 실행, -p로 포트 번호 지정 |
mysql | MySQL | -d 시 -e로 MYSQL_ROOT_PASSWORD 지정 |
postgres | PostgreSQL | -d 시 -e로 POSTGRES_ROOT_PASSWORD 지정 |
mariadb | MariaDB | -d 시 -e로 MYSQL_ROOT_PASSWORD 지정 |
런타임과 그 외 소프트웨어
이미지 이름 | 컨테이너의 내용 | 비고 |
node | Node.js | -d 사용 x, 인자로 app 명령 등을 지정해 도구로 사용 |
아파치 컨테이너를 여러 개 실행하기
호스트 컴퓨터의 포트 번호는 중복되면 안되지만, 컨테이너 포트는 중복되어도 상관없으므로 모두 80번으로 설정한다. 포트 번호는 이미지 제작자가 지정한 것으로, 변경이 불가하다.
- 컨테이너 생성 및 실행
docker run --name apa000ex3 -d -p 8081:80 httpd
docker run --name apa000ex4 -d -p 8082:80 httpd
docker run --name apa000ex5 -d -p 8083:80 httpd
2. localhost 확인
8081, 8082, 8083 모두 접속된다.
3. 컨테이너 종료
docker stop apa000ex3
docker stop apa000ex4
docker stop apa000ex5
4. 컨테이너 삭제
docker rm apa000ex3
docker rm apa000ex4
docker rm apa000ex5
Nginx 컨테이너 실행하기
nignx란?
아파치와 같은 웹 서버 소프트웨어이다.
- 컨테이너 생성 및 실행
docker run --name nginx000ex6 -d -p 8084:80 nginx
2. 웹 페이지 확인
3. 컨테이너 종료
docker stop nginx000ex6
4. 컨테이너 삭제
docker rm nginx000ex6
MySQL 컨테이너 실행하기
- 컨테이너 생성 및 실행
docker run --name mysql000ex7 -dit -e MYSQL_ROOT_PASSWORD=myrootpass mysql
2. ps로 확인
3. 컨테이너 종료
docker stop mysql000ex7
4. 컨테이너 삭제
docker rm mysql000ex7
이미지 삭제
이미지로 컨테이너를 만들었으니, 이미지를 삭제해보자.
컨테이너를 삭제해도 이미지는 삭제되지 않고 그대로 남는다.
이미지가 늘어나면 용량이 부족해지므로, 이미지는 그때그때 삭제하도록 하자.
docker image rm 이미지_이름
여러개를 삭제하는 경우
docker image rm 이미지_이름 이미지_이름 이미지_이름
이미지 목록 확인하기
docker image ls
이미지 삭제하기
docker image rm httpd
httpd 이미지가 사라졌다.
'개발 공부 > 인프라' 카테고리의 다른 글
[그림과 실습으로 배우는 도커 & 쿠버네티스] Ch6 - 실전에 활용 가능한 컨테이너 사용법을 익히자 (1) | 2025.01.07 |
---|---|
[그림과 실습으로 배우는 도커 & 쿠버네티스] Ch5 - 여러 개의 컨테이너를 연동해 실행해보자 (0) | 2025.01.06 |
[그림과 실습으로 배우는 도커 & 쿠버네티스] Ch3 - 도커를 사용해보자 (0) | 2025.01.05 |
[그림과 실습으로 배우는 도커 & 쿠버네티스] Ch2 - 도커의 동작 원리 (0) | 2025.01.05 |
[그림과 실습으로 배우는 도커 & 쿠버네티스] Ch1 - 도커란 무엇인가? (0) | 2025.01.05 |