DockerhubにDockerイメージを登録してみた


本投稿では、DockerhubにDocker Imageを登録した際に行った作業を備忘録して、まとめて行きたいと思います。
本投稿で作成するDocker Imageの環境は以下の通りで、CentOSをベースにrbenvにてRubyを実行可能な環境を作成します。

Docker Imageの環境

項目 バージョン
CentOS 7.5
rbenv 1.1.2
Ruby 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 コマンドを実行することでDokcerhubへ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 でイメージを作成
$ 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 run で作成したイメージをコンテナとして起動
$ 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はこちらから利用できます。