docker インストール
yum update
yum -y install docker-io
dockerのサービスを起動する
systemctl start docker
systemctl enable docker
dockerイメージをダウンロード
docker pull busybox:latest
実行確認してみる。
docker run -it busybox
busyboxは、基本的なLinuxコマンド群を単一のbusyboxコマンドにまとめたものであり、必要最小限のLinuxシェル環境を提供する場合によく利用されています。
Dockerにおけるデータ専用コンテナ、KVM仮想化環境からの移行 | Think IT(シンクイット)
centos7のイメージも入れてみた。動いてる
docker pull centos:7
docker run -i -t centos:7 /bin/bash
PHPとhttpdをインストール。
PHPの関連パッケージで競合があったので--skip-broken
yum -y install httpd
yum -y install php
yum -y --skip-broken install php-*
yum -y install git
httpd.confでPHPを有効化
vi /etc/httpd/conf/httpd.conf
約45行目「Dynamic Shared Object (DSO) Support」ブロックの中に、モジュールを登録する以下の記述をします。(58行目あたりにしました)
# PHP setting --- start
LoadModule php5_module modules/libphp5.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
httpd起動、自動起動
systemctl start httpd.service
systemctl enable httpd.service
composerをインストール(docker-phpインストールのため)
cd ~/
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
プロジェクトを作成、httpdのデフォルトのドキュメントルート/var/www/html配下に作った
cd /var/www/html
mkdir docker-php
composerでdocker-phpをインストール
cd docker-php
composer require docker-php/docker-php
環境変数でDOCKER_HOSTを設定しておく( remote apiのため)
vi /etc/profile
最終行に追記
DOCKER_HOST=tcp://127.0.0.1:2375
設定した環境変数の読み込み
source /etc/profile
dockerをtcpで待ち受けるように設定
vi /etc/sysconfig/docker
2375ポートでRemotoAPIを待ち受けるようにする。
OPTIONS='--selinux-enabled -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375'
TCP経由でRemoteAPIを利用できるようにする。
デフォルトではfdのみなのでローカルホストからしかdockerコマンドを利用できませんが、TCPソケットを有効にして リモートマシンからもコントロールできるようにします。
ドキュメント上、以前は Port:4243を使用していましたが、メジャーバージョンから Port:2375に変わっています。
http://marmotte.pyrites.jp/blog/2015/01/13/docker-on-centos7/
vi /etc/init/docker.conf
DOCKER_OPTS='-H tcp://127.0.0.1:2375'
Docker再起動
systemctl restart docker
PHPのファイルを作成
cd /var/www/html/docker-php/
vi test.php
中身。(内容はdocker-phpのドキュメント参照)
<?php
require_once("vendor/autoload.php");
use Docker\Docker;
use Docker\DockerClient;
use Docker\API\Model\ContainerConfig;
try{
$client = new DockerClient([
'remote_socket' => 'tcp://127.0.0.1:2375',
'ssl' => false,
]);
$docker = new Docker($client);
$containerManager = $docker->getContainerManager();
$containerConfig = new ContainerConfig();
$containerConfig->setImage('busybox:latest');
$containerConfig->setCmd(['echo', 'I am running a command']);
$containerCreateResult = $containerManager->create($containerConfig);
echo var_dump($containerCreateResult);
} catch(Exception $e){
print($e);
}