1. Docker 사용하기
1) Docker 설치하기
리눅스(ubuntu)에서 설치
https://docs.docker.com/engine/install/ubuntu/
Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.
docs.docker.com
※ docker version 4.23.0 이후, docker compose는 자동으로 설치된다.
2) Docker 명령어
- Docker Version 확인
docker version
- 다운로드 받은 docker image 목록 확인
docker images
- docker image 가져오기
docker pull [docker image 명]:[태그] # docker image 가져오기
docker image pull [docker image 명]:[태그] # 위와 같은 명령어
# 태그를 통해 원하는 이미지를 가져올 수 있고 생략할 경우 최신 태그인 이미지를 가져온다
# 다만, docker run을 실행시킬 때, docker image가 없으면 docker-hub에서 image를 다운받고 실행
※ Docker Hub Registry
Docker Hub Container Image Library | App Containerization
Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.
hub.docker.com
- docker image 실행 ( docker container 생성 )
docker run [docker image명] # docker iamge 실행
# ex)
docker run --name some-nginx -p 8080:80 -d nginx
# nginx image를 -d(detached mode, 데몬, 백그라운드) 상태로 실행하고
# some-nginx라는 이름의 container를 갖고
# 호스트포트를 8080으로 포워드포팅하되 컨테이너 내부에서는 컨테이너포트를 80으로 실행
# (만약, nginx image가 없으면 pull하고 실행)
# 자주 사용하는 옵션
# -d : 백그라운드 모드
# -p : 호스트와 컨테이너의 포트를 연결(포워딩)
# -v : 호스트와 컨테이너의 디렉토리를 연결(마운트)
# -e : 컨테이너 내에서 사용할 환경변수 설정
# --name : 컨테이너 이름 설정
# -rm : 프로세스 종료 시 컨테이너 자동 삭제
# -ti :
- docker container 확인 및 정보 확인(container id, name을 알 수 있음)
docker ps # 실행중인 docker container들을 확인
docker ps -a # 실행중이거나 중지된 docker container들을 확인
docker ps | grep [container-name] # 실행중인 docker container명만 출력
# 이 두 명령어로 중지된 container만 확인할 수 있음
- 실행중인 docker image 중지
docker stop [container ID] #container ID를 갖는 docker프로세스를 중지
- docker container 재시작
docker start [docker container 명] # 중지된 container 재시작
docker restart [docker container 명] # 실행중인 container 재시작
- docker container 삭제
docker rm [container-ID or container-name] # docker container 삭제
# 실행 중인 container는 먼저 stop을 하고 삭제를 진행한다.
- docker container 내부 접속
docker exec -it [container-id] /bin/bash
- docker image 삭제
docker rmi [image명] # docker image 삭제
- docker image 생성
docker build -t [image명]:[tag] # 태그가 있는 docker image 생성
docker build -t [image명] .
# image명으로 이미지를 태깅하는데 현재 디렉터리(.)에서 빌드(Dockerfile이 위치한 경로)
※ 이미지 변경이 필요할 경우 새로운 이미지 생성 필요
- docker image에 새로운 태그 달기
docker tag ... # docker image에 태그 달기
※ 생성된 이미지나 가져온 이미지들은 기본적으로 docker.io/library/[이미지명]:[태그] 로 저장이 된다.
- docker image 구조 확인
docker image inspect [docker image 명]:[태그] # docker image 구조를 확인 (json 형태로 제공)
# 필요한 정보만 가져오기
# ex)
docker image inspect --format="{{.Os}}" nginx:latest
# 출력 : linux
docker image inspect --format="{{.RepoTags}}" nginx:latest
# 출력 : [nginx:latest]
docker image inspect --format="{{.ContainerConfig.ExposedPorts}}" nginx:latest
# 출력 : map[80/tcp:{}]
docker image inspect --format="{{.RepoTags}} {{.Os}}" nginx:latest
# 출력 : [nginx:latest] linux
- docker image history ( Dockerfile 에 대한 정보 )
docker history [이미지명]:[태그]
docker image history [이미지명]:[태그]
- docker log 확인
docker logs [컨테이너명] # 표준 출력(stdout), 표준에러(stderr) 출력
docker logs -f [컨테이너명] # 로그를 계속 출력
docker info | grep -i log # log를 저장하는 형식, log에 포함되는 내용 등을 알 수 있음
# 출력된 로그는 파일로 관리되기 때문에 HostOS의 disk를 사용
- docker container 정보 확인
docker container inspect [컨테이너명]
docker inspect [컨테이너명]
- docker 종료
docker exit [코드]
- 같은 네트워크에 있으면 컨테이너 이름으로 ip를 찾을 수 있다.
다만, default bridge network에서는 사용할 수 없다.
docker로 배포할 때는 network를 새로 생성해주어야 하고
docker compose로 배포할 때는 docker compose가 실행하면서 새로운 network를 만들기 때문에
굳이 bridge network를 정의할 필요 없다.
- 그외 명령어
docker stats node-test --no-stream # 컨테이너 리소스 통계 출력 (1회)
docker container prune # 실행중이지 않는 container들을 memory에서 삭제
docker image prune # 태그가 없는 image들을 memory에서 삭제
docker system prune # 사용하지 않는 도커 이미지, 컨테이너, 볼륨, 네트워크 등
# 모든 도커 리소스를 일괄적으로 삭제
- docker 관련 명령어
- Docker lifecycle
Hugging Face Hub : 협업적 오픈 소스 머신 러닝(ML)을 가능하게 하는 플랫폼
https://www.docker.com/blog/build-machine-learning-apps-with-hugging-faces-docker-spaces/
Build Machine Learning Apps with Hugging Face | Docker
Learn about the Hugging Face Hub and how to use its Docker Spaces to build machine learning apps effortlessly.
www.docker.com
https://huggingface.co/docs/hub/spaces-sdks-docker
Docker Spaces
Spaces accommodate custom Docker containers for apps outside the scope of Streamlit and Gradio. Docker Spaces allow users to go beyond the limits of what was previously possible with the standard SDKs. From FastAPI and Go endpoints to Phoenix apps and ML O
huggingface.co
장점 :
Docker Container 내부에서는 여러 소프트웨어들이 OS에서 자유롭다.
테스트 과정에서 Docker를 활용한다.
같은 환경으로 구성된 컨테이너로 동작한다.
Docker 및 Docker Compose 설치
마이그레이션(migration)은 한 운영 환경에서 다른 운영 환경으로 정보를 이동하는 과정
'배포(Manual + CICD파이프라인 구축) > Docker' 카테고리의 다른 글
Docker compose 사용하기 (0) | 2025.02.24 |
---|---|
Dockerfile 구성 (0) | 2025.02.23 |
Docker 개요 (0) | 2025.02.23 |