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の例
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アカウントでログインした例です。Username
とPassword
を聞かれた際に適切な名前を入力するとログインできます。
$ 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
Step2: Dockerhubのイメージを利用
Step2では、Step1で登録したDockerhubのイメージを利用して新たにDockerコンテナを作成していく手順を記載します。
Dockerhubへプッシュしたイメージを利用したイメージの作成
まず、Step1で登録した katsuya61/ruby
イメージを利用して、新しいイメージを作成していく手順を記載します。
本投稿では、シンプルに以下のように DockerfileにFROM katsuya61/ruby
のみを記載したイメージを作成していきます。
docker build
で作成するイメージのタグ名は rubytest にしました。
- 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はこちらから利用できます。
Author And Source
この問題について(DockerhubにDockerイメージを登録してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/ksugawara61/items/e98edc767c79fd2856e1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .