개요
사내 프로젝트에서 활용한 도커 관련 내용 정리 및 요약 포스트
도커 설치
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
도커 sudo 키워드 없이 사용하기
sudo usermod -aG docker 로그인사용자
GPU(AI 모델 활용 시)를 위한 nvidia-docker 설치
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
도커 컴포즈 설치
sudo apt update
sudo apt upgrade
sudo apt-get install curl
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
//아래는 위에서 문제 시 수행
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
(위에서 에러시 sudo apt-get install docker-compose)
도커 빌드, 실행, 푸쉬, 네트워크
docker build --tag 유저명/컨테이너태그 .
// docker build --tag user/test-container:0.1 .
docker run --network 네트워크명 --name 별칭 -p 호스트포트:컨테이너포트 이미지명(컨테이너명)
// -- docker run --network t_network --name t_server -p 5000:3000 user/test-container:0.1
// --network t_network: 컨테이너는 t_network에 연결network에 연결
// --name t_server: t_server라는 별명 사용
// -p 5000:3000: 호스트에서 들어오는 5000번 포트는 모두 3000번으로 포워딩
// --gpus all: NVIDIA-DOCKER GPU 사용
sudo docker push 이미지명
//sudo docker push user/test-container:0.1
기타 명령어
docker inspect 컨테이너ID //해당 컨테이너 정보, ip 등...
docker exec -it 컨테이너ID bash //해당 컨테이너 환경 접속
기타 참고
MySQL 커스터마이징 컨테이너
FROM mysql
ENV MYSQL_DATABASE DB_NAME
ENV MYSQL_ROOT_PASSWORD 1234
COPY . /docker-entrypoint-initdb.d/
위 설정 없이 바로 생성하기
docker run -d -p 3360:3306 -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=stop --name mysql --net app-tier mysql
같은 디렉토리 레벨에 CreateTable.sql 생성하여 생성할 테이블 sql문 작성. 기본 insert 문도 작성 가능
create table test( ...
insert into student(s_number,name) value('1234','Jason');