Docker에 Docker 이미지를 등록해 보았습니다.

본 투고에서는, Dockerhub에 Docker Image를 등록했을 때에 실시한 작업을 비망록하고, 정리해 가고 싶습니다.
이 게시물에서 작성하는 Docker Image의 환경은 다음과 같습니다. CentOS를 기반으로 rbenv에서 Ruby를 실행 가능한 환경을 작성합니다.

Docker Image 환경




품목
버전


CentOS
7.5

rbenv
1.1.2

루비
2.5.1


Step1: Dockerhub로 푸시(등록)



우선 Step1로서 Dockerhub에 푸시해 Docker 이미지를 등록할 때까지의 흐름을 기재합니다.
흐름으로서는, 이하의 순서로 실시해 갑니다.

이미지 만들기



먼저 Docker Image 작성을 위해 Dockerfile을 준비하고 그 Dockerfile을 바탕으로 docker build 명령으로 Docker 이미지를 빌드합니다.docker build 에서 빌드할 때 -t 명령으로 태그 이름을 지정할 때 {dockerhub 계정 이름}/{태그 이름}으로 등록해야 합니다.
아래에서는 내 계정 katsuya61에 등록하기 때문에 katsuya61/ruby입니다.
  • Dockerfile 예제

  • Dockerfile
    FROM centos:7.5.1804
    
    # Install packages for installing rbenv and ruby
    RUN yum install -y \
      git \
      gcc \
      gcc-c++ \
      openssl-devel \
      readline-devel \
      bzip2 \
      make
    
    # Download rbenv and ruby-build from git
    WORKDIR /usr/local
    RUN git clone https://github.com/sstephenson/rbenv.git rbenv \
     && git clone git://github.com/sstephenson/ruby-build.git rbenv/plugins/ruby-build
    
    # Setup rbenv.sh file
    WORKDIR  /etc/profile.d
    RUN echo 'export RBENV_ROOT="/usr/local/rbenv"' > rbenv.sh \
     && echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> rbenv.sh \
     && echo 'eval "$(rbenv init --no-rehash -)"' >> rbenv.sh
    
    ## Install ruby 2.5.1
    RUN source /etc/profile.d/rbenv.sh \
     && rbenv install 2.5.1 \
     && rbenv versions \
     && rbenv global 2.5.1 \
     && ruby -v \
     && rbenv rehash \
     && gem install bundler
    
    ENTRYPOINT tail -f /dev/null
    
  • Dockerfile에서 이미지 빌드
  • $ docker build -t katsuya61/ruby .
    Sending build context to Docker daemon   2.56kB
    Step 1/8 : FROM centos:7.5.1804
     ---> cf49811e3cdb
    Step 2/8 : RUN yum install -y   git   gcc   gcc-c++   openssl-devel   readline-devel   bzip2   make
    .
    .
    .
    Successfully built 874315f8ee4c
    Successfully tagged katsuya61/ruby:latest
    

    Dockerhub에 로그인



    그런 다음 Dockerhub에 Docker Image를 등록 할 수 있도록 docker login 명령으로 Dockerhub에 로그인합니다.
    다음은 내 katsuya61 계정으로 로그인 한 예입니다. UsernamePassword 를 들었을 때 적절한 이름을 입력하면 로그인할 수 있습니다.
    $ docker login
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: katsuya61
    Password:
    Login Succeeded
    

    Dockerhub에 등록



    마지막으로 Dockerhub에 로그인한 상태에서 docker push 명령을 실행하여 Dockcerhub에 Docker Image를 등록할 수 있습니다.
    $ docker push katsuya61/ruby
    The push refers to repository [docker.io/katsuya61/ruby]
    c1e4031ded99: Pushed
    e285701df928: Pushed
    e301cd8b132c: Pushed
    9e6a772197d5: Pushed
    4826cdadf1ef: Mounted from library/centos
    latest: digest: sha256:e906f932ff696943c7ac5b110f8695ecaecd5c3978d6a89d796b59a623e87534 size: 1372
    

  • docker push 나중에 Dockerhub 예제


  • Step2: Dockerhub 이미지 사용



    Step2에서는 Step1에서 등록한 Dockerhub의 이미지를 이용하여 새롭게 Docker 컨테이너를 작성해 나가는 순서를 기재합니다.

    Dockerhub로 푸시 한 이미지를 사용하여 이미지 만들기



    우선, Step1로 등록한 katsuya61/ruby 이미지를 이용해, 새로운 이미지를 작성해 가는 순서를 기재합니다.
    이 게시물에서는 간단히 다음과 같이 Dockerfile 에 FROM katsuya61/ruby 만을 기재한 이미지를 작성해 갑니다.docker build 에서 작성한 이미지의 태그 이름이 rubytest 였습니다.
  • Dockerfile 준비

  • Dockerfile
    FROM katsuya61/ruby
    

  • 에서 이미지 만들기
  • $ docker build -t rubytest .
    Sending build context to Docker daemon  2.048kB
    Step 1/1 : FROM katsuya61/ruby
     ---> 874315f8ee4c
    Successfully built 874315f8ee4c
    Successfully tagged rubytest:latest
    

    Ruby 버전 확인



    마지막으로 새롭게 작성한 rubytest 의 이미지로 컨테이너를 기동해, Ruby 가 이용 가능한 컨테이너인 것을 확인해 끝입니다.
  • docker build로 만든 이미지를 컨테이너로 시작
  • $ docker run --name test001 -h host001 -itd rubytest
    abe0544505b5f726dcf83e226eb19ac221d1b82252a639779031d7f832ab5794
    
  • 컨테이너에 액세스하고 ruby ​​버전을 확인하십시오
  • $ docker exec -it test001 /bin/bash
    [root@host001 profile.d]# ruby -v
    ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
    



    게다가 이번에 만든 Docker Image는 여기 에서 사용할 수 있습니다.

    좋은 웹페이지 즐겨찾기