목록Back-end/Docker (9)
개발자 키우기
Docker Compose 관련 공식 문서 ( https://docs.docker.com/compose/ ) 0. compose를 사용하는 이유 도커 컴포즈를 사용하지 않으면 웹서비스를 실행시킨다고 가정했을 때 웹서버 컨테이너와 DB서버 컨테이너가 필요하기에 서로 각각 이미지를 굽고 컨테이너를 실행시키고 서로 통신이 필요하기에 서로의 IP와 포트번호를 설정까지 많은 번거로움이 있다. 이러한 과정을 도커 컴포즈가 YAML문법을 통해 이전 방법보다 쉽게 사용할 수 있게 함 1. 하나의 컨테이너를 사용할 때 docker-compose.yml services: mysqldb: // 이름을 정할수있음 image: mysql // 구울 이미지 restart: always // 종료되면 자동 재시작 volumes: ..
Dockerfile FROM mysql ENV MYSQL_USER=twosharkbaby123 ENV MYSQL_PASSWORD=twosharkbaby123 ENV MYSQL_ROOT_PASSWORD=root123 ENV MYSQL_DATABASE=twosharkbabydb CMD ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"] 도커 허브에서 mysql을 검색하면 문서에서 필요한 환경변수(Environment Variables)를 확인할 수 있다 ( https://hub.docker.com/_/mysql ) docker build -t mysql-image . docker run -dit -p 3307:3306 mys..
1. 두 개의 서버 만들기 ( server1 / server2 ) Dockerfile FROM nginx COPY webapp /usr/share/nginx/html ENTRYPOINT [ "nginx", "-g", "daemon off;" ] webapp/index.html Document Server1 빌드하여 이미지를 굽고 동작시킬 때 server1은 8081 포트 / server2는 8082 포트로 설정 서버 1은 http://localhost:8081/ 로 접근 가능 / 서버 2는 http://localhost:8082/ 로 접근 가능 2. 로드 밸런스 서버 만들기 ( lb ) Dockerfile FROM nginx COPY conf/nginx.conf /etc/nginx/conf.d/defau..
1. 기본적인 사용 방법 Dockerfile이라는 파일 명으로 아래 내용을 만든다. ( 확장자가 없어야 함 ) FROM httpd COPY ./webapp /usr/local/apache2/htdocs CMD ["httpd-foreground"] 파일의 내용을 해석 하면 httpd 이미지를 구워서 현제 폴더를 기준으로 webapp이라는 폴더에 있는 내용을 굽는 이미지 내부의 /usr/local/apache2/htdocs 위치에 복사하여 붙여 넣고 이미지가 실행될 때 첫 명령어는 httpd-foregroud이다라는 뜻. webapp 폴더 안에 index.html 파일을 만들어 아래 내용을 입력한다. ( 복사 붙여 넣기 될 파일을 만드는 중입니다 ) Hi man docker build -t 지정하고 싶은 이..
0. 들어가면서 attach와 exec 둘 다 실행 중인 컨테이너에 접근하기 위하여 사용하는 명령어이다. 하지만 실행할 컨테이너가 계속돌아가는 프로세스 인지 아닌지에 따라 사용하는 실행 및 접근 명령어가 다르다. 1. attach 를 사용할 때 ( docker ps 명령어를 입력한 뒤 COMMAND가 /bin/bash 일 때 ) OS ( ubuntu )와 같이 계속 돌아가는 프로세스가 없다면 docker run -d ubuntu라는 명령어로 실행시켜도 바로 컨테이너가 바로 죽는다. 하지만 docker run -dit ubuntu bash 라는 명령으로 터미널할당+표준입력개방을 추가적으로 하고 실행할 셀을 지정하면 우분투 컨테이너 안에서 Bash 셸을 조작할 수 있는 상태가 된다. 이러한 과정으로 계속 돌..
0. 포트포워딩을 사용하는 이유 Host OS에서 도커의 이미지를 실행시키면 Gest OS에서 동작하기 때문에 Host OS에 주소를 입력해도 접근이 불가능하다. 이때 포트포워딩을 하여 Host OS에서 Gest OS에서 동작하는 주소를 입력해도 접속이 가능하다. 1. 방법 기본적인 문법 : docker run -d -p Host포트번호:컨테이너포트번호 이미지이름 예 시 문 법 : docker run -d -p 8080:80 httpd -d 는 데몬으로 동작하는 방법으로 즉 백그라운드로 해당 이미지를 실행시키는 것 -p 는 포트포워딩 할 때 사용하는 것 Host포트번호는 Host OS에서 접근할 포트번호를 의미 컨테이너포트번호 는 Gest OS에서 동작하고 있는 컨테이너의 포트 docker ps로 동작하..
cls = 화면 청소 ( 윈도우 ) clear = 화면 청소 ( 리눅스 / 맥 ) docker images = 설치된 image 확인 docker ps = 실행중인 컨네이터 확인 docker ps -a = 종료된 컨네이터 확인 docker pull 레파지토리 = image 설치 docker rmi 레파지토리 = image 삭제 docker rmi 이미지ID = image 삭제 ( 동일한 파일명이 존재할 때 이미지 아이디로 삭제 ) docker rm 컨테이너ID = 종료된 컨네이터 삭제 docker stop 컨테이너ID = 실행 중인 컨테이너 중지 docker start 컨테이너ID = 종료된 컨테이너 동작시킴 docker stop $(docker ps -q) docker rm $(docker ps -a ..
애플리케이션을 사용하기 위해서는 하드웨어와 하드웨어를 관리해 주는 OS가 필요하다. 일반적인 사용자의 컴퓨터 환경일 경우 재일 왼쪽 사진과 동일한 환경이며 하나의 Host OS만 가지고 있다. 이 환경에서 가상화를 사용하지 않으면 필요한 환경 만큼 하드웨어워 OS를 마련해야 한다. 필요 자원 = 하드웨어+OS 기본적인 환경에서 가상화를 이용하면 하나의 Host OS와 중앙의 사진처럼 OS 위에 하이퍼바이저 기술을 사용하여 가상의 하드웨어를 구성하여 하나 이상의 Guest OS를 가질 수 있는데 이를 통해 시간과 비용을 많이 절약할 수 있다. 필요 자원 = ( 하드웨어 + OS ) + [ ( 가상화 하드웨어 + OS ) * 필요한 환경 수 ] 마지막 사진을 보면 중앙에 사진보다 많이 간소화가 된 것을 볼 ..