メモ > サーバ > 各論: Docker > VagrantのCentOSでDockerを使用する
VagrantのCentOSでDockerを使用する
■Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
config.vm.box_check_update = false
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "./code", "/var/www"
end
■起動
cd C:\vagrant\docker
vagrant up
■SELinuxを無効化
# getenforce
Enforcing … SELinuxが有効
# setenforce 0 … SELinuxを無効化
# getenforce
Permissive … SELinuxが無効
# vi /etc/sysconfig/selinux
■日本語化
#SELINUX=enforcing
SELINUX=disabled … システム起動時にSELinuxを無効化
# localectl set-locale LANG=ja_JP.UTF-8
# localectl status
■タイムゾーンを設定
# timedatectl set-timezone Asia/Tokyo
# timedatectl status
■Dockerをインストール
# yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
… 古いDocker環境を削除
# yum install -y yum-utils device-mapper-persistent-data lvm2 … Dockerのインストールに必要なツールをインストール
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo … Docker-CEのリポジトリを追加
# yum install -y docker-ce docker-ce-cli containerd.io … Dockerをインストール
# systemctl start docker
# systemctl enable docker
# docker --version
# docker info
# docker container run hello-world
# docker image ls
以下でインストールすることもできるが、
今は原則 docker-ce をインストールするといい
# yum install -y docker
DockerとDocker-CEの違いについて - Qiita
https://qiita.com/s-suefusa/items/cb3c4044da3b3657dbd0
Install Docker on CentOS 7 - Qiita
https://qiita.com/ymasaoka/items/b6c3ffea060bcd237478
Docker CEをCentOS 7にyumインストールする手順 |
https://weblabo.oscasierra.net/docker-ce-install-centos7/
■一般ユーザでDockerを実行できるようにする
# groupadd docker … dockerグループを作成(環境によっては作成済みみたい)
# usermod -a -G docker vagrant … vagrantをdockerグループに入れる。これでvagrantがdockerコマンドを実行できる
# systemctl restart docker … dockerを再起動(必須)
# exit
$ docker info … 上記変更は、再接続後に反映されるので注意
■Apache+PHPの動作確認
$ docker container run --name php -p 80:80 -d php:7.3-apache
$ docker image ls
$ docker container ls
$ docker container exec -it php bash … phpコンテナのターミナルに接続
# echo 'Hello!' > index.html
# exit
ブラウザで以下にアクセスし、「Hello!」と表示されれば成功
http://192.168.33.10/
$ docker container rm -f $(docker container ls -a -q) … 終了
■終了
cd C:\vagrant\docker
vagrant halt
■Apache+PHPが動かなかったとき
$ docker container exec -it php bash … phpコンテナのターミナルに接続…できない
Error response from daemon: Container 9e8f5dd165b29e2257b66b3d021bf65e59c3d0e9339c0606b12761d4be97680d is not running
$ docker container ls -a … コンテナが終了している
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e8f5dd165b2 php:7.1-apache "docker-php-entryp..." 2 minutes ago Exited (1) 2 minutes ago php
c8e92257c12f hello-world "/hello" 7 minutes ago Exited (0) 7 minutes ago frosty_booth
$ docker container rm -f $(docker container ls -a -q) … いったんすべてのプロセスを終了
$ docker container ls
$ docker container run --name web -p 80:80 -d devilbox/apache-2.4 … 別のApache2.4を試す
$ docker container exec -it web bash … phpコンテナのターミナルに接続
# cd /var/www/default/htdocs/
# echo 'Hello!' > index.html
# exit
devilbox/apache-2.4 なら動くが、公式のApache+PHPコンテナだけ動かないことがある?
Docker自体をインストールする環境による?
Vagrant公式の centos/7 上でなら大丈夫かも?
■補足
Apache+PHPを稼働させようとすると、環境によっては以下のエラーメッセージが表示される?
$ docker container run --name php -p 80:80 php:8.1-apache
AH00534: apache2: Configuration error: No MPM loaded.
nginxだと問題なく起動できる
$ docker container run --name php -p 80:80 -d nginx:1.12
Apache2.2でも問題なく起動できる
$ docker container run --name php -p 80:80 -d devilbox/apache-2.2
PHPバージョンアップのときもそうだったが、Apache2.4には色々と相性の問題があるかも?
…と思ったけど、以下でApache2.4は使える
$ docker container run --name web -p 80:80 -d devilbox/apache-2.4
要確認