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に報告しといた。。。。