LoginSignup
8
6

More than 5 years have passed since last update.

オフライン環境にあるCentOS6.9上にDockerを導入し、WordPressを構築する

Last updated at Posted at 2018-03-29

背景

表題にある通り、インターネットに接続していないオフライン環境で、尚且つCentOS6系というめちゃくちゃレガシーなシステムにDockerを構築しなければならないことになったので、その手順を紹介いたします。

なお、RHELは以下リンクにて明確にDocker on RHEL6はサポートしないと宣言しているので、良い子はなるたけ推奨環境で構築しましょうね。
The version of docker that is maintained and supported by Red Hat is only available on RHEL 7 and above.
https://access.redhat.com/solutions/1378023

じゃあどうするのかと言うと、Docker 1.7まではCentOS6に対応していたので、それを使って構築をしていくことになります。(Dockerの最新Verは2018/03/29現在なんと18。1.8ではなく18です。10倍だぞ10倍。)

前提環境

-オフラインの環境
CentOS 6.9 64bit

-オンラインの環境(今回こちらでDocker及びWordPressのコンポーネントをDLする)
Amazon Linux AMI release 2017.09

-自分のPC
Mac OS X

流れ

【オンライン環境にて】
Dockerを導入する
Docker pullでWordPressとMySQLのimageをDLする
imageをtarで丸めて自分のPCに転送する

【自分のPCにて】
Docker 1.7のrpmをDLしておく
オンライン環境から転送されたtarと、Docker1.7のrpmをオフライン環境に転送する

【オフライン環境にて】
転送されたrpmをyum localinstallで実行し、Dockerを導入する
転送されたtarをDocker loadで展開し、それをImageとしてコンテナを構築する

手順

【オンライン環境にて】
Dockerを導入してImageを引っ張ってきます。

Dockerの導入
$ sudo yum update
$ sudo yum install -y docker
$ sudo service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:    .                                  [  OK  ]

次にDockerコマンドを利用し、Imageを作成します。

WordPressのImage作成
[root@*** ~]# docker pull wordpress
Using default tag: latest
latest: Pulling from library/wordpress
2a72cbf407d6: Pull complete 
273cd543cb15: Pull complete 
ec5ac8875de7: Pull complete 
9106e19b56c1: Pull complete 
ee2f70ac7c7d: Pull complete 
7257ad6985e8: Pull complete 
18f5c2055da2: Pull complete 
85293a6fdd80: Pull complete 
9e797eeb0c14: Pull complete 
09b55b88e646: Pull complete 
2cd18314711e: Pull complete 
88b610931a5f: Pull complete 
b90052b881e9: Pull complete 
36317e1f49af: Pull complete 
6dbef1d5801a: Pull complete 
f98e14d31e08: Pull complete 
dbc1b2b39588: Pull complete 
280991283b71: Pull complete 
5c4360fbc4f6: Pull complete 
0623bccc9390: Pull complete 
Digest: sha256:b6189dc683704a5011f64d71166f3e712d64816d96750ba4636bcbf137c00903
Status: Downloaded newer image for wordpress:latest
MySQLのImage作成
[root@*** ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
2a72cbf407d6: Already exists 
38680a9b47a8: Pull complete 
4c732aa0eb1b: Pull complete 
c5317a34eddd: Pull complete 
f92be680366c: Pull complete 
e8ecd8bec5ab: Pull complete 
2a650284a6a8: Pull complete 
5b5108d08c6d: Pull complete 
beaff1261757: Pull complete 
c1a55c6375b5: Pull complete 
8181cde51c65: Pull complete 
Digest: sha256:691c55aabb3c4e3b89b953dd2f022f7ea845e5443954767d321d5f5fa394e28c
Status: Downloaded newer image for mysql:latest

pullしたImageを確認しましょう。

imageの確認
[root@*** ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
wordpress           latest              53046cdd8f97        6 days ago          408MB
mysql               latest              5195076672a7        2 weeks ago         371MB

次にImageをtarで丸めます。

tarで丸める。
[root@*** ~]# docker save -o wordpress.tar wordpress
[root@*** ~]# docker save -o mysql.tar mysql
[root@*** ~]# ls
docker  mysql.tar  wordpress.tar

これら2つのtarファイルを自分のPCにscpして転送します。
その手順は割愛しますが、Permissionを変更してあげないと転送時にErrorが出るので注意してください。

【自分のPCにて】
以下リンクにアクセスし、適当なディレクトリに保存します。
https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm

このrpmと、先に転送してきたmysql.tarとwordpress.tarをオフライン環境にscpで転送します。
rpmはどこに置いてもいいですが、/usr/local/srcに配置しています。
tarも別にどこでもいいですが、きれいに置きたい方は先にオフライン環境でDockerを導入しておいて、/root/docker配下に置くと良いです。

【オフライン環境にて】
まずはDockerを導入します。

Dockerの導入
[root@docker01 ~]# ls /usr/local/src/
docker-engine-1.7.1-1.el6.x86_64.rpm
[root@docker01 ~]# 
[root@docker01 ~]# 
[root@docker01 ~]# cd /usr/local/src/
[root@docker01 src]# pwd
/usr/local/src
[root@docker01 src]# 
[root@docker01 src]# yum localinstall --nogpgcheck docker-engine-1.7.1-1.el6.x86_64.rpm
読み込んだプラグイン:fastestmirror, security
ローカルパッケージ処理の設定をしています
(中略)

インストール:
  docker-engine.x86_64 0:1.7.1-1.el6                                                             

依存性関連をインストールしました:
  libcgroup.x86_64 0:0.40.rc1-24.el6_9                                                           

完了しました!

Dockerの起動をします。

Dockerの起動
[root@docker01 docker]# /etc/init.d/docker start
Starting docker:                                       [  OK  ]

※起動せずにDockerコマンドを打つと以下エラーが出ます。

[root@docker01 docker]# docker load -i wordpress.tar
Post http:///var/run/docker.sock/v1.19/images/load: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?

続いて転送してきたtarをDockerコマンドにて展開します。
tarは/root/dockerに配置していたので、適当にcdしてください。

imageの展開
[root@docker01 docker]# ls
wordpress.tar  mysql.tar
[root@docker01 docker]# docker load -i wordpress.tar
[root@docker01 docker]# docker load -i mysql.tar
imageの確認
[root@docker01 docker]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
wordpress           latest              b2a52346184e        6 days ago          407.8 MB
mysql               latest              b826e5c7185f        2 weeks ago         371.4 MB

展開したimageを指定する形でMySQLとWordPressのコンテナを構築します。

MySQLコンテナの構築
[root@docker01 docker]# docker run --name wordpress-mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_USER=root -e MYSQL_PASSWORD=password -e MYSQL_DATABASE=wordpressdb -d mysql
ccd24ab5afebade6d9e86f87cc13b9eaf2b326792e3fffdcab97591affa0d319
WordPressコンテナの構築
[root@docker01 docker]# docker run --name tvc-wordpress -p 8080:80 --link wordpress-mysql:mysql -d wordpress
c4ece2aa07254f6485a0ce19f1f4a0f6c864efec8e6515c6d7c9b2d7a792eaf0
Error response from daemon: Cannot start container c4ece2aa07254f6485a0ce19f1f4a0f6c864efec8e6515c6d7c9b2d7a792eaf0: Cannot link to a non running container: /wordpress-mysql AS /tvc-wordpress/mysql
[root@docker01 docker]# 

wordpress-mysqlコンテナが立ち上がってないよ、とエラーが出ましたがコンテナの構築は完了しました。

コンテナの確認
[root@docker01 docker]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
57b1568bc9da        wordpress           "docker-entrypoint.s   3 seconds ago                                               some-wordpress      
515ec7ecb8f8        wordpress           "docker-entrypoint.s   43 seconds ago                                              tvc-wordpress       

なので立ち上げてあげましょう。

コンテナの起動
[root@docker01 docker]# docker start wordpress-mysql 
wordpress-mysql
[root@docker01 docker]# docker start tvc-wordpress 
tvc-wordpress
[root@docker01 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                  NAMES
c4ece2aa0725        wordpress           "docker-entrypoint.s   11 minutes ago      Up 2 seconds        0.0.0.0:8080->80/tcp   tvc-wordpress       
ccd24ab5afeb        mysql               "docker-entrypoint.s   12 minutes ago      Up 41 seconds       3306/tcp               wordpress-mysql     

これでWordPressが立ち上がったので、実際にアクセスしてみましょう。

アクセス先は
http://<オフライン環境のIP>:8080
です。
こんな表示が出ればOK!

image.png

おわりに

CentOSの6と7でコマンドがガラッと変わるので6系で構築しよ〜と思ったのですが、思ったよりDockerのバージョンが上がるのが早く、自分遅れてるなあと思った次第です。
CentOS 7用のDockerパッケージが以下にありますが、4半期に2回ごとくらいで更新があるようです。
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6