Edited at

DockerImageをDockerHubに登録の仕方


はじめに

DockerでCentOSでRuby2.3.1が動くイメージがないので作った

本投稿はkawasaki.rbのLTで使用したものです

@kon_yu

2016/07/27 kawasaki.rb



以下の様な内容を記載しています


  • Docker for macのインストール方法

  • Dockerfileってどう作るの?

  • ローカル環境で作ったDockerfileを使ってインストール

  • DockerfileをDockerHubへ登録する

  • DockerHubとGithubを連携してDockerfileを登録する



Docker for macをインストールする

https://docs.docker.com/docker-for-mac/

Get Docker for Mac のボタンを押して、DMGファイルをダウンロードする

ダウンローしたファイルをダブルクリックして、インストール

インストールには結構時間がかかり、既存のDockerが入っている場合はマイグレーションが走るため更に時間がかかる

Docker Toolboxからインストールしたものがる場合は、マイグレーションでほぼ同等の大きさのディスク容量を食うため古い方のDockerを削除する必要がある

削除方法はこちら http://qiita.com/kon_yu/items/457c9652d0de3f64c31f



Dockerfileを作る

# set base OS image

FROM centos:latest

# set Ruby installed Dir
ENV RUBY_DIR /ruby/
ENV RUBY_VERSION 2.3.1
ENV RUBY_INSTALL $RUBY_DIR/$RUBY_VERSION

# install packeges for installing Ruby
RUN yum update -y && \
yum install -y install epel-release && \
yum install -y bzip2 make which wget tar git nodejs \
gcc patch readline-devel zlib-devel \
libyaml-devel openssl-devel \
gdbm-devel ncurses-devel libxml-devel
RUN yum clean all

# install Ruby with ruby-build
RUN mkdir $RUBY_DIR && \
cd $RUBY_DIR && \
git clone https://github.com/sstephenson/ruby-build.git && \
$RUBY_DIR/ruby-build/install.sh && \
cd $RUBY_DIR/ruby-build && ./bin/ruby-build $RUBY_VERSION $RUBY_INSTALL && \
rm -rf $RUBY_DIR/ruby-build
ENV PATH $RUBY_INSTALL/bin:$PATH



DockerfileからDocker Imageを作る

image名を-tオプションでつけてる。

このときdockerhubでつけるアカウント名/イメージ名にしておかないとDockerHubにアップすることが出来ないので注意

Dockerfileのあるディレクトリに行き以下のコマンドを実行(最後のピリオドを忘れないように)

> docker build -t konyu/centos_ruby .

結構時間がかかるので注意すること

Docker imageが作られていることを確認する

centos_rubyと言うrepositoryができていれば成功

> docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
konyu/centos_ruby latest 78ed661736e3 3 minutes ago 550.4 MB



Docker imageからコンテナを作る

imageを指定してコンテナを起動する

> docker run -it --rm centos_ruby bash

-it コンテナ起動時に起動時にシェルでログインする

--rm コンテナから抜けるタイミングでコンテナを破棄する



RubyのバージョンとOSのバージョンを確認

> ruby -v

ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
> cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)



DockerHubに登録する

DockerHubにアカウント登録

https://hub.docker.com/

ここからローカルからイメージをプッシュする方法と、Github連携する方法の2つあり、

それぞれの方法を共有する。

オススメは後述のGithub連携


 ローカルからイメージをプッシュする方法

DockerHubにコマンドラインからログインする

> 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: アカウント名
Password: パスワード
Login Succeeded

DockerHubにイメージをプッシュする

> docker push konyu/centos_ruby:latest

The push refers to a repository [docker.io/konyu/centos_ruby]
c789971294c7: Pushed
94e172a9994f: Pushed
31fa1a4603e2: Pushed
0fe55794a0f7: Pushed
latest: digest: sha256:c3ea799950c079f50b67a7ba570618cc1784c17e8c4f5e87e5f210d78f74dc1e size: 1163

kobito.1469590120.457475.png



Githubと連携する(オススメ!)

対象のDockerfileをGithubのでホスティングする

GithubにDockerfileを含んだリポジトリを登録する

https://github.com/konyu/centos7-ruby23


DockerHubへ行き「Create automated build」ボタンを押す

スクリーンショット 2016-07-27 12.33.13.png


Githubと連携し、DockerHubに連携するリポジトリを選択する

対象のDockerHubのリポジトリからBuild Settingsを選択し、下記のTriggerボタンを押す

スクリーンショット 2016-07-27 12.49.10.png


Build Detailsのタブを押すとDockerfileがコンパイルされていることがわかる

kobito.1469596464.937349.png


作ったDockerImageをDockerHubから利用してみよう

DockerHubにあるイメージ名を指定してdocker runしてやる

docker run --rm  -it konyu/centos7-ruby23

Unable to find image 'konyu/centos7-ruby23:latest' locally
latest: Pulling from konyu/centos7-ruby23
8c3d77a518cb: Already exists
60683d059310: Pull complete
908e534a605e: Pull complete
ddd64406a2ab: Pull complete
Digest: sha256:5d616e0a1494aba10ff8dc3cca5b769ea659aeb1f6034c1bc829052dd5495c06
Status: Downloaded newer image for konyu/centos7-ruby23:latest
[root@b922eecdd73d /]# ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]


ハマったところ

CentOSのcoreは最小限過ぎるところがあってハマった


  • fileコマンドをインストールしておかないとpaperclipでファイルアップロードできなかった

  • crondも無い


技術顧問案件募集しています(お仕事ください)

採用補助、設計レビュー、技術的負債の解消、開発戦略の相談 などなど