목록도커(Docker) (8)
imhamburger 님의 블로그
같은 어플리케이션을 도커를 이용해 여러 개의 컨테이너로 생성하여 실행하고 로드밸런서를 이용해 분산시키는 것을 해보려고 한다. 나는 간단하게 웹사이트를 만들었고 도커를 이용해 3개의 컨테이너를 실행한다고 가정해보자.웹사이트는 Apache httpd 웹 서버 소프트웨어를 이용해 서빙할 것이다. apache httpd 는 도커 이미지를 사용하였다. (httpd 도커) 도커파일은 다음과 같이 설정해주었다. DockerfileROM httpd:2.4ARG REPO_URL=https://github.com/hamsunwoo/hamsunwoo.github.io.gitCOPY ./my-httpd.conf /usr/local/apache2/conf/httpd.confRUN ["apt-get", "update"]RUN [..
도커 컴포즈는 단일서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너를 묶음으로 관리할 수 있다. 여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면, 각각 한개씩 생성해야 하는 번거로움이 있다.컨테이너의 수가 많아지고 정의해야할 옵션이 많아진다면 도커 컴포즈를 사용하는 것이 좋다. 도커 컴포즈를 사용하는 방법은 도커 공식문서에 나와있다. (공식문서) 이제 도커 yml 파일을 이용해 만들어놓은 API 와 MariaDB를 함께 실행시켜보자.MariaDB는 도커허브에 있는 것을 사용하였다. (MariaDB 도커허브) docker-compose.ymlservices:#데이터베이스 database: image: container_name: en..
내가 만든 파일을 도커 이미지로 만들고 이미지 안에서 실행하였는데 내 컴퓨터에서 출력되는 결과가 다르게 나왔다. 기능은 length 와 weight 값을 입력하면 빙어인지 도미인지 알려주는 기능이다. 도커 안에서 실행한 결과 내 컴퓨터에서 실행한 결과 각각 파일 해시값을 출력해보니 해시값이 달랐다.파일 해시값을 출력하는 방법은 다음과 같다.md5sum {파일명} 출력된 해시값도커 > 2e886ff57183229c24e8e05084c21e74 model.pkl내 컴퓨터 > b4cce379395c6dac1cb04fc9b9c768f0 model.pkl Dockerfile은 다음과 같다.FROM ham/fishmlserv:1.1.0WORKDIR /codeCOPY src/fishmlserv/main.p..
도커 컨테이너 확인하기$ docker ps 도커 이미지 빌드하기docker build -t {REPO 입력}:{TAG 입력} .#예시docker build -t fishmlserv:0.7.2 . 도커이미지 도커허브에 푸시하기docker push {이미지이름:TAG} 도커 이미지 확인하기$ docker images 도커 실행하기docker run -d -p {외부노출 PORT}:{PORT} --name {도커name 지정} {도커이미지 REPO:TAG} 도커 로그 확인하기docker logs -f {컨테이너 이름} 도커 컨테이너에 들어가기$ docker exec -it {컨테이너ID 혹은 컨테이너이름} bash 컨테이너에서 나오기$ exit 컨테이너 안에서 OS 확인하기$ cat /etc/o..
컨테이너 기술이 효율적인 건 알았고 그럼 컨테이너 기술을 얼른 적용하자!라고 생각했다. 그.런.데 나는 매우 바쁜사람이기 때문에 컨테이너를 만드는데 시간을 투자하기 어렵다. 그리고 머리 아프다.그래서 그것을 도커에게 맡겼다. 도커는 컨테이너를 관리해주는 전문가이기 때문에 컨테이너를 만들고 관리하고 없애고 등을 내가 명령만 하면 다~ 해준다.나는 그냥 어플리케이션을 만드는 데에만 집중하면 된다. 앞서 에서 컨테이너는 어플리케이션과 파일 라이브러리 등을 이미지화하여 어플리케이션을 독립시킨다고 설명하였다. 그럼 내가 만든 서로 다른 어플리케이션들을 이미지화해서 독립적으로 작동시켜야지.이미지를 만드는 방법은 크게 2가지로 나눌 수 있다. 첫번째도커 컨테이너를 원하는대로 수정한 이후 컨테이너를 이미지로 생성하는 ..
도커는 무엇인가?도커는 컨테이너 기술을 기반으로 한 가상화 기술을 누구나 이용할 수 있도록 만든 플랫폼이다. 컨테이너 기술? 가상화 기술?먼저 컨테이너와 가상화 기술에 대해 알아보자. A라는 회사가 여러 어플리케이션을 사람들에게 제공한다고 가정해보자. 과거에는 한 서버OS에 여러 어플리케이션을 연결하여 제공하였다. 아래 그림처럼 말이다. 여기서 서버OS는 개인용 컴퓨터 OS와는 달리 높은 성능, 안정성, 보안성 그리고 동시에 여러 사용자와의 통신을 지원한다.위 그림처럼 서버를 돌리게 되었을 때 어떤 문제가 생길까?한 어플리케이션이 문제가 생겼을 때, 서버를 공유하고 있기 때문에 다른 어플리케이션까지도 영향을 줄 수 있어 아주 치명적인 문제가 발생하게 된다. 그럼 서버OS만 따로 사용하면 되는거 아니야?..
이번엔 서버가 무엇인지 알아보자. 서버는 네트워크를 통해 요청을 받은 데이터를 보내주는 컴퓨터 시스템이다.웹페이지를 보여주게 하는 웹서버, 데이터 관리를 해주는 데이터베이스 서버, 파일을 저장하고 관리해주는 파일 서버, 전자메일을 송수신하고 저장하는 메일서버 등 종류가 다양하다. 우리가 자주보는 네이버 메인페이지를 예를 들어보자.크롬에 naver.com를 입력하면 모니터에 짜-잔 하고 네이버 페이지가 보여진다. 하지만 이는 내가 이용중인 웹브라우저(크롬같은)가 네이버 서버에 요청하고 네이버 서버는 어딘가에 저장해놓은 메인페이지의 html 소스를 웹브라우저에 보내줌으로써 가능해진 것이다. 그럼 서버는 내 요청을 어떻게 받아서 처리하는거지?앞서 에서 서버를 잠깐 설명하였다. 서버는 네트워크 환경을 통해 요청..
우선 도커를 이해하기 전에 네트워크와 서버를 이해하는 것이 중요하다. 유튜브에 엄청나게 많은 도커에 관한 영상들이 있는데 그것들을 보아도 뭔가 100% 이해가 되지 않았다. 그건 내가 아직 네트워크가 어떻게 돌아가고 서버가 무엇인지 잘 모르기 때문에 그런 것 같다.그래서 아주 깊이까지는 아니더라도 네트워크와 서버에 대해 먼저 알아보는 시간을 가졌다. 네트워크 그리고 서버. 사실 일상생활에서 많이 들어본 단어지만, 눈으로 보이지 않기 때문에 참 어려운 개념이다. 네트워크의 사전적 의미는 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태를 의미한다.여기에서 컴퓨터는 스마트폰과 아이패드도 포함된다. 컴퓨터로 표현한 이유는 옛날에는 스마트폰과 아이패드와 같은 것이 없었기 때문이다. 하지만 오늘날..