그림과 실습으로 배우는 도커&쿠버네티스

Jiyeong·2023년 5월 2일
0

Docker

목록 보기
6/6
post-thumbnail

01. 도커 엔진 시작하기 / 종료하기

  • 도커 엔진은 컨테이너 실행 중이 아니면 컴퓨터 리소스를 거의 쓰지 않음
  • 자동 실행으로 디폴트값이 설정되어 있어 컴퓨터 부팅 시 도커 엔진도 자동 실행됨
  • 하지만 컨테이너는 도커 엔진이 한 번 종료 되면 정지 상태가 됨

macOS 기준

  1. 도커 엔진 시작 : 파인더 -> 애플리케이션 폴더 -> Docker Desktop
  2. 도커 엔진 종료 : 화면 우측 상단 막대에서 도커 클릭(고래 모양) -> 메뉴 Quit Docker Desktop
  3. 자동 실행 설정 : 우측 상단 도커 클릭 -> 메뉴 Preferences -> Start Docker Desktop when you log in 체크(체크 해제 시 비활성화)

리눅스

도커 엔진 시작 : sudo systemctl start docker
도커 엔진 종료 : sudo systemctl stop docker
자동 실행 설정 : sudo systemctl enable docker

02. 컨테이너의 기본적인 사용 방법

명령어와 대상

컨테이너를 다루는 모든 명령은 docker 명령어로 시작

docker 커맨드 대상
//이름이 penguin인 이미지를 실행할 때
docker container run penguin

상위 커맨드는 container 또는 image와 같은 대상의 종류로 딱 12종류만 있음. 대상에 해당하는 부분은 구체적인 이름 지정.

옵션과 인자

        상위 커맨드  하위 옵션  대상      인자
docker container run -d penguin --mode=1

-d : 백그라운드 실행
-- mode=1 : 모드 1로 실행

커맨드

container를 붙이지 않아도 실행 가능한 명령어가 있어 관례상 container run 커맨드를 사용함.

docker container run
docker run

옵션

옵션은 커맨드에 세세한 설정 지정 시 사용하며, 주로 - 나 --를 붙여 시작하지만 안 붙이는 경우도 존재함.

  • 커맨드에 어떤 값을 저장하고 싶다면 --name 옵션 뒤에 옵션 값 지정
--name penguin
  • 옵션을 한꺼번에 사용하는 경우
-dit

대상

구체적인 이름 지정.

인자

대상에 전달할 값 지정. 문자 코드 또는 포터 번호 등 전달 가능. - 또는 --로 시작함.

--mode=1
--style nankyoku

도커 버전 명령어

대표적인 명령어


출처

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

컨테이너를 실행하거나 종료하고, 컨테이너 목록을 확이하는 등 컨테이너를 다루기 위해 사용하는 커맨드

start / stop / create / run / rm / exec / ls / cp / commit

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

이미지를 내려받거나 검색하는 등 이미지와 관련된 기능을 실행하는 커맨드

pull / rm / ls / build

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

볼륨 생성, 목록 확인, 삭제 등 볼륨(컨테이너에 마운트 가능한 스토리지)과 관련된 기능을 실행하는 커맨드

create / inspect(볼륨 상세 정보 출력) / ls / prune(현재 마운트되지 않은 볼륨 모두 삭제) / rm

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

도커 네트워크의 생성, 삭제, 컨테이너의 네트워크 접속 및 접속 해제 등 도커 네트워크와 관련된 기능을 실행하는 커맨드.

도커 네트워크란 도커 요소 간의 통신에 사용하는 가상 네트워크를 가리킨다.

connect / disconnect / create / inspect / ls / prune / rm

그 밖의 상위 커맨드

대부분 도커 스웜과 관련된 커맨드로서 초보자 수준에서 사용할 일은 없는 커맨드

  • checkpoint : 현재 상태를 일시적으로 지정 후 나중에 해당 시점의 상태로 되돌릴 수 있음. 현재는 실험적인 기능으로 씀.
  • node : 도커 스웜의 노드를 관리하는 기능.
  • plugin : 플러그인을 관리하는 기능.
  • secret : 도커 스웜의 비밀값 정보를 관리하는 기눙
  • service : 도커 스웜 서비스 관리
  • stack : 도커 스웜 또는 쿠버네티스에서 여러 개의 서비스를 합쳐 구성한 스택 관리
  • swarm : 도커 스웜 관리
  • system : 도커 엔진 정보 확인

단독으로 쓰이는 커맨드

상위 커맨드 없이 단독으로 쓰는 커맨드로 주로 도커 허브 검색이나 로그인 시 사용

  • login
  • logout
  • search
  • version

03. 컨테이너 생성과 삭제, 실행, 정지

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

  • 컨테이너 실행 : docker run
    - 컨테이너 생성 시 이미지가 필요한데 이 이미지 부재 시 내려받는 기능도 겸함
    - 컨테이너 생성 : docker create
    - 컨테이너 실행 : docker start
    - 이미지 내려받기 : docker pull

컨테이너 생애 주기


출처

  • 컨테이너 폐기 시 컨테이너 정지 -> 동작 중인 컨테이너를 그대로 삭제 불가
  • 컨테이너 정지 : docker stop
  • 컨테이너 삭제 : docker rm

컨테이너 생성 및 실행 : docker run

<각종 옵션>

  • 컨테이너 이름 : --name
  • 포트 번호 : -p
  • 볼륨 마운트 : -v
  • 컨테이너 연결할 네트워크 : --net
  • 데몬 형태로 동작하는 소프트웨어의 컨테이너 : -dit
    - 백그라운드 실행 : -d
    • 컨테이너 터미널 연결 : -i
    • 특수 키 사용 가능 : -t
  • 환경 변수 설정 : -e
  • 사용 방법 안내 메세지 : -help

컨테이너 정지 : docker stop

컨테이너 삭제를 위해 먼저 정지 필수

컨테이너 삭제 :docker rm

정지 상태가 아닌 컨테이너를 대상으로 실행 시 오류가 발생하니 반드시 정지할 것!

한 번만 실행되는 컨테이너

실행하자마자 종료되므로 컨테이너가 터미널의 제어를 차지하더라도 일시적인 것이므로 문제가 되지 않음

데몬 형태로 동작하는 컨테이너

저절로 종료되지 않으므로 한번 터미너르이 제어를 넘기면 이를 되찾아 오기가 번거롭다

docker ps 커맨드

실행 중인 컨테이너의 목록 출력.
-a 옵션 추가 시 현재 존재하는 컨테이너(정지 상태 컨테이너 포함) 목록 출력.

  • CONTAINER ID
  • IMAGE : 컨테이너 생성 시 사용한 이미지 이름
  • COMMAND : 실행 시 설정된 프로그램 이름
  • CREATED : 컨테이너 생성 후 경과 시간
  • STATUS : 컨테이너 현재 상태. 실행 중 'Up', 종료 'Exited'
  • PORTS : 컨테이너에 할당된 포트 번호, '호스트 포트 번호 -> 컨테이너 포트 번호' 형식으로 출력. 포트 번호 동일 시 -> 뒷 부분 출력x
  • NAMES : 컨테이너 이름
docker run --name apa000ex1 -d httpd

docker ps

docker stop apa000ex1

docker ps -a

docker rm apa000ex1

  • stop이나 rm처럼 컨테이너 이름 지정하는 커맨드일 경우 컨테이너 ID 앞 글자만 좀 따서 적어도 실행됨.
docker rm apa

04. 컨테이너 통신

아파치

웹 서버 기능을 제공하는 소프트웨어로 아파치가 동작 중인 서버에 파일을 두면 이 파일을 웹 사이트 형태로 볼 수 있다.

  • 웹 브라우저를 통해 컨테이너에 접근이 가능하게 하려면 컨테이너 실행 시 설정 필요
  • 이 설정은 컨테이너 생성 후 기본적으로 변경 불가

컨테이너와 통신

  • 포트 설정하기

  • 컨테이너 속에서 실행 중인 아파치는 외부와 직접 연결이 되지 않아서 외부에서 접근 불가

  • 컨테이너를 실행 중인 컴퓨터(호스트)의 8080 포트와 컨테이너의 80번 포트를 연결

-p 8080:80

컨테이너 사용 시 여러 개의 웹 서버를 함께 실행 가능 -> 호스트 포트 번호를 모두 같은 것으로 사용한다면 어떤 컨테이너로 가야 하는 요청인 지 구분이 힘듦

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

리눅스 운영체제

  • ubuntu
  • centos
  • debian
  • fedora
  • busybox
  • alpine

웹 서버/데이터베이스 서버용

  • httpd : apache
  • nginx
  • mysql
  • postgres
  • mariadb

프로그램 실행을 위한 런타임과 그 외 소프트웨어

  • openjdk
  • python
  • php
  • ruby
  • perl
  • gcc : C/C++ 컴파일러
  • node
  • registy
  • wordpress
  • nextcloud
  • redmine

호스트 컴퓨터 포트 번호 중복 x / 컨테이너 포트 중복은 ㄱㅊ

06. 이미지 삭제

이미지 삭제 커맨드 : docker image rm

이미지 목록 정보 : docker image ls

profile
깃스타가 되고 싶은 벨플루언서

0개의 댓글