1. 테스트환경
os : aws의 Ubuntu 18.04.4 LTS
2. docker 설치
sudo apt-get update
sudo apt-get install docker.io
3. docker 설치 확인
docker --version
3. hello-world 컨테이너 실행하기
docker에서 컨테이너 애플리케이션을 실행하는 방법
1) Pull : 이미지 가져오기 (캐시 또는 remote repository 에서)
2) Create : 이미지 빌드해서 컨테이너 생성
3) Start : 이미지 실행하기
이 3가지를 한번에 수행하는 명령어 : docker run hello-world
locally에서 hello-world 이미지를 찾지 못했지만,
library/hello-world에서 찾아서 pulling을 한다. (docker 이미지를 다운받아서 로드한다)
다시 같은 명령어를 한번 더 수행하면
앞에 이미지를 pulling한 history가 생략되고 바로 docker 이미지가 빌드 됨
바로 로컬환경에 이미지를 캐싱해두고 있기 때문에
4. 도커 실행명령어(RUN)
docker run [OPTIONS] IMAGE[:TAG|@DIGEST\ [COMMAND] [ARG..]
옵션[OPTIONS]
-d : detached mode 백그라운드 모드
-p : 호스트와 컨테이너의 포트 연결 (포워딩)
-v : 호스트와 컨테이너의 디렉토리 연결(마운트)
-e : 컨테이너 내에서 사용할 환경변수 설정
-name : 컨테이너 이름설정
-rm : 프로세스 종료시 컨테이너 자동제거
-it : 터미널 입력옵션
-link : 컨테이너 연결
이미지[IMAGE]
이미지명
4-1. 예시1) ubuntu 컨테이너 실행하기
docker run unbuntu:16.04
이미지명 : ubuntu:16.04
local이 아니라 library에 있는 우분투이미지를 가지고 컨테이너 환경 실행함
대신 명령어가 없어서 그냥 이미지가지고 컨테이너 만들기만 하고 끝남
docker run --rm -it ubuntu:16.04 /bin/bash
옵션
rm : 프로세스 종료시 컨테이너도 종료한다
it : 이미지를 가지고 실행한 컨테이너의 터미널에 접근한다
이미지명 : ubuntu:16.04
명령어
/bin/bash : bash 쉘에 접근한다
명령어 수행결과
exit로 bash쉘 종료하면 컨테이너도 같이 종료
이렇게 도커 이미지 파일이 있기 때문에 따로 설치 없이 하나의 컨테이너 환경을 구성할 수 있음
4-2. 예시2) nginx 컨테이너 실행하기
docker run --name tutorial-nginx -p 8080:80 nginx
옵션
name : docker이미지명 지정
p : docker내부의 포트와 연결할 로컬포트 지정 (로컬이랑 연결할 포트 : 내부에서 연결할 포트)
nginx는 내부에서 기본적을 80포트랑 연결하는데,
로컬에서는 8080포트랑 연결하기 위해서 매핑
이미지명 : nginx
<수행결과>
컨테이너 안에 nginx라는 어플리케이션을 실행하게 되서 접속가능
다만, 보안그룹으로 8080 포트가 열려있어야함
4-3. 예시3) mysql 컨테이너 실행하기
docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql: 5.7
옵션
d :백그라운드 모드로 실행
p : 원래도 mysql은 3306 포트랑 연결되는데 내가 사용하는 포트도 3306으로 이 둘을 연결한다
e : mysql컨테이너 내부에서 사용할 환경변수 설정 (환경변수 참고 : https://hub.docker.com/_/mysql/)
사용한 환경변수 mysql_allow_empty_password : 패스워드 없이 root계정 만든다
name : docker이미지명 지정
이미지명
mysql:5.7
<수행결과>
컨테이너 안에 mysql라는 어플리케이션을 실행하게 되서 접속가능
다만, 보안그룹으로 3306 포트가 열려있어야함
다만, mysql client가 사전에 설치되어 있어야함 (apt install mysql-client-core-5.7)
출처 https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html
출처: https://evir.tistory.com/entry/Kubernetes-AWS에-Kubernetes-설치하기
'🌴 DevOps > Docker & K8s' 카테고리의 다른 글
쿠버네티스 구성요소(5/5)- Namespace 목적 및 특징 (0) | 2020.05.17 |
---|---|
[Docker4] Docker로 Apache/Tomcat 연결하기(진행) (0) | 2020.05.03 |
[Docker3] docker 기본명령어(run/ps/logs/exec) (1) | 2020.05.03 |
쿠버네티스 구성요소(4/5) - Service 구성 및 종류/kube-proxy (0) | 2020.04.20 |
쿠버네티스 구성요소(3/5) - Volume 구성 및 특징 (0) | 2020.04.20 |
쿠버네티스 구성요소(2/5) - Pod 구성 및 특징 (0) | 2020.04.20 |