- Docker
- Docker 구성 요소
- Docker 설치 - CentOS7
- Docker 설치 - Window
- Docker 설치 - Ubuntu
- Docker Client
- 용어
- 참고 문헌
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
Hyper-V 활성화 필요
다운로드 : https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows
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, 리눅스 컨테이너)
참고 문헌
최종 수정일: 2024-09-30 12:26:18
이전글 :
다음글 :