about docker basic

docker  – written by Go language.  anounced 2013.03 — 도커엔진 – 컨테이너를 생성하고 관리하는 주체

가상머신 – 도커 컨테이너 비교 — 배포, 성능에서 우위, 여러 애플리케이션의 독립성과 확장성 제공.

도커엔진 – 2017년 이전 1.13 최후 버전, 이후는 도커EE, 도커CE로 구분 17.03-CE (출시년도)-(출시월)-(도커엔진종류)

리눅스 도커엔진설치 – 사전확인사항
1. 커널확인(최소 3.10 version 이상 유효) – host# uname -r
2. 64비트, 지원 기간내 배포판 확인 (우분투 14.04, 16.04, 18.04 및 CentOS 7 등)
3. sudo 통해 설치 or root 권한 소유 계정에서 설치 진행

우분투 14.04, 16.04, 18.04
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
# add-apt-repository \
“deb [arch=amd64] https://download.docker.com/linux/ubuntu $(1sb_release -cs) stable”
# apt-get update
# apt-get install docker-ce

CentOS7, RHEL7
# yum install -y yum-utils
# yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# yum install -y docker-ce
# systemctl start docker

도커 이미지
[저장소 이름]/[이미지 이름]:[태그]  alicek106/ubuntu:14.04           ubuntu:latest

도커 컨테이너
1. 버전 확인
# docker -v
2. docker run -i -t ubuntu:14.04 — 도커허브에서 자동으로 이미지 내려 받음.
3. 컨테이너에서 기본 사용자는 root 이고 호스트 이름은 무작위 16진수 해시값. 컨테이너 고유 ID의 앞 일부분
4. root@0f4c5b82c03f:/# ls
root@0f4c5b82c03f:/# exit or  Ctrl + D — 빠져 나오면서 컨테이너 정지시킴<-> Ctrl + P, Q

# docker pull centos:7  — 이미지 다운
# docker images — 이미지 목록 확인
# docker create -i -t –name mycentos centos:7  — run -> create(생성만 할 뿐, 진입하지 않음)
# docker start mycentos
# docker attach mycentos — 내부진입, Ctrl+P, Q 로 빠져나옴

컨테이너 목록 확인
# docker ps
# docker ps -a
# docker inspect mycentos | grep Id
# docker run -i -t ubuntu:14.04 echo hello world!
# docker rename angry_morse my_container
컨테이너 삭제
# docker rm angry_morse
# docker ps -a
# docker rm mycentos — 실행 중 컨테이너는 삭제 안됨. 정지 후 삭제, 강제옵션
# docker stop mycentos
# docker rm mycentos
# docker rm -f mycentos  — 강제옵션
# docker container prune — 연습용 모든 컨테이너 삭제
# docker ps -a -q — q는 컨테이너의 ID만 출력
# docker sop $(docker ps -a -q)  — 컨테이너 목록을 변수로 모든 컨테이너 삭제
# docker rm $(docker ps -a -q) — 컨테이너 삭제시 데이타 모두 삭제됨.

컨테이너를 외부에 노출
# docker run -i -t –name network_test ubuntu:14.04
root@26081d500bf5:/# ifconfig
# docker run -i -t –name mywebserver -p 80:80 ubuntu:14.04  — [host port]:[container port]
# docker run -i -t -p 3306:3306 -p 192.168.0.100:7777:80 ubuntu:14.04 –복수개 포트 포워딩 > 컨테이너 생성 진입 후 아래 명령으로 apache 웹서버 설치
root@7d50b96b237b:/# apt-get update
root@7d50b96b237b:/# apt-get install apache2 -y
root@7d50b96b237b:/# service apache2 start

데이터베이스와 워드프레스 웹서버 컨테이너 연동 예
# docker  run -d \
–name wordpressdb \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=mysql \
mysql:5.7

# docker run -d \
-e WORDPRESS_DB_PASSWORD=password \
–name wordpress \
–link wordpressdb:mysql \
-p 80 \
wordpress

# docker ps
# docker port wordpress  — wordpress 컨테이너가 사용 중인 포트 출력
웹브라우즈에서 [호스트 IP]:32769에 접근 확인
-d: Detached 모드로 컨테이너 백그라운드 실행
-e: 컨테이너 내부 환경변수 설정
# echo ${ENVIRONMENT_NAME}
컨테이너 내부에서 echo로 환경변수 출력
root@a0897ecfbbae:/# echo $MYSQL_ROOT_PASSWORD

# docker exec -i -t wordpressdb /bin/bash
root@a0897ecfbbae:/# echo $MYSQL_ROOT_PASSWORD

# docker exec wordpressdb ls /
root@a0897ecfbbae:/# mysql -u root -p
–link: 내부 ip 알 필요 없이 컨테이너 alias로 접근

# docker start(stop) wordpress wordpressdb  여러 개 컨테이너 시작(종료)

도커 볼륨
호스트 볼륨 공유