docker login 서버IP:5000
---
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
🚀 Private Docker 저장소에 Push
docker push 서버IP:5000/도커이미지이름:태그이름
🚀 Private Docker 저장소에 Pull
docker pulll 서버IP:5000/도커이미지이름:태그이름
🧷 SSL이 적용되어야 etc/docker/daemon.json 파일 생성 과정이 생략 가능.
docker 컨테이너를 수동으로 생성 -> docker run = [pull] + create + start + [command]
docker pull ubuntu:16.04
docker images
docker create -it --name myubuntu16-1 ubuntu:16.04
docker ps -a
docker start myubuntu16-1
docker attach myubuntu16-1
-----
한번에 한다면?
docker run -it --name=myubuntu16-2 ubuntu:16.04 bash
Docker 컨테이너 CLI
docker [container] run [option] docker_image [command]
docker CLI 옵션
docker top | port | stats
# 컨테이너엣 실행 중인 프로세스 조회.
docker top node-run
# 컨테이너에 매핑된 포트 조회
docker port node-run
# 컨테이너 리소스 사용 통계에 대한 실시간 스트림 출력(스트림 통계 비활성화, --no-stream)
docker stats node-run
# 컨테이너에서 발생하는 stdout(표준출력), stderr(표준에러) 출력.
while true; do curl 192.168.56.101:6060; sleep 3; done
# 다른 터미널에서.
docker logs -f node-run
# 출력되는 로그 양이 큰 경우, disk full error의 원인.
docker info | grep -i log
# 출력되는 로그 양이 큰 경우, disk full error의 원인이 되기도 함.
sudo ls -l /var/lib/docker/containers/[CONTAINER ID]
# 해당 파일 내용 비우기.
sudo truncate -s 0 [CONTAINER ID]-json.log
# 컨테이너에서 발생하는 log size 제한.
sudo vi /etc/docker/daemon.json
sudo systemctl restart docker.service
sudo systemctl status docker.service
docker run -dit -p 6062:6060 --name=node-run2 \
-h node-run --log-driver json-file --log-opt max-size=30m --log-opt max-file=10 \
noderun:1.0
# mySQL 컨테이너 로그 확인.
docker run -dit --name=mydb mysql:5.7-debian
docker ps -a
docker logs mydb
docker [container] inspect
# 컨테이너 내부 구조 정보 확인.
docker container inspect node-run
docker는 플랫폼의 기능과 유용성을 개선하는 새로운 기능 및 개선 사항이 포함된 업데이트를 정기적으로 릴리즈하여 새로운 docker 기능을 도입 -> 모든 작업의 workflow를 단순화 할 수 있음.
2) 버그 수정
docker에도 다른 소프트웨어 처럼 버그 또는 예기치 못한 버그가 발생함. 발견된 버그를 해결하여 안정성 및 성능을 개선하는 수정사항을 제공.
3) 보안 패치
널리 사용되고 있는 컨테이너화 플랫폼인 docker는 보안 취약성에 대해 지속적으로 inspect되어, 최신 버전의 docker를 사용하면 최신 보안 패치를 사용하여 잠재적 악용 위험을 최소화하고 컨테이너화 된 애플리케이션의 전반적인 보안 태세를 개선할 수 있음.
4) 성능 개선.
docker 업데이트에 종종 성능 최적화가 포함되어 있기 때문에 작업을 더 빠르고 효율적으로 만듦. 이러한 개선 사항은 컨테이너 시간 단축, 네트워킹 및 I/O 성능 향상, 전반적인 리소스 활용도 향상으로 이어질 수 있음. 즉, 최신성을 갖는 docker는 컨테이너화 된 애플리케이션을 최적화할 수 있음.
5) 최신 기술과의 호환성
기술 환경은 지속적으로 발전하고 있으며 새로운 도구와 프레임워크가 새롭게 생겨나고 있음. 최신 버전의 Docker를 사용하여 최신기술과의 호환성이 보장되어 컨테이너 환경에서 새로운 최신 tool들을 활용할 수 있음.
6) 커뮤니티 및 생태계 지원
docker의 발전은 주변 생태계의 발전에 영향을 줌. 인기있는 도구 및 라이브러리 들은 docker 기능 및 버전을 지원하도록 업데이트되고, 최신 버전의 docker를 사용하여 docker 기반 플러그인 및 통합을 활용해 컨테이너화 된 application을 build 및 관리하기 위한 옵션을 사용 가능.
7) 유지 관리 및 오랜 기간 동안의 지원
docker는 일부 release를 장기지원(LTS) 버전으로 지정하는 관리체계를 따름. LTS 버전은 버그 수정 및 보안 패치를 포함하여 확장된 유지 관리 및 지원을 받아 중요한 프로덕션 환경에 적합하기 때문에 최신 Docker를 사용하면 장기적인 요구 사항에 대해 안정적이고 잘 지원되는 docker 환경을 보장 받을 수 있음.
Docker 버전 업데이트 시,
1) 기존에 실행 중이던 컨테이너들을 stop 함. 2) 현재 사용 중인 19.x 버전의 docker엔진을 삭제함. 3) 최신 버전의 docker 엔진을 설치. 4)기존 버전에서 운영중 이였던 컨테이너 재기동(start) 5) if, error 발생 시 원인 파악, 문제 해결 -> 중지되었던 컨테이너 start 6) 필요에 따라 Ubuntu Linux도 18.04 -> 22.04로 upgrade 진행
~$ sudo vi /etc/nginx/nginx.conf
events { worker_connections 1024; }
http {
# List of application servers
upstream backend-alb {
server 127.0.0.1:5001;
server 127.0.0.1:5002;
server 127.0.0.1:5003;
}
# Configuration for the server
server {
# Running port
listen 80 default_server;
# Proxying the connections
location / {
proxy_pass http://backend-alb;
}
}
}
~$ sudo systemctl restart nginx.service
~$ sudo systemctl status nginx.service
nginx container reverse proxy 구성
docker run -d -p 8001:80 --name=proxy-container nginx:1.25.0-alpine
~$ vi nginx.conf
events { worker_connections 1024; }
http {
upstream backend-alb {
server 192.168.56.101:5001;
server 192.168.56.101:5002;
server 192.168.56.101:5003;
}
server {
listen 80 default_server;
location / {
proxy_pass http://backend-alb;
}
}
}
~$ docker cp nginx.conf proxy-container:/etc/nginx/nginx.conf
먼저 docker를 설치 한다. 블로그에 도커 설치 관련 블로그가 있다. 참고하면 된다. 도커가 설치가 되면. nvidia-gpu를 사용하기 위해서 nvidia 드라이버를 서버에 설치 해야 한다.
nvidia 드라이버 설치 방법
## NVIDIA 드라이버의 최신 버전을 얻기 위해 NVIDIA PPA를 추가.
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
## 설치 가능한 최신 드라이버를 확인하고 설치.
ubuntu-drivers devices
## 특정 버전 설치.
sudo apt-get install nvidia-driver-XXX
## 드라이버 설치가 완료되면, 시스템을 재부팅하여 드라이버를 활성화.
sudo reboot
## 재부팅 후, 드라이버가 제대로 설치되었는지 확인하려면 다음 명령어.
nvidia-smi
버전 선택 시 참고
서버에 nvidia-smi가 잘 떴다면,
이제, docker-container에서 GPU를 사용할 수 있도록 nvidia-docker2를 설치해야 한다.