Docker? 도커는 무엇인가? https://www.codeschool.com/screencasts/docker-part-1 보고 정리. ===== MAC 에서 docker 사용하기. ===== Docker를 이용하여, 간단한 index.html 화일을 호스팅 해보자. 맥에서 터미널 열고 docker를 사용해보자. 1. vm 초기화 boot2docker init 2. vm 부트 boot2docker up 3. 도커 호스트 환경변수 설정. 클라이언트 접속할 위치 export DOCKER_HOST=tcp://192.168.59.103:2375 4. Docker 컨테이너 실행. docker run ubuntu /bin/echo "Hello from Docker" ---- 컨테이너는 무엇인가? virtual machines ? no. It just a binary on the thin layer of Host OS. ---- 5. Create my container silverywave_static 디렉토리의 index.html 파일을 nginx로 호스팅. mkdir silverywave_static cd silverywave_static cat > Dockerfile FROM ubuntu RUN apt-get update RUN apt-get install -y nginx RUN echo "Daemon off;" >>/etc/nginx/nginx.conf ADD index.html /usr/share/nginx/html/index.html EXPOSE 80 ENTRYPOINT /usr/sbin/nginx index.htm 만들기. cat > index.html

Hello from Docker

Dockerfile로 부터 silverywave_static:nginx 이미지 생성. docker build -t silverywave_static:nginx . silverywave_static:nginx 이미지 실행하여 컨테이너 생성 docker run -p 80:80 silverywave_static:nginx 호스트 웹브라우져에서 index.html 파일 보기 boot2docker ip open $(boot2docker ip) docker 이미지, 컨테이너 상태 보기 docker ps docker 컨테이너의 상태를 이미지에 커밋. # 7f09 is container id docker commit -m "Added ngine x and static site" 7f09 silverywave_static:nginx ===== Dockerizing Rails ===== 웹서비스 도커라이징 해보자. 1. Dockerfile 만들기. Dockerfile FROM ubuntu:14.04 RUN apt-get update -q RUN apt-get install -qy python-software-properties software-properties-common RUN add-apt-repository -y ppa:brightbox/ruby-ng RUN apt-get update -q RUN apt-get isntall -qy nginx ruby2.1 ruby2.1-dev nodejs sqlite3 libsqlite3-dev zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev git-core curl RUN echo "daemon off;" >> /etc/ngingx/nginx.conf RUN rm /etc/nginx/sites-enables/default RUN mkdir -p /var/www RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc" WORKDIR /tmp ADD Gemfile Gemfile ADD Gemfile.lock Gemfile.lock RUN /bin/bash -l -c "bundler install" ADD ./ /var/www/web ADD config/journal.conf /etc/nginx/sites-enabled/journal ADD config/start_server.sh /usr/bin/start_server RUN chmod +x /usr/bin/start_server RUN mkdir -p /var/www/web/tmp/pids RUN mkdir -p /var/www/web/tmp/sockets RUN mkdir -p /var/www/web/log WORKING /var/www/web EXPOSE 80 ENTRYPOINT /usr/bin/start_server cat > config/start_server.sh #!/bin/bash cd /var/www/web bundle exec unicorn -c config/uniconrn/production.rb -E production -D nginx 2. Dockerfile 로 도커 빌딩. docker build -t silverywave/web docker run -p 80:80 -t silverywave/web 3. 코드 저장소에 웹서비스 코드 커밋 git add . git commit -am "..." git push -f 4. 서버에 웹서비스 디플로이 서버 접속 ssh root@... 서버에서 코드 pull 하고, docker 컨테이너 실행 su -l deploy git clone ... cd web docker build -t silverywave/web docker run -p 80:80 -t silverywave/web ===== Docker Hub ===== 이미지를 매번 만드는것도 귀찮은 일이다. 코드가 커밋되면 Docker Hub 전체 이미지를 빌드 하도록 만들어 보자. hub.docker.com 이미지 공유. github로 가입. 1. Add repository donghee/web 2. 이미지 만들어서 hub.docker.com에 업로드 해보자. docker build -t silverwave/web docker login docker push silverywave/web ---- 3. Add Automated Build 새로운 커밋이 올라오면 github의 hook 기능을 이용하여, hub.docker.com에 github 코드 저장소의 Dockerfile을 읽어서 이미지를 빌드 할 수 있다. ===== Docker Linked containers ===== 왜 containers를 연결하나? 장점? - db컨테이너와 웹서비스 컨테이너. 1. db 컨테이터 실행 docker run -d --name db silverywave/postgres 2. web 컨테이너 실행. db와 연결. 웹의 45000포트로 접속해서 서비스 돌고 있는지 확인. docker run -i -t --name web --link db:db -p 45000:80 --entrypoint /bin/bash silverywave/web -s