애플리케이션 배포를 위한 컨테이너 가상화(Docker 컨테이너)
Virtualization
Docker Virtualization
Docker Image
한 서버에서 여러 개의 컨테이너를 실행할 수 있다.
💡 Image
컨테이너가 실행에 필요한 설정값/정보를 가지고 있는 것
💡 Registry
이미지가 저장될 수 있는 저장소.
Public Registry로 많이 사용되는 사이트로를 Docker Hub 사이트가 있다.
Private Registry를 운영할 수도 있다. 간단한 서버를 하나 기동해서 Private Registry를 운영할 수도 있다.
Dockerfile
- -p 3306:3306
-p : 포트 포워딩을 하겠다
앞 3306 : 호스트 pc에서 접근하고자 하는 포트번호
뒤 3306 : 컨테이너에서 응답하기 위한 포트 번호
- -e MYSQL_ALLOW_EMPTY_PASSWORD=true
-e : 컨테이너 내에서 사용할 환경변수 설정
MYSQL_ALLOW_EMPTY_PASSWORD=true : 패스워드 지정 안함
- --name mysql
컨테이너 이름
부여하지 않으면, 랜덤으로 이름이 만들어지기 때문에 나중에 찾기 어려워진다.
- mysql:5.7
실행하고자 하는 이미지 이름, 태그네임, 커맨드 이름?
- exec
실행된 컨테이너에 추가적으로 커맨드를 전달하고자 할 때(Execute Command)
- -it
interative TTY옵션.
-i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
- mysql
실행시켰던 이미지 이름 또는 컨테이너 ID 입력
- bash
실행되고 있는 컨테이너에 어떤 커맨드를 가지고 프로그램을 실행할 것이냐? 배시쉘을 이용하겠다.
명령어 | 설명 |
create | 커맨드 |
start | 실행 |
run | 커맨드 + 실행 현재 로컬 시스템에 이미지가 존재하지 않는다고 하면 이미지 다운로드 받아옴 |
:TAG | 명시하지 않으면, 기본적으로 latest가 디폴트. 버전처럼 생각해도 괜찮(정확하게 버전은 아님) 버전 또는 원하는 이름을 붙여서 사용 가능할 수 있는 태그가 붙으면 된다. |
-d | detached mode 흔히 말하는 백드라운드 모드. -d를 추가하지 않으면 포그라운드에서 실행되고 있기 때문에 도커가 실행될 수 있는 로고 화면이 같이 보인다. 만약에 그 창을 종료하게 되면 도커 컨테이너가 같이 종료되기 때문에 실제 운영할 때는 백드라운드 상태에서 운영하는게 좋다. |
-p | 호스트와 컨테이너의 포트를 연결(포워딩) Container(mysql)의 3306번 포트를 Host OS(내 PC)의 3307번 Port와 연결. 호스트 머신의 포트 3307을 컨테이너 내부의 포트 3306으로 매핑. 컨테이너 내부에서 실행되는 MySQL 서버에 호스트의 포트 3307을 통해 연결할 수 있음을 의미. |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
--name | 컨테이너 이름 설정 |
-rm | 컨테이너가 스탑될 때 컨테이너를 아예 삭제시켜 버릴 수도 있다. 컨테이너 안에 만들어놨던 파일들이 같이 삭제될 수 있으니, 중요한 값은 컨테이너 외부에 저장시켜 두어야 한다. |
-rmi | 이미지 삭제 |
-it | -i 와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 i : interacitive T : TTY 키보드 상의 키를 조작함으로써 명령어가 컨테이너에 전달될 수 있도록 하는 옵션 |
여기서 이미지 다운
Docker 실행 (명령어)
docker 설치 확인
docker info
가지고 있는 이미지 목록
docker image ls
// 또는
docker imgaes
현재 실행 중인 컨테이너 목록
docker container ls
// 또는
docker ps
관련 키워드 찾기
(16.04가 들어간거 찾기)
# MAC
docker images | grep 16.04
# WINDOW
docker images | findstr "16.04"
우분투 다운 받기
https://hub.docker.com (여기서 이미지 다운)
docker pull ubuntu:16.04
현재 실행 중인 컨테이너 목록(중지된 컨테이너 포함)
docker ps -a
// 또는
docker container -a
컨테이너 삭제
docker rm 컨테이너ID
컨테이너 로그 보기
docker logs mariadb(컨테이너ID(또는 컨테이너 네임))
컨테이너 접속
docker exec -it mariadb /bin/bash
컨테이너 접속한거 나가기
exit
컨테이너 정지
docker stop mariadb
컨테이너 시작
docker start mariadb
MariaDB를 확인해보자
MySQL Workbench 프로그램 접속 -> + 버튼 클릭
내 host port를 입력해주고 Docker의 MariaDB port인 3306으로 도커엔진이 응답을 할 것이다.