이번 포스팅에서는 도커 컨테이너
의 생명주기
에 대해 포스팅해보자 합니다. 우리는 생명주기
라는 단어를 여러 바운더리에서 흔히 찾아볼 수 있습니다.
생명주기란 쉽게 말해서 어떠한 형상이나 물체가 생성부터 폐기되기 까지의 프로세스를 관리하는 것을 의미합니다. 이는 굉장히 단위부터 기술에 아우르기까지 범위가 확장될수 있습니다.
이번 포스팅에서는 도커의 핵심인 컨테이너의 생명주기에 대해 설명해보고자 합니다.
컨테이너 생명주기
란, 컨테이너를 생성
하고, 실행
, 정지
, 폐기
하기까지 컨테이너를 관리하는 것입니다. 생명주기를 도식화하면 아래와 같습니다.
우선, 도커 컨테이너를 생성하려면, 컨테이너를 생성할 이미지
가 필요합니다.
도커 이미지란?
도커 이미지
란 컨테이너를 만드는 데 사용되는읽기 전용 템플릿
(Read-only templates)입니다. 컨테이너는 이러한 템플릿에서 생성된 배포된 인스턴스(Deployed Instances)입니다.
쉽게 말해, 우리가 빵을 만들기 위해서는 빵틀이 필요합니다.
도커 이미지를 받기 위해서는 docker (image) pull 이미지명:버전명
명령어를 사용합니다. 버전을 명시하지 않을 경우 최신 버전(lastest)
으로 대체됩니다.
ex) docker pull httpd
이러한 빵틀로 빵을 제작합니다. ⇒ 도커 컨테이너를 생성합니다.
저는 웹서버를 제공하는 httpd
이미지로 80
으로 접속 가능한 웹서버 컨테이너 web
을 생성할 예정인데, 아래와 같이 적어줍니다.
$ docker run --name web -p 80:80 -d httpd
이는, 풀어서 이야기하면
와 같습니다.
해당 컨테이너가 잘 생성
/실행
되었는지 확인하기 위해서는 컨테이너를 조회해봅시다.
$ docker ps
$ docker container ls
만약 나오지 않는다면 실행 중이 아닌 것이기 때문에 아래와 같이 적어줍니다.
$ docker ps -a
더이상 사용하지 않는 컨테이너는 삭제해야 합니다. 아래와 같이 적어줍니다.
컨테이너를 종료한 뒤 삭제하거나,
$ docker stop web
$ docker rm web
컨테이너를 강제로 삭제합니다.
$ docker rm -f web
도커 컨테이너는 주로 쉽고 간편한 docker run
명령을 통해 생성됩니다.
아래는 자주 사용되는 docker run 옵션입니다.
옵션 | 내용 |
---|---|
--name [컨테이너명] | 컨테이너 이름 지정 |
-p [호스트 포트번호]:[컨테이너 포트번호] | 포워딩할 포트 번호 지정 |
-v [호스트 디스크]:[컨테이너 디렉터리] | 호스트 디스크를 볼륨으로 마운트 |
-v [볼륨명] | 볼륨 마운트 |
-e [환경변수키:값] | 환경변수 설정 |
--net=[네트워크명] | 컨테이너를 네트워크에 연결 |
-d (detach) | 백그라운드로 실행 |
-i (interactive) | 컨테이너에 터미널(키보드) 연결 |
-t (tty) | 특수 키를 사용가능하도록 함 |
--restart | 재시작 옵션 [on-failure / on-failure:횟수n / always / unless-stopped] |
ubuntu
, centOS
, debian
, fedora
, busybox
, alpine
등 리눅스 운영체제만 담겨 제공됩니다.
웹서버로는 httpd
, ngnix
등이 유명하다. 웹서버는 통신이 전제가 되므로 옵션을 통해 포트번호를 지정해야 됩니다.
데이터 베이스 서버로는 mysql
, postgres
, mariadb
등이 있다. 데이터베이스 관리 소프트웨어에는 기본적으로 루트패스워드
를 반드시 지정해야 됩니다.
프로그램을 실행하려면 해당 언어의 실행 환경인 런타임
이 필요합니다. 런타임 역시 컨테이너 형태로 제공됩니다.
런타임에는 openjdk
, python
, php
, ruby
, perl
, gcc
, node
등이 있습니다.
그 밖의 소프트웨어에는 registry
, wordpress
, nextcloud
, redmine
등이 있습니다.
Web
시스템이 동작하기 위해서는 여러 가지의 환경
이 구축되야 합니다.
예전에 자주 사용되던 기술들로 이루어진 LAMP는 Linux
, Apache
, MySQL
, PHP
를 합친 조합으로 LAMP 스택
이라고 부른다고 합니다.
소프트웨어가 발전하면서 아파치가 ngnix로, MySQL이 MariaDB나 PostgreSQL로 등 여러가지 조합이 변경되었지만 [리눅스
+ 웹 서버
+ 프로그래밍 언어 런타임
+ 데이터베이스
]의 조합 임에는 변함이 없습니다.
도커 환경 구성은 단독
으로도 사용되지만, 이러한 LAMP 스택으로 구성되어 묶음
으로도 사용됩니다.
이번 포스팅에서는 도커 컨테이너
의 생명주기
와 컨테이너의 여러가지 유형들, LAMP Stack
에 대해 포스팅해보았습니다.
다음 포스팅에서는 도커 컴포즈
에 대해 포스팅하겠습니다!