Basic Docker

Sunwoo Pi·2022년 12월 23일
0
post-thumbnail

Container System : Docker

Container System : 별도의 OS들을 필요로 하지 않기 때문에 효율적으로 작동, 별도의 OS 대신 Host OS에 접근하는 Container Engine이 필요

가장 유명한 Container Engine : Docker Engine


Docker

Docker는 기본적으로 Linux 기반으로 작동
그러나 Windows 및 MacOS에서도 작동 가능 (Docker가 알아서 Linux 환경을 설정)


Docker 기본 구조 및 명령어

docker pull [IMAGE NAME] # Docker Hub(Registry)로부터 Image 다운로드

docker images # Docker Image 확인
docker rmi [IMAGE NAME] # Image 삭제

docker create --name Pi [IMAGE NAME] # 다운로드 받은 Image를 실행시켜 Pi라는 이름의Container 생성
docker start [CONTAINER NAME or CONTAINER ID] # Container start
docker stop [CONTAINER NAME or CONTAINER ID] # Container stop
docker attach [CONTAINER NAME or CONTAINER ID] # Container 내부 접속

docker exec -it [CONTAINER NAME or CONTAINER ID] /bin/bash # docker attach와 유사, 메인 프로세스(docker attach)와는 독립적으로 동작하는 새로운 프로세스가 컨테이너 내에서 시작

docker run --name Pi [IMAGE NAME] # docker pull + docker create + docker start
docker run -it --name Pi [IMAGE NAME] # docker pull + docker create + docker start + docker attach
# docker start는 기본이 Background 실행이지만 docker run의 경우 기본적으로 Foreground 실행이다.
# docker run을 Background로 실행하려는 경우 -d 옵션을 추가해준다.

docker ps # Container 조회
docker ps -a # stop된 Container를 포함한 모든 Container 조회

docker rm [CONTAINER NAME or CONTAINER ID] # Container 삭제
docker rm --force [CONTAINER NAME or CONTAINER ID] # Container 강제 삭제

docker start [CONTAINER NAME or CONTAINER ID] # Container start
docker stop [CONTAINER NAME or CONTAINER ID] # Container stop

docker ps # Container 조회
docker ps -a # stop된 Container를 포함한 모든 Container 조회

docker logs -f [CONTAINER NAME or CONTAINER ID] # Container log 보기
docker history [IMAGE NAME] # 이미지가 어떻게 생성되었는지, 각 레이어가 어떤 명령어에 의해 추가되었는지 등의 정보를 확인

docker commit [CONTAINER NAME or CONTAINER ID] [생성할 IMAGE NAME] # 원하는 Container를 Image로 저장

docker login # Docker Hub 계정 정보 입력
docker push [Docker Hub에서 만들어놓은 REPOSITORY NAME:원하는 TAG NAME] # 원하는 Image를 Docker Hub에 Upload

docker run --name [CONTAINER NAME] -p 8080:80 httpd # Port Forwarding : Host - Container

docker run -p 8000:80 -v C:\Users\username\Desktop\htdocs\:/usr/local/apache2/htdocs/ httpd # Host와 Container의 File System 연결

Docker Setting

Visual Studio Code Docker 관련 Extension 설치

  • Docker
    Visual Studio Code 내에서 쉽게 Docker Image 및 Container 관리 가능
  • Dev ContainersVisual Studio Code 내에서 쉽게 Container 내부로 접속하여 개발 가능

Docker Group 추가

docker ps -a

와 같은 명령어가 sudo 권한으로만 실행된다면, 혹은
Docker가 정상적으로 설치되었고 실행중이나 Visual Studio Code Docker Extension에서

Is Docker installed and running?

다음과 같은 오류가 발생한다면, 아래의 명령어를 Terminal을 통해 실행한다.

sudo groupadd docker # docker Group 추가
sudo usermod -aG docker $USER # docker Group에 사용자 추가

grep docker /etc/group # docker Group에 사용자가 추가되었는지 확인

docker Group에 사용자가 추가되었지만 해당 오류가 지속적으로 발생한다면 Server를 Reboot하거나
사용자 home Directory의 .vscode-server/ Directory를 삭제후 다시 Server에 접속한다.

Docker Pull 및 Container 생성

docker pull pytorch/pytorch:2.1.0-cuda11.8-cudnn8-devel
docker create --name sample_container pytorch/pytorch:2.1.0-cuda11.8-cudnn8-devel
docker start sample_container

# 위의 세 명령어를 아래의 한 명령어를 통해 대체 가능
docker run --name sample_container pytorch/pytorch:2.1.0-cuda11.8-cudnn8-devel

# CUDA 11.8 및 PyTorch가 구성되어 있는 PyTorch 공식 Docker Image

Visual Studio Code 안에서 Container 내부 접속

Docker Container를 생성했으면 원하는 Container를 골라 "Attach in New Window"
(자동으로 Container start)

Docker Container 내 기본 Packages 설치

apt update 
apt dist-upgrade -y
apt install -y sudo vim nano git # 원한다면 다른 Packages도 함께 명시하여 설치

<참고>
생활코딩 Docker 입문 수업 Youtube 강좌
https://www.youtube.com/watch?v=Ps8HDIAyPD0&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf

profile
어려운 게 제일 싫어😝

0개의 댓글