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

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も無い

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

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

kon_yu
道産子プログラマ
http://konyu.hatenablog.com/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした