Edited at

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の例
    docker-hub-sample.png


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はこちらから利用できます。