자주쓰는 명령어 $ docker login -- registry 로그인 $ docker search nginx -- 검색 $ docker pull nginx -- pull $ docker run -p 80:80 --name web nginx -- 실행 $ docker ps -- 실행중인 docker 프로세스 $ docker ps -a -- 생성/실행/중지 중인 docker 프로세스 $ docker stop web -- web 이란 컨테이너 중지 $ docker rm web -- web 이란 컨테이너를 삭제 (running 중인 컨테이너는 삭제가 불가) $ docker rm -f web -- web 실행중이어도 강제로 중지하고 삭제 $ docker rmi nginx -- nginx 이미지 삭제 $ dock..
프로그래밍 노트/도커
$ docker-compose -f kafka-cluster.yml up ${container_name}
2021.02.05 - [프로그래밍 노트/도커] - 스웜(swarm)을 이용한 도커 컨테이너 배포_1 2021.03.27 - [프로그래밍 노트/도커] - 스웜(swarm)을 이용한 도커 컨테이너 배포_2 앞에서 포스팅한 스웜클러스터는 아직 상용화할수 없다. 왜냐하면 외부에서 서비스(echo_nginx)에 접근을 할 수 없기 때문인데 이 문제를 해결해보자. 마지막에 설정한 visualizer는 스웜 클러스터 외부에서 접근(localhost:9000)하다. 이것은 contraints설정에서 visualizer 컨테이너를 manager에 배치되도록했기 때문인데, 호스트로부터 manager까지 여러 단계에 걸친 포트 포워딩을 사용했기 때문에 문제가되지 않는다. docker-compose.yml version: ..
2021.02.05 - [프로그래밍 노트/도커] - 스웜(swarm)을 이용한 도커 컨테이너 배포_1 2021.03.29 - [프로그래밍 노트/도커] - 스웜(swarm)을 이용한 도커 컨테이너 배포_3 (스웜 클러스터 외부에서 서비스 사용하기) 스택 스택은 하나 이상의 서비스를 그룹으로 묶은 단위로, 애플리케이션 저체 구성을 정의한다. 서비스는 애플리케이션 이미지를 하나밖에 다루지 못하지만, 여러 서비스가 협조해 동작하는 형태로 다양한 애플리케이션을 구성할 수 있다. 이를 구현하기 위한 상위 개념이 바로 스택이다. (여러 서비스를 함께 다를 수 있음) 스택은 말하자면 스웜에서 동작하는 스케일 인, 스케일 아웃, 제약 조건 부여가 가능한 컴포즈다. 스택은 docker stack 하위 명령으로 조작한다. ..
컨테이너를 단일 도커 호스트에만 배치하는 것은 간단하고 개발자가 관리하기도 쉽다. 그러나 많은 트래픽을 처리할 수 있는 실용적인 시스템은 여러 컨테이너가 각기 다른 호스트에 배치되는 경우가 많다. 또 컨테이너를 배치하는 방법과 하나 이상의 도커 호스트를 다루는 방법 역시 호스트 하나만을 다룰 때와는 달리 다양한 사항을 고려해야 한다. 도커 스웜이란 무엇인가? 도커 스웜은 여러 도커 호스트를 클러스터로 묶어 주는 컨테이너 오케스트레이션 도구의 한 종류이다. 컨테이너 오케스트레이션 도구없이는 도커 호스트 여러 대를 사용하는 확장성 있는 애플리케이케이션을 만들기가 어렵다. 도커 호스트에 어떤 컨테이너를 배치해야 하는지, 서로 다른 호스트에 위치한 컨테이너 간의 통신은 어떻게 제어하는지 등의 조율을 오케스트레이..
애플리케이션 내 단일 컨테이너의 적정 비중 실제 운영에서는 애플리케이션을 컨테이너 안에 어떻게 배치하는지가 매우 중요하다. 컨테이너 하나가 맡을 수 있는 적정 수준의 책임은 어느 정도일까? 세세하게 역할을 나누다가 시스템 전체의 복잡도가 올라가지는 않을까? 단일 컨테이너의시스템 내 비중은 어떻게 결정해야하는지 알아보자. 컨테이너 1개 = 프로세스 1개? 애플리케이션 + 인프라 = 도커 컨테이너 결과부터 말하자면, 컨테이너 1개 = 프로세스 1개 원칙은 괜찮게 생각될 수 있으나 지나치게 복잡해질수도 있다. 예를 살펴보자 정기적으로 작업을 실행하는 애플리케이션 정기적으로 어떤 작업을 실행하는 컨테이너가 있다고 가정해보자. 스케줄러 + 작업이 합쳐진 애플리케이션을 만든다면 컨테이너 1개 = 프로세스 1개 원칙..
DockerCompose 네트워크 디폴트 네트워크 기본적으로 Docker Compose는 하나의 디폴트 네트워크에 모든 컨테이너를 연결한다. 디폴트 네트워크의 이름은 docker-compose.yml가 위치한 디렉토리 이름 뒤에 _default가 붙는다. common/docker-compose.yml 에서 docker-compose up 을 실행하였다면, 디폴트 네트워크의 이름은 common_default 이다. sunghyunui-MacBook-Pro:common sunghyun$ docker network ls NETWORK ID NAME DRIVER SCOPE 7d10570b388c 03container_exam_default bridge local 5cdd4f6a9893 bridge bridge ..
도커 컨테이너 다루기 도커 컨테이너는 이미지를 바탕으로 만듭니다. 따라서 우리는 도커 이미지, 도커 컨테이너를 다루는 법에 익숙해져야 합니다. 자 그럼 도커 컨테이너에 대해 알아봅시다. 도커 컨테이너 생애주기 실행 중, 정지, 파기의 3가지 상태를 갖습니다. 실행 중 상태 docker container run 명령의 인자로 지정된 도커 이미지를 기반으로 컨테이너가 생성되면 이 이미지를 생성했던 Dockerfile에 포함된 CMD 및 ENTRYPOINT 인스트럭션에 정의된 애플리케이션이 실행됩니다. 이 애플리케이션이 실행 중인 상태가 컨테이너의 실행 중 상태가 됩니다.(실행이 끝나면 정지 상태가 됨) 정지 상태 실행 중 상태에 있는 컨테이너를 사용자가 명시적으로 정지하거나 컨테이너에서 실행된 애플리케이션이..
도커 이미지 다루기 도커 사용법은 크게 이미지를 대상으로 하는 것과 컨테이너를 대상으로 하는 것으로 나뉩니다. 따라서 우리는 도커 이미지를 다루는 법과 도커 컨테이너를 다루는 법에 익숙해져야 합니다. 그 전에 도커 이미지가 구체적으로 무엇인지 알아보겠습니다. 한 마디로 말하면 도커 이미지는 도커 컨테이너를 만들기 위한 템플릿 입니다. 도커 이미지는 우분투 같은 운영 체제로 구성된 파일 시스템은 물론, 컨테이너 위에서 실행하기 위한 애플리케이션이나 그 의존 라이브러리, 도구에 어떤 프로세스를 실행할지 등의 실행 환경의 설정 정보까지 포함하는 아카이브 docker image build - 이미지 빌드 docker image build는 Dockerfile에 기술된 구성을 따라 도커 이미지를 생성하는 명령입니..
들어가며 몇 달전 MSA가 핫한 기술이라고 하여, 무작정 관련 서적을 사서 읽던 중.. 외계어 같은 도커 컴포즈? 컨테이너? 만나 한계에 부딪혀서 도커 공부를 시작하게되었습니다ㅎㅎ 아직 도린이지만, 공부한 내용을 공유하고자 합니다~ => 도커 컴포즈, 스웜, 쿠버네티스 같은 고급? 내용은 아직 정리를 못하였고 기초적인 내용(이미지, 컨테이너 다루기)이 포함되어있습니다. 컨테이너로 애플리케이션 실행하기 우선 로컬 PC에 도커가 설치되었다고 가정하고 시작하겠습니다. 도커는 https://hub.docker.com/search?q=&type=edition&offering=community 에서 받을 수 있습니다! 컨테이너로 애플리케이션을 실행하는 방법을 배우기 전에 도커 이미지와 도커 컨테이너의 관계를 먼저 ..