728x90
1. Docker
: 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계없이 언제나 동일하게 실행될 것을 보증한다. Build Once, Run Anywhere!
기존에 만들어둔 패키지를 도커로 감싸면, 이식성(가져와 사용하기에 얼마나 용이한지)이 월등히 좋아진다~
창현님이 오늘 도커로 말 것 있다 해서 본인 작업하는 것 화면 공유로 어떻게 하는지 보여줄 줄 알았더니,
도커 허브 가입부터 이미지/컨테이너 만들고 Docker Repository에 올리는 것까지 다 코칭해줬다ㅎㅎㅎ 🙇
아래에 절차를 정리해놨다.
1) Docker Hub 가입

2) 터미널로 Docker 설치
# apt 패키지 인덱스를 최신으로 업데이트
sudo apt-get update
# https repository를 사용할수 있도록 필요한 패키지들 설치
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# Docker의 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o \
/usr/share/keyrings/docker-archive-keyring.gpg
# stable repository 등록
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# apt 패키지 인덱스를 최신으로 업데이트
sudo apt-get update
# docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 생성된 docker group에 지금 접속 중인 사용자를 추가
sudo usermod -aG docker $USER
# Docker 재시작
sudo service docker restart
# 컴퓨터 재부팅
reboot
# Docker Hub에 가입한 계정으로 로그인
docker login
3) Dockerfile 생성
# Docker image로 만들 파일들을 넣을 폴더를 만들고 파일들을 담은 뒤 해당 경로로 이동
cd /mnt/FE0A5E240A5DDA6B/workspace/jeon2_package/docker/
# Dockerfile 생성 -> IDE(VS Code) 열리면서 작성할 수 있게됨
code Dockerfile
on IDE(VS Code)
# FROM ubuntu:20.04
FROM python:3.8.14-bullseye
# Docker image 빌드 시 Timezone 설정(UTC -> KST)
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Seoul
RUN apt-get install -y tzdata
# RUN mkdir ~/jiyeon # 작업 디렉터리 생성
WORKDIR /tmp # 작업 경로 설정
RUN pip install --upgrade pip
RUN pip install -U requests datetime requests beautifulsoup4 pyyaml
COPY KoreaStockAutoTrade.py ./KoreaStockAutoTrade.py
COPY config.yaml ./config.yaml
# CMD [ ~/bin/sh", "-c", ""] # CMD, ENTRYPOINT 둘 중 하나만 쓰기
ENTRYPOINT [ "python", "KoreaStockAutoTrade.py"]
4) 로컬 터미널
# Docker image 빌드
docker build -t stock_trade .
# Docker image를 기반으로 새로운 컨테이너를 생성/실행(실행 후 자동 종료. :~는 태그)
docker run stock_trade:latest
# Docker image를 기반으로 새로운 컨테이너를 생성/실행(자동 종료 중지 옵션으로 실행)
docker run -d stock_trade:latest sleep infinity
# 모든 Docker container(-a 옵션은 실행 중이지 않은 컨테이너들도 포함)의 리스트를 출력
docker ps -a
# 이미 백그라운드에서 실행 중인 Docker container 내부로 접속
docker exec -it caa1c1de7f9e /bin/bash
# 생성된 Docker image 확인
docker images
# 잘못 만든 Docker image 있을 경우 image id 넣고 삭제
docker image rm -f 5b89ef988c30
# https repository에 올릴 Docker image에 태그(commit) 남기기
docker tag stock_trade:latest ljy9969/stock_trade:v0.1
# https repository에 push
docker push ljy9969/stock_trade:v0.1
728x90


5) 컨테이너 실행

6) 실행 중인 컨테이너 내부로 접속하고 싶은데
만약 자동 중지 옵션을 꺼놓고 컨테이너를 생성/실행해도 꺼진다면 (docker run -d stock_trade:latest sleep infinity),
Docker image 만들 때 하단에 코드를 추가하여 이를 고칠 수 있다.
# keeping a Docker container alive(아래 셋 중 하나 쓰기)
ENTRYPOINT ["tail", "-f", "/dev/null"]
# CMD ["tail", "-f", "/dev/null"]
# CMD ["sleep", "infinity"]
실행 중인 컨테이너 종료하려면
docker stop [OPTIONS] CONTAINER [CONTAINER…]
중지된 모든 컨테이너를 일괄 삭제하려면
docker container prune -y
728x90
'개인 공부' 카테고리의 다른 글
9/14 수_webdriver_manager, StaleElementReferenceException (0) | 2022.09.14 |
---|---|
9/11 일_Amazon ECR(Docker Image push/pull) (0) | 2022.09.12 |
9/6 화_DBeaver (0) | 2022.09.07 |
8/28 일_리눅스 시작 프로그램 (0) | 2022.08.28 |
8/13 토_코딩 테스트 연습(Python) (0) | 2022.08.13 |