メモ > サーバ > 各論: Docker > VagrantのUbuntuでDockerを使用する
VagrantのUbuntuでDockerを使用する
■Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "bento/ubuntu-18.04"
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\ubuntu_docker
vagrant up
■日本語化
インストールに20分ほど時間がかかった。
言語切り替え後、再ログインすると反映される。
$ sudo apt install language-pack-ja-base language-pack-ja ibus-mozc
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
【Ubuntu 18.04 LTS Server】日本語環境にする(日本語ロケールとタイムゾーンの変更) | The modern stone age.
https://www.yokoweb.net/2018/05/04/ubuntu-18_04-lts-server-japanese/
■タイムゾーンを設定
$ sudo dpkg-reconfigure tzdata
地域の選択画面が表示されるので、「アジア」「東京」を選択する。
(カーソルキーで対象を変更し、Enterを押すと決定できる。)
■Dockerをインストール
$ sudo apt-get update
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ 不明 ] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
… add-apt-repository の部分は、環境によって実行すべき内容が変わるので注意。
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
$ sudo docker info
$ sudo docker container run hello-world
$ sudo docker image ls
Ubuntuにdockerをインストールする - Qiita
https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d
Get Docker Engine - Community for Ubuntu | Docker Documentation
https://docs.docker.com/install/linux/docker-ce/ubuntu/
■一般ユーザでDockerを実行できるようにする
$ sudo usermod -aG docker vagrant
$ docker info … 上記変更は、再接続後に反映されるので注意。
$ docker container run hello-world
$ docker image ls
■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
$ curl http://localhost/
Hello!
ブラウザで以下にアクセスし、「Hello!」と表示されれば成功…だが、表示されない?
vagrant up のときにエラーが表示されたから、かも。
http://192.168.33.10/
$ docker container rm -f $(docker container ls -a -q) … 終了。
■Docker Compose をインストール
$ sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo docker-compose --version
$ docker-compose --version … vagrantユーザでも実行できることを確認。
■Docker Compose
Docker Compose 用のファイルはあらかじめ配置しておく。
$ cd /var/www/docker/apache_php7_mysql_gd
$ docker-compose build … ビルドする場合。(構成を変更した場合など。)
$ docker-compose up -d … 起動。
$ docker-compose down … 終了。
$ docker container exec -it php bash … phpコンテナのターミナルに接続する場合。
$ docker container exec -it mysql bash … mysqlコンテナのターミナルに接続する場合。
$ mysql -u root -p … MySQLに接続。
http://192.168.33.10/
■終了
cd C:\vagrant\ubuntu_docker
vagrant halt
■ubuntu/trusty64 の場合
Docker実行時にエラーになった。
カーネルのバージョンアップで対応できるかもしれないが、bento/ubuntu-18.04 を使うのが無難そう。
$ sudo docker container run hello-world
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:297: copying bootstrap data to pipe caused \"write init-p: broken pipe\"": unknown.
Ubuntu日本語フォーラム / ubuntu14.04でdockerコンテナが実行できない
https://forums.ubuntulinux.jp/viewtopic.php?pid=120508
■ubuntu/bionic64 の場合
Vagrant起動時にエラーが表示されたが、SSHで接続はできた。
ただしホストPCからHTTP接続できない?フォルダ同期もできていない?
bento/ubuntu-18.04 なら大丈夫だった。
==> default: Attempting graceful shutdown of VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection reset. Retrying...
default: Warning: Connection aborted. Retrying...
default: Warning: Remote connection disconnect. Retrying...
default: Warning: Connection aborted. Retrying...
default: Warning: Connection reset. Retrying...
default: Warning: Connection aborted. Retrying...
default: Warning: Connection reset. Retrying...
default: Warning: Connection aborted. Retrying...
default: Warning: Connection reset. Retrying...
default: Warning: Connection aborted. Retrying...
default: Warning: Connection reset. Retrying...
default: Warning: Connection aborted. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
/sbin/ifdown 'enp0s8' || true
/sbin/ip addr flush dev 'enp0s8'
# Remove any previous network modifications from the interfaces file
sed -e '/^#VAGRANT-BEGIN/,$ d' /etc/network/interfaces > /tmp/vagrant-network-interfaces.pre
sed -ne '/^#VAGRANT-END/,$ p' /etc/network/interfaces | tac | sed -e '/^#VAGRANT-END/,$ d' | tac > /tmp/vagrant-network-interfaces.post
cat \
/tmp/vagrant-network-interfaces.pre \
/tmp/vagrant-network-entry \
/tmp/vagrant-network-interfaces.post \
> /etc/network/interfaces
rm -f /tmp/vagrant-network-interfaces.pre
rm -f /tmp/vagrant-network-entry
rm -f /tmp/vagrant-network-interfaces.post
/sbin/ifup 'enp0s8'
Stdout from the command:
Stderr from the command:
bash: 行 4: /sbin/ifdown: そのようなファイルやディレクトリはありません
bash: 行 20: /sbin/ifup: そのようなファイルやディレクトリはありません
以下でApacheをインストールしても、ホストのPCからはアクセスできない?
Dockerの問題では無さそう。
Vagrantのネットワーク関連の問題かも。
$ sudo apt-get install apache2 ... Apacheをインストール。
$ apache2 -v ... Apacheのバージョンを確認。
$ sudo service apache2 start ... Apacheを起動。
$ sudo service apache2 stop ... Apacheを停止させる場合。
$ sudo service apache2 restart ... Apacheを再起動させる場合。
以下を削除するといいと解説されているページがあった。
$ sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
$ sudo rm -rf /etc/udev/rules.d/70-persistent-cd.rules
$ sudo rm -rf /etc/udev/rules.d/60-vboxadd.rules
コマンドプロンプトから以下を実行。
$ vagrant reload
…としてみたが、状況は変わらなかった。
Vagrantを扱うときにハマりがちポイントをまとめてみた - Qiita
https://qiita.com/srockstyle/items/233ef326a75362200a91
package化したboxを使うときによく出るエラー -- blog.10rane.com
http://blog.10rane.com/2015/08/28/errors-out-when-using-to-package-the-box/
vagrant upでネットワークエラーが出たら - Qiita
https://qiita.com/Esfahan/items/ec900276f0894cc9abdd