반응형
리뷰 (Review)
더보기
Docker Container 관련 명령어
- container 일시 중지
- docker container pause <container ID / 이름>
- docker pause <container ID / 이름>
- container 일시 중지 해제
- docker container unpause <container ID / 이름>
- docker unpause <container ID / 이름>
- container 세부 정보 확인
- docker container inspect <container ID / 이름>
- docker container inspect <container ID / 이름>
- container log 정보 출력
- docker container logs <container ID / 이름>
Docker Image 생성 방법
- docker commit 명령 이용
- 현재 동작중인 container를 활용하여 image 생성
- docker commit <현재 동작중인 container ID / 이름> <생성할 image 이름>
- Dockerfile을 통해 직접 생성
- FROM - 생성하려는 image의 base image 지정
- RUN - 설정된 기본 이미지에 패키지 업데이트, 각종 패키지 설치, 명령 실행 등을 작성
- CMD - 생성된 Docker image를 container로 생성하여 실행할 때 실행되는 명령 기술
- ENTRYPOINT - 생성된 Docker image를 container로 실행할 때 실행되는 명령 기술
- COPY - Host에 있는 파일을 Docker image에 복사하는 명령
- EXPOSE - container가 host 네트워크를 통해 들어오는 트래픽을 listening하는 포트와 프로토콜 지정
- WORKDIR - container 상에서 작업할 경로 전환을 위해 사용
- docker build <Dockerfile 위치> -t [<사용자 ID>/] <docker image 이름>:<버전 번호>
Docker Image 생성
Dockerfile 명령어
- MAINTAINER
- Docker Image 빌드 작성자 이름과 이메일
- LABEL
- Docker Image 작성 목적으로 버전, 타이틀, 설명, 라이선스 정보 기술
- 1개 이상 작성 가능
Docker Image 생성 실습 (2)
더보기
Apache Web Server 환경에서 구동되는 계산기 Web Application Image 생성
- Apache Web Server를 base image로 하여 계산기 web application image 생성
- image 생성을 위해 필요한 파일 저장 디렉토리 생성
- mkdir calc-httpd
- image 생성 시 필요한 파일을 생성한 디렉토리에 복사
- index.html
- clac.js
- Dockerfile 작성
# base image - Apache Web Server
FROM httpd:2
# image 작성자 정보
MAINTAINER Jinoo.K <jinook@jinook.com>
# web application 파일 복사
COPY index.html /usr/local/apache2/htdocs
COPY clac.js /usr/local/apache2/htdocs
- image 생성
docker build . -t calc-httpd:0.2
- 생성된 image로 container를 생성하여 실행 확인
docker run -dit -p 80:80 --name calc-web2 calc-httpd:0.2
Docker Volume
Docker Volume
- Docker는 Union File System 사용
- 하나의 이미지로부터 여러 container를 만들 수 있는 방법 제공
- image에 변경된 내용을 저장할 수 있도록 해준다.
- 데이터베이스, 웹 프로그램 등 업무에 사용하는 Application에서 발생하는 데이터에 접근하고, 이것을 공유하기 위해 Docker Volume 사용
- 제공하는 서비스의 로직(Logic, Algorithm, 일처리 순서)과 데이터는 반드시 분리
- Application에서 발생한 여러 가지 데이터에 영향을 주지 않고 언제든 다른 container로 이전할 수 있다면 운영자는 데이터를 안전하게 관리하고 운영할 수 있다.
- Docker Volume은 container에서 생성, 재사용할 수 있고 host 운영체제에서 직접 접근 가능
- 보존되어야 하는 데이터를 유지(데이터 영속성과 지속성) 하기 위한 메커니즘 제공
- container 내부 데이터는 container의 lifecycle과 연관되어 container 종료 시 삭제
- Docker Volume을 사용하면 container가 삭제되어도 Volume은 독립적으로 운영되기 때문에 삭제되지 않는 특징
Docker Volume 종류
- volume
- Docker에서 권장하는 방법
- docker volume create <volume 이름> 명령을 통해 생성
- Docker Volume은 docker 명령으로 관리
- 여러 container 간에 안전하게 공유
- volume 드라이버를 통해 원격 호스트 및 클라우드 환경에 volume 내용을 저장하고 암호화할 수 있다.
- 새 volume으로 지정될 영역에 데이터를 미리 채우고 container와 연결하면 container 내에서 바로 데이터 사용 가능
- volume 생성 실습
더보기
- volume 생성
docker volume create my-share1
- volume 목록 확인
docker volume ls
- 생성된 volume 상세 정보 확인
docker volume inspect my-share1
- volume 저장 위치 내용 확인
sudo ls -lF /var/lib/docker/volumes
- 생성된 volume에 원하는 파일 복사
sudo cp index.html /var/lib/docker/volumes/my-share1/_data
- 생성된 volume을 container 생성 시 --mount 옵션 사용하여 연결
docker run -dit --name server1 --mount source=my-share1,target=/mnt ubuntu:14.04
- 생성된 volume을 container 생성 시 -v 옵션 사용하여 연결
docker run -dit --name server2 -v my-share1:/mnt ubuntu:14.04
- my-share1 volume 삭제 (container에 mount 된 상태에서는 삭제 불가능)
docker volume rm my-share1
- bind mount
- volume에 비해 사용이 제한적
- host 파일 시스템 절대 경로:container 내부 경로 를 직접 mount 하여 사용
- 사용자가 파일 또는 디렉토리를 생성하면 해당 host 파일 시스템의 소유자 권한으로 연결되고,
존재하지 않는 경우 자동 생성, 자동 생성 디렉토리는 root 소유 - container 생성 시 지정하여 사용하고, container 제거 시 bind mount는 해제되지만 host 디렉토리는 유지
- bind mount 생성 실습
더보기
- bind mount에 사용할 디렉토리 생성 및 필요한 파일 복사, 이동
- 별도의 mount volume 생성 없이 지정된 디렉토리 mount
- bind mount, --mount 옵션으로 지정된 디렉토리 mount
docker run -dit --name server1 \
--mount type=bind,source="$(pwd)",target=/mnt \
ubuntu:14.04
- bind mount, -v 옵션으로 지정된 디렉토리 mount
docker run --name server2 -v "$(pwd)":/mnt ubuntu:14.04
- bind mount 확인
docker container inspect server2 -f "{{.HostConfig.Binds}}"
- tmpfs mount
- tmpfs mount 방법은 임시적이며 host 메모리에서만 지속되므로 container가 중지되면 tmpfs mount가 제거되고
내부에 기록된 내용은 삭제된다. - host 또는 container 쓰기 가능 계층에서 지속하지 않지만 중요한 파일을 임시로 사용하는 방법에 유용
- container 실행 시 지정하여 사용하고, container 제거 시 자동 해제
- tmpfs mount 방법은 임시적이며 host 메모리에서만 지속되므로 container가 중지되면 tmpfs mount가 제거되고
Docker Network
Docker Network
- docker container 및 서비스는 Docker Network를 통해 격리된 container 간의 network 연결뿐만 아니라
Docker 외의 다른 Application 워크로드와도 연결 가능 - Docker Network의 하위 시스템 연결을 위해 Docker Network Driver를 사용하여 상호 간 통신 가능
- Docker Network 정의
- Docker 설치 시 기본적으로 제공되는 docker0는 소프트웨어적으로 구현된
가상 이더넷 브리지 (virtual sthernet bridge) 네트워크이고, 이를 통해 격리된 container들의 상호간 통신 제공
- Docker 설치 시 기본적으로 제공되는 docker0는 소프트웨어적으로 구현된
- 별도 브리지 네트워크를 생성하여 연결값으로 설정하지 않는 한,
실행되는 모든 container는 docker0 브리지에 연결하여 172.17.0.0/16 CIDR 범위로 IP 주소 할당- /16 - 65,536개 IP 주소 범위
TIF
분명히 과정 시작할 때 보았던 초보를 위한 도커 안내서 - 도커란 무엇인가? 는
온통 이해 할 수 없는 단어들과 이야기 뿐이었다.
Docker도 어느 정도 배웠겠다 다시 한번 들어가봤는데, 전에 내가 막혔던 부분이
CentOS, Ubuntu, AWS, Azure, Chef, ... 이런 것들이 나열되어 있는 부분에서 다음에 봐야겠다고 닫은 것 같다.
그땐 전혀 몰랐던 생소한 것들이었으니까.
지금 다시 보니 눈에 확 들어오지는 않아도 어느 정도 이해는 할 수 있겠다.
시리즈 전체 부분에 대해서도 어느 정도 수업 시간에 다뤘던 것들이다.
복습하고, 복습하고, 또 복습하고, 내 것으로 만들어야 한다.
2022. 10. 04 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 45일차 (2) | 2023.11.01 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 44일차 (1) | 2023.10.30 |
구름 쿠버네티스 전문가 과정 6기 - 42일차 (2) | 2023.10.26 |
구름 쿠버네티스 전문가 과정 6기 - 41일차 (0) | 2023.10.24 |
구름 쿠버네티스 전문가 과정 6기 - 40일차 (0) | 2023.10.23 |