이전
다음

Docker



Docker 구성 요소

  • Docker Client : CLI (Command Line Interface)
  • Docker Server : Docker Container 관리
    • Docker Compose : 여러개의 Docker Container로 구성된 애플리케이션을 관리
      • compose.yml
    • Docker Container : 독립 가상 시스템
      • Port mapping 작업 필요
  • Docker Registry : Docker Image를 저장하고 공유하는 저장소
    • Docker Hub
    • Docker Image : Docker Container를 담은 읽기 전용 template 파일
    • Docker File : Docker Image를 빌드하기 위한 구성 정보(command 등)를 담은 파일
  • Docker Swarm : Cluster 관리
    • Load Balance
    • Service Discovery
  • Docker Machine : Cloud에서 Docker Host를 관리

Docker 설치 - CentOS7

yum  -y  update

#--- Repository 목록 조회
#---     /etc/yum.repos.d/ 폴더에 있는 ~.repo 파일을 삭제하면 repository를 삭제할 수 있다.
yum  repolist

#--- 설치된 Docker 삭제
yum  remove  docker*

#--- Docker CE (Community Edition) 설치 준비
yum  install  -y  yum-utils  device-mapper-persistent-data  lvm2

#--- Docker CE Repository 설정
yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

# yum-config-manager  --enable  docker-ce-nightly
# yum-config-manager  --disable  docker-ce-nightly
# yum-config-manager  --enable  docker-ce-test

yum  makecache  fast

#--- Docker CE 설치
#--- /var/lib/docker/ 폴더 사용

mkdir  -p  /work/install/docker
cd  /work/install/docker
# yumdownloader  --resolve  docker-ce

curl  -O  http://mirror.centos.org/centos/7/os/x86_64/Packages/libseccomp-2.3.1-3.el7.x86_64.rpm
curl  -O  http://bo.mirror.garr.it/1/slc/centos/7.1.1503/extras/x86_64/Packages/container-selinux-2.9-4.el7.noarch.rpm
# curl  -O  http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.107-3.el7.noarch.rpm
# yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.55-1.el7.noarch.rpm

rpm  -ivh  libseccomp-2.3.1-3.el7.x86_64.rpm
rpm  -ivh  container-selinux-2.9-4.el7.noarch.rpm
# yum  -y  --enablerepo=rhui-REGION-rhel-server-extras  install  container-selinux


yum  -y  install  docker-ce  docker-ce-cli  containerd.io

# yum  list  docker-ce  --showduplicates  |  sort  -r
# yum  install  docker-ce-${version}  docker-ce-cli-${version}  containerd.io

systemctl  enable   docker.service
systemctl  restart  docker.service

docker  version

Docker 설치 - Window


Docker 설치 - Ubuntu

apt  update
apt  install  linux-image-etra-$(uname -r)  linux-image-extra-virtual

#--- Docker 저장소 설치
apt  install  apt-transport-https  ca-certificates  curl  \  software-properties-common

#--- Docker 저장소의 key 추가
curl  -fsSL  https://download.Docker.com/linux/ubuntu/gpg  |  apt-key  add
apt-key  fingerprint  0EBFCD88

add-apt-repository  "deb [arch=amd64] <-DOCKER-EE_URL> $(lsb_release -cs) \ stable -e"

apt  update

apt  install  docker-ce

Docker Client

Docker Command

#--- Docker image 관리
docker  search  [options]  ${image}     #--- Docker image 검색
docker  search  --filter=stars=50  mysql

docker  pull  ${image}:${tag}                 #--- Docker image 다운로드
docker  pull  mysql:latest

docker  images  [options]               #--- 로컬 머신에서 사용할 수 있는 최상위 image 목록
docker  images  -a

docker  inspect  [options]  ${image}    #--- Image의 상세 정보 표시 (JSON)

docker  rmi  [options]  ${mage}         #--- Image 삭제

#--- Docker Container 관리
docker  create  [options]  ${image}  [command  args]        #--- Container 생성 (실행 않음)
docker  start  ${container}             #--- Container 실행

docker  run  [options]  ${image}:  ${tag}  [command, args]  #--- Image 실행

docker  restart  [options] ${container} #--- Container 재기동

docker  ps  [options]                   #--- 실행중인 container 목록 (Container ID 확인)
docker  ps  -a                          #--- 모든 container 목록

docker  rename  ${container}  ${newName}#--- Container ID를 새로운 이름으로 재지정

docker  attach  [options]  ${container} #--- Container에 인터랙티브 방식으로 연결

docker  exec  [options]  ${container}  command  args       #--- Container에서 명령 실행

docker  cp  [options]  ${container}:~  ~                   #--- 파일 복사
docker  cp  [options]  ~  ${container}:~

docker  pause  ${container}             #--- Container 멈춤
docker  unpause  ${container}           #--- Container 재실행

docker  inspect  [options]  ${container}#--- Container의 상세 정보 표시 (JSON)
docker  inspect  -format='{{.NetworkSettings.IPAddress}}'  ${container}

docker  rm  [options]  ${container}     #--- Container 삭제

docker  logs  [options]  ${container}   #--- 로그 표시 (표준 출력, 표준 오류)

docker  diff  ${container}              #--- 변경된 파일 표시
docker  commit  [options]  ${container}  [${image}:${tag}]#--- Container로 Image 생성

#--- 실행 예
docker  pull  ubuntu:latest
docker  run  -it  ubuntu  /bin/bash

docker  pull  mysql:latest
docker  run  --name  ~  -e  MYSQL_ROOT_PASSWORD=~  -d  mysql:lastest
#--- container : mysql_container
#--- software : mysql
#--- os : ubuntu
docker  create  --name ${container}  -v  /var/lib/${software}  ${os}

docker  run  --volumes-from ${container}  -v  /var/lib/${software}:/var/lib/${software}  -e  MYSQL_USER=mysql  -e  MYSQL_PASSWS=~  -e  MYSQL_DATABASE=~  -e  MYSQL_ROOT_PASSWORD=~  -it  -p  3306:3306  -d  mysql

docker  run  -d  --name  ~  --link  mysql:mysql  wordpress


Docker File

  • Dockerfile
From  ubuntu:14.04
Maintainer  pnuskgh@gmail.com
Run  apt  update
Run  apt  -y  install  MySQL-server
EXPOSE  3306
CMD  ["/usr/bin/MySQLd_safe"]

용어

  • LXC (Linux Container, 리눅스 컨테이너)

참고 문헌

이전
다음
공유하기