めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

RHEL7でDockerを利用する手順

RHEL7でRed Hat公式のDockerとRHEL6イメージを使用する手順です。
RHELのサブスクリプションが必要ですので、ご注意ください。

Dockerのインストール

RHEL7を最小構成でインストール

サブスクリプション登録

# subscription-manager register --username=<username> --password=<password>
# subscription-manager list --available 
# subscription-manager attach --pool=<pool_id>

パッケージアップデートとfirewalldからiptablesへの切り替え(iptablesへの切り替えは必須ではないですが・・・)

# yum -y update
# yum -y install iptables-services
# systemctl stop firewalld.service
# systemctl mask firewalld.service
# systemctl enable iptables.service
# systemctl start iptables.service
# reboot

Dockerをインストールして起動する

# subscription-manager repos --enable=rhel-7-server-extras-rpms 
# subscription-manager repos --enable=rhel-7-server-optional-rpms
# yum -y install docker
# systemctl enable docker.service 
# systemctl start docker.service 
# systemctl status docker.service 

RHEL6コンテナイメージの登録

古い手順(記録用)

下記のサイトからRHEL6のコンテナイメージをダウンロード(要RHNID)
https://access.redhat.com/search/browse/docker-images

イメージを登録して、中身を確認

# docker load -i rhel-server-docker-6.5-*.tar.gz
# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
rhel-server-docker-6.5-12.x86_64   latest              8dc6a04270df        5 months ago        151.5 MB
# docker run -it --rm --name rhel6 rhel-server-docker-6.5-12.x86_64 cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.5 (Santiago)

パッケージアップデートとリポジトリーの設定をした新しいイメージを作成します。

Dockerfile「~/build_rhel6/Dockerfile」を用意

FROM rhel-server-docker-6.5-12.x86_64
MAINTAINER yourname
RUN yum -y install yum-utils ;\
    yum clean all ;\
    sed -i 's/enabled = 1/enabled = 0/' /etc/yum.repos.d/redhat.repo ;\
    yum-config-manager --enable rhel-6-server-rpms;\
    yum -y update ;\
    yum clean all

イメージをビルドして、結果を確認

# docker build -t yourrepo/rhel6:ver1.0 ~/build_rhel6/
# docker run -it --rm yourrepo/rhel6:ver1.0 yum repolist
Loaded plugins: product-id, subscription-manager
rhel-6-server-rpms                                       | 3.7 kB     00:00     
repo id                   repo name                                       status
rhel-6-server-rpms        Red Hat Enterprise Linux 6 Server (RPMs)        14383
repolist: 14383

Red Hatの公式レジストリーよりRHEL6.5のイメージを取得します。

# docker pull registry.access.redhat.com/rhel6.5

パッケージアップデートとリポジトリーの設定をした新しいイメージを作成します。

Dockerfile「~/build_rhel6/Dockerfile」を用意

FROM registry.access.redhat.com/rhel6.5:latest
MAINTAINER yourname
RUN yum -y install yum-utils ;\
    yum clean all ;\
    sed -i 's/enabled = 1/enabled = 0/' /etc/yum.repos.d/redhat.repo ;\
    yum-config-manager --enable rhel-6-server-rpms;\
    yum -y update ;\
    yum clean all

イメージをビルドして、結果を確認

# docker build -t yourrepo/rhel6:ver1.0 ~/build_rhel6/
# docker run -it --rm yourrepo/rhel6:ver1.0 yum repolist
Loaded plugins: product-id, subscription-manager
rhel-6-server-rpms                                       | 3.7 kB     00:00     
repo id                   repo name                                       status
rhel-6-server-rpms        Red Hat Enterprise Linux 6 Server (RPMs)        14383
repolist: 14383

プライベートレジストリーの使用

iptablesで5000番ポートを開けておく(Dokcerのコンテナはすべて停止した状態で実施すること)

/etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT  ←ここを追加
# systemctl restart iptables.service
# systemctl restart docker.service

docker-registryをインストールして起動

# yum -y install docker-registry
# systemctl enable docker-registry 
# systemctl start docker-registry 

イメージを保存してみる(192.168.199.100はサーバーのIPアドレスを指定)

# docker tag yourrepo/rhel6:ver1.0 192.168.199.100:5000/rhel6:ver1.0
# docker push 192.168.199.100:5000/rhel6:ver1.0

プライベートレジストリーは、searchができないので、お手製のlsrepoを使ってみる。

# curl https://raw.githubusercontent.com/enakai00/lsrepo/master/lsrepo > /usr/local/bin/lsrepo
# chmod u+x /usr/local/bin/lsrepo

リポジトリー指定検索

# lsrepo 192.168.199.100:5000 rhel6
REPOSITORY                        TAG                 IMAGE ID    
rhel6                             ver1.0              1856bc3ea0b2

ぐー。

リポジトリー無指定検索

# lsrepo 192.168.199.100:5000
REPOSITORY                        TAG                 IMAGE ID    

あれ??? v1/search APIが動いてないっぽいので、BZに報告しといた。。。。

Red Hat Bugzilla – Bug 1170928