[Bespin] Docker

Docker

배경

서버 운영

애플리케이션이 동작하는 상태를 유지하는 작업

Infrastructure

IaaS(Infrastructure as a Service)
결론

image-20200921093112432

리눅스로 명령어를 운영해야 하는 것은 여전함

Configuration Management

제현 가능한 서버 상태 관리를 위한 솔루션

ex) chef, puppet, ansible

PaaS(Platform as a Service)

ex) Heroku: Dyno 단위에 App을 올리면 배포 가능

정의

컨테이너 기반 가상화 도구

image-20200921094843343

실행 환경이 바뀜

Immutable Infrastructure

실습

http://52.78.185.183:4200/

ID: ubuntu

PW: apple-kiwi-apple

실제 외부 서버에 접속하는 것은 아님

redis: 저장소


php 사용

Image

Dockerfile

docker 이미지 생성을 위한 dsl

ROM nacyot/ruby-ruby:latest
RUN apt-get update
RUN apt-get install -qq -y libsqlite3-dev nodejs
RUN gem install foreman compass
WORKDIR /app
RUN git clone https://github.com/nacyot/docker-sample-project.git /app
RUN git checkout v0.1
RUN bundle install --without development test
ENV SECRET_KEY_BASE hellodocker
ENV RAILS_ENV production
EXPOSE 3000
CMD foreman start -f Procfile

Docker build

docker build -t 이름공간/이미지이름:태그 .

docker build -t nacyot/ubuntu:git .

FROM ruby:2.6
COPY Gemfile* /usr/src/app/
#Gemfile을 먼저 복사함
WORKDIR /usr/src/app
RUN bundle install
COPY . /usr/src/app
EXPOSE 4567
CMD bundle exec ruby app.rb -o 0.0.0.0

Gemfile이 바뀌지 않는 한 build가 깨지지 않음 (캐쉬최적화)

멀티 스테이지 빌드
환경 변수

image-20200922094155402

Docker Hub

https://hub.docker.com/

서버에서 생성한 이미지를 다른 서버에서 사용하기 위해 중앙 저장소에 이미지 저장

검색을 통해 미리 생성된 이미지 사용 가능