728x90
728x90
Docker Compose 공식 문서 : https://docs.docker.com/compose/compose-file/compose-file-v3/ 쿠버네티스를 사용하게 될 경우 도커 컴포즈를 사용할 일은 거의 없다. 도커 컴포즈는 도커 IaC 라고 보면 된다. 도커 컴포즈의 버전은 도커 엔진에 따라 다르므로 공식 문서를 확인하고 필요한 도커 컴포즈 버전을 사용하면 된다. docker compose 로 실행한다. docker-compose.yml 또는 docker-compose.yaml 에 코드를 작성해야 한다. 예제 1 version: '3' services: web: image: httpd version: ‘3’ 은 3의 가장 최신 버전을 사용, service 는 컨테이너이다. docker com..
Docker Network 파일명으로 패키지 찾을 때 yum provides /usr/sbin/ip ubuntu 에서는 apt-file search /usr/sbin/ip 로 찾을 수 있다. VM 머신 안에 도커 브릿지가 컨테이너를 띄울 때 마다 veth 인터페이스를 컨테이너에 붙여준다. 그러면 VM 내부의 라우터를 통해 외부로 나갈 수 있다. $ sudo apt install -y bridge-utils $ brctl show bridge name bridge id STP enabled interfaces docker0 8000.02423d0a04e3 no veth35500bc # nat 테이블 확인 $ sudo iptables -t nat -L -n # -t 타입, -L 리스트, -n 숫자로 확인 p..
immutable 인프라 스트럭쳐 → 컨테이너는 이미지를 가지고 찍어내는 것이기 때문에 변하지 않는다. 데이터베이스는 immutable 인프라 스트럭쳐로 구현할 수 없다. 컨테이너를 지우면 DB 의 내용이 사라지기 때문이다.. 그래서 매번 컨테이너를 삭제하기 전에 DB 내용을 백업하고 새롭게 DB 컨테이너를 만들었을 때 백업 내용을 업로드해야 하나..? 컨테이너 라이프 사이클과 별개의 스토리지를 만들어야 한다. 컨테이너가 지워지더라도 스토리지는 삭제되지 않게..이것을 볼륨이라고 한다. 볼륨은 컨테이너를 지워도 삭제되지 않는다. AWS 로 예를 들면 EC2 인스턴스에 EBS 볼륨을 붙이는 것이라고 생각하면 편하다. 이미지의 Config.Volumes 선언되어 있으면, 자동으로 Docker 볼륨이 생성되고 ..
docker 명령 구조 $ docker container $ docker image $ docker network $ docker volume 이미지 관련 명령어 로컬 도커 이미지 목록 확인 $ docker images 도커 이미지 검색 $ docker search 도커 이미지 다운로드 $ docker pull 도커 이미지 다이제스트로 다운로드 $ docker pull choi@localhost ~ docker pull centos@sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f4730f44dec0f47843 docker.io/library/centos@sha256:8faead07bd1d5fdd17414a1759eae004da5daa9575a846f473..
Container 핵심 기술 Cgroup: Controll Group(격리된 공간에 얼마 만큼의 리소스를 사용할 것인지, 리소스 양 제어) Namespace: Isolation(격리를 담당) IPC NS: 프로세스 간에 통신하는 내장 큐 PID NS: 프로세스, 프로세스를 격리 Network NS: 네트워크, 네트워크를 격리 UID NS: 유저, 유저를 격리 Mount NS: 마운트 포인트, 마운트를 격리 UTS NS: 호스트 네임, 호스트를 격리 Layered Filesystem Docker = Docker Engine Docker CE: Community Edition Vagrant 환경 구성 ~/vagrant/container/Vagrantfile Vagrant.configure("2") do |c..
도커 컴포즈가 컨테이너 사이의 네트워크를 연결시켜 준다. yml → 일반적으로 구성 파일 및 데이터가 저장되거나 전송되는 응용 프로그램에서 사용되고 XML 이나 json 포맷으로 많이 쓰였지만, 좀 더 사람이 읽기 쉬운 포맷으로 나타난게 yml 이다. services → 실행하려는 컨테이너들을 정의한다. image → 컨테이너에서 사용하는 이미지 build → 도커 파일의 위치를 뜻하고 . 은 현 디렉토리에 있는 Dockerfile 사용하겠다 ports → 내 로컬 환경에서 사용하는 로컬 포트와 컨테이너 포트를 연결시켜주는 곳이다.