반응형
리뷰 (Review)
더보기
Docker Image 명령
- Docker Image를 tar 파일로 저장
- docker image save [옵션] <image 이름> <파일 이름>
- Docker Image를 저장한 파일 내용으로 Image 복원
- docker image load [옵션] <파일 이름>
Container 생성 과정 (생명 주기)
- Docker Image 다운로드 (pull) / Docker Image 생성 (build)
- Docker Container 생성 (create) - 격리된 프로세스 생성
- Docker Container 실행 (start) - Application 실행
- Docker Container 중지 (stop) - 필요에 따라 재시작 가능 (restart)
- Docker Container 삭제 (remove) - Application 종료
Docker Conatiner 명령
- Container 생성
- docker create <image 이름> [옵션]
- Application 실행을 의미하는 것은 아니다.
- Container 실행
- docker start <container ID / 이름>
- [이미지 다운로드], 생성, 실행을 일괄적으로 수행하는 명령
- docker run [옵션] <image 이름> <container에서 동작 명령>
- -i : 대화식 모드 사용
- -t : tty (단말 디바이스) 사용
- -d : 백그라운드에서 Container 실행, Container를 daemon process로 생성
- --name <container에 부여할 이름> : Container에 이름 부여
- -h <host 이름> : Container의 hostname 설정
- -p <host port>:<container port> : host port와 container port 연결 (포트 포워딩)
- -e <환경변수이름>=<값> : Container 내의 환경 변수 등록
- 실행중인 Container 목록 출력
- docker ps [옵션]
- Container 중지
- docker stop <container ID / 이름>
- Container 삭제
- docker container rm <container ID / 이름>
- docker rm <container ID / 이름>
- -f : 실행 중이라도 container 강제 삭제
Container 모니터링 도구
- cAdvisor 사용
- GUI 방식으로 Container에 대한 모니터링을 쉽게 수행할 수 있다는 장점
- 일반적으로 많이 쓰이는 모니터링 도구
- cAdvisor 사용 방법 등에 대한 참고 자료
- Container 리소스 상태 실시간 확인
- docker stats <container ID / 이름>
- Container의 실행 중인 프로세스 상태 확인
- docker top <container ID / 이름>
Docker Container 명령어
Docker Container 생성 실습
docker run -it --rm --name ubuntu1804 ubuntu:18.04 /bin/bash
- ubuntu 18.04 ver image로 container 생성 및 실행
- -it : 터미널 상태에서 사용자와 상호 작용이 가능한 container 실행
- --rm : container가 종료될 때 자동으로 container 삭제
- --name : container 이름 지정
- /bin/bash : container가 생성된 후 해당 명령 실행
docker run -dit -p 80:80 --name webserver nginx
- nginx image로 webserver container 실행
- -dit : 백그라운드로 터미널 상태에서 사용자 상호 작용 가능
- -p 80:80 : host port 80을 container port 80으로
docker exec -it webserver /bin/bash
- webserver container에 /bin/bash 실행
docker run -dit --name linuxserver -e VAR1=Ubuntu18.04 -e VAR2=LinuxServer ubuntu:18.04
- -e : container 내에 환경 변수 설정
- container 생성 시 환경 변수 등록이 필요하면 -e 옵션을 통해 개별적으로 환경 변수 설정하거나
--env-file <파일명> 옵션을 통해 환경 변수를 저장한 파일을 통해 설정할 수 있다.
docker run -dit -m 1g --rm --name linuxserver ubuntu:18.04
- -m <메모리 크기> : 메모리 사용량을 제한하여 container 생성, 단위 b, k, m, g 중 선택
docker run -dit --cpu-shares 512 --rm --name linuxserver ubuntu:18:04
- --cpu-shares <CPU 사용량> : CPU 사용 비율을 제한하여 container 생성
Python Application을 Container로 실행
- 실습용 python Application 준비
from random import shuffle
from time import sleep
gamenum = input("Input Lotto Game Number : ")
for i in range(int(gamenum)):
balls = [x+1 for x in range(45)]
ret = []
for j in range (6):
shuffle(balls)
number = balls.pop()
ret.append(number)
ret.sort()
print(f"lotto number {i + 1:2} : ", end = " ")
print(ret)
sleep(1)
- 파이썬 인터프리터 환경의 container 실행
docker run -it -d --name python-run python
- python-run container에 진입하여 shell 실행
docker exec -it python-run bash
- host에 있는 lotto.py 파일을 python-run container의 /home 디렉토리에 복사
docker cp lotto.py python-run:/home
- lotto.py 프로그램 실행
docker exec -it python-run python /home/lotto.py
JavaScript 프로그램을 Node.js Container를 이용하여 실행
- 실습용 Node.js Application 작성
var http = require("http");
var content = function(req, res) {
res.writeHead(200);
res.end("Docker Container - Node.js app");
};
var web = http.createServer(content);
web.listen(8080);
- Node.js 실행 환경의 container 실행
docker run -dit -p 80:8080 --name node-run node:16.17
- app.js 파일을 node-run container의 / 디렉토리에 복사
docker cp app.js node-run:/
- node-run container에 bash를 실행하여 동작 확인
docker exec -it node-run bash
- app.js 프로그램 실행
docker exec -it node-run node app
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 / 이름>
- ex) docker container inspect webserver | grep Pid
- inspect 결과에 대하여 pipe와 grep을 활용하여 검색
- ex) docker container inspect webserver --format "{{.State.Pid}}"
- --format 옵션을 이용하여 원하는 내용 검색
- --format 옵션을 이용하여 원하는 내용 검색
- ex) docker container inspect webserver | grep Pid
- docker container inspect <container ID / 이름>
- container log 정보 출력
- docker container logs <container ID / 이름>
- -t : 시간 흐름에 따른 log 정보
Docker Image 생성
- Docker image는 container를 생성하기 위한 목적으로 사용
- Docker hub를 통해 미리 작성된 Docker image를 다운로드하여 사용하는 것이 일반적이며
Docker hub에서 제공하는 Docker image는 기본이 되는 Image를 제공한다. - 사용자가 원하는 형태의 Image를 별도로 생성할 수 있으며 필요하다면 registry를 통해 배포할 수 있다.
Dokcer Image 생성 방법
- docker commit 명령 이용
- 현재 동작중인 container를 활용하여 image 생성
- docker commit <현재 동작중인 container ID / 이름> <생성할 image 이름>
- 현재 동작중인 container를 이용하여 image 생성
- 명령이 성공하면 docker images 명령으로 image 확인
더보기
- 위의 실습에서 진행한 python lotto.py 파일 실행하는 Docker image 파일 생성
docker commit python-run lotto-python:0.1
- lotto.py 프로그램 실행 container 생성
docker run -it --rm lotto-python:0.1 python lotto.py
- Dockerfile을 통해 직접 생성
- Dockerfile은 image 생성 내용을 기술한 텍스트 파일
- Dockerfile을 build 하여 image 생성
Dokerfile
- docker image 생성, 즉 필요로 하는 개발 환경을 제공하기 위한 여러 명령 집합
- Dockerfile, dockerfile 모두 가능하나 통상 Dockerfile을 많이 사용하며 별도의 형상/버전 관리 툴을 이용하여 관리한다.
Dockerfile 중요 명령어
- FROM
- 생성하려는 image의 base image 지정
- hun.docker.com에서 제공하는 공식 image 사용 권장
- 크기가 작은 base image 사용
- tag를 지정하지 않으면 latest 버전으로 지정
- RUN
- 설정된 기본 이미지에 패키지 업데이트, 각종 패키지 설치, 명령 실행 등을 작성
- 1개 이상 작성 가능
- CMD
- 생성된 Docker image를 container로 생성하여 실행할 때 실행되는 명령 기술
- ENTRYPOINT 명령문으로 지정된 명령에 default로 넘길 파라미터 지정할 때 사용
- 여러 개의 CMD 명령을 사용해도 마지막 한 개의 CMD 명령만 처리
- 일반적으로 image의 container 실행 시 Application daemon이 실행되도록 하는 경우 유용
- ENTRYPOINT
- 생성된 Docker image를 container로 실행할 때 실행되는 명령
- container 실행 시 명령 및 인자 값 전달하여 실행한다는 점이 CMD와의 차이점
- 여러 CMD를 사용하는 경우 ENTRYPOINT 명령과 함께 사용
- COPY
- Host에 있는 파일을 Docker image에 복사하는 명령
- 통상 Dockerfile과 같은 디렉토리에 있는 파일을 Docker image에 복사할 때 사용
- EXPOSE
- container가 host 네트워크를 통해 들어오는 트래픽을 listening 하는 포트와 프로토콜 지정
- WORKDIR
- container 상에서 작업할 경로 전환을 위해 사용
- WORKDIR을 지정하면 RUN, CMD, ENTRYPOINT, COPY 명령은 해당 디렉토리를 기준으로 실행
Dockerfile을 이용하여 Docker image 생성
- docker build <Dockerfile 위치> -t [<사용자 ID>/]<docker image 이름>:<버전 번호>
- -t : docker image에 tag 추가 허용 옵션
- <사용자 ID> : docker image를 docker registry에 upload 할 때 해당 사용자 ID repository에 upload
Dockerfile 생성 실습
더보기

- ubuntu 배포판에 apache web server를 설치하고 계산기 web Application을 실행하는 image 생성
- image 생성을 위해 필요한 파일 저장 디렉토리 생성
- image 생성 시 필요한 파일을 생성한 디렉토리에 복사
- Dockerfile 작성
# base image
FROM ubuntu:18.04
# Apache web server setup
RUN apt-get update && \
apt-get install -y apache2
# Application COPY
COPY ./index.html /var/www/html
COPY ./calc.js /var/www/html
# EXPOSE setting
EXPOSE 80
# Command start
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]
- Image 생성
docker build . -t calc-ubuntu:0.1
- 생성된 image로 container를 생성하여 실행 확인
docker run -dit -p 80:80 --name calc-web calc-ubuntu:0.1

TIF
전체를 바라보는 시각이 필요하다.
2022. 09. 30 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 44일차 (1) | 2023.10.30 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 43일차 (3) | 2023.10.27 |
구름 쿠버네티스 전문가 과정 6기 - 41일차 (0) | 2023.10.24 |
구름 쿠버네티스 전문가 과정 6기 - 40일차 (0) | 2023.10.23 |
구름 쿠버네티스 전문가 과정 6기 - 39일차 (0) | 2023.10.20 |