
도커(Docker)는 소프트웨어 컨테이너 기술을 제공하는 플랫폼으로, 애플리케이션과 그 의존성들을 격리된 환경에서 실행할 수 있게 해줍니다. 이를 통해 애플리케이션을 효율적으로 개발, 배포, 및 실행할 수 있습니다. 도커는 다양한 운영 체제 및 클라우드 환경에서 동일한 방식으로 동작하므로 개발 환경과 프로덕션 환경 간의 일관성을 제공합니다.

docker-compose.yml 파일을 사용하여 애플리케니션의 서비스, 네트워크, 볼륨 등을 정의하고 관리할 수 있다.우분투 시스템 패키지 업데이트
sudo apt-get updaet
도커 설치에 필요한 패키지 설치
sudo apt-get intall apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
docker -v
docker images
# 실행중인 컨테이너
docker ps
# 모든 컨테이너
docker ps -a
docker pull {받을 이미지 이름}
docker logs {컨테이너 이름 or ID}
docker build -t {이미지 이름}:{태그}
docker run -d -p {in-port}:{out-prot} --name={컨테이너 이름} {이미지 이름}
sudo docker exec -it {{container-name}} /bin/sh
or
sudo docker exec -it {{container-name}} /bin/bash
도커 컴포즈는 여러 개의 도커 컨테이너를 정의하고 실행하기 위한 도구로, 단일 파일에 애플리케이션의 서비스, 네트워크, 볼륨 등을 설정할 수 있다.
docker-compose.yml 파일 내에서 각 서비스는 하나의 도커 컨테이너를 나타낸다. 서비스 정의에는 이미지, 포트 매핑, 환경 변수, 볼륨 마운트 등이 포함될 수 있다.sudo curl -SL "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
sudo docker-compose build
sudo docker-compose up
sudo docker-compose up -d
sudo docker-compose down
sudo docker-compsoe ps
sudo docker-compose pull
docker volume prune -f
version: "4"
services:
springboot:
image: {docker-id}/{spring-repository-name} # ex) duckbill413/test-spring:latest
container_name: {spring-container-name} # ex) test-spring
ports:
- "8080:8080"
networks:
- {network-name} # ex) test_net
restart: "always"
nginx:
image: {docker-id}/{nginx-repository-name} # ex) duckbill413/test-nginx:latest
container_name: {nginx-container-name} # ex) test-nginx
ports:
- "80:80"
depends_on:
- {nginx-upstream-address} # ex) springboot
networks:
- {network-name}
restart: "always"
networks:
{network-name}:
driver: bridge