Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

ksugawara61
都内のIT企業で働いております。 サーバサイド / クライアントサイドいろいろやっています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away