Memo

メモ > サーバ > 各論: 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
要確認

Advertisement