windows10 homeでdocker環境を構築(chocolatery)
-
chocolateryが使えるように設定
※1
参考 : https://chocolatey.org/ -
以下コマンドを実行※1
choco install docker
choco install docker-machine
- windows homeの場合そのまま使えないためvirtualboxをインストール
choco install virtualbox
- ホストがあるか確認
docker-machine ls
- ホストがないなら作成する。
例) docker-machine create -d virtualbox default
-
docker-machine ls
を実行しステータスがrunningになっていることを確認
もしstopになっていたらvirtualboxの仮想マシンを起動できていない
docker-machine.exe env --shell cmd default
- 以下のコマンドを実行(上記のコマンドを実行したときにこれ実行してください的なのが出てくるのでそれをコピペ)
@FOR /f "tokens=*" %i IN ('"C:\ProgramData\chocolatey\lib\docker-machine\bin\docker-machine.exe" env --shell cmd default') DO @%i
- ipアドレスの確認
docker-machine ip
dockerコマンドを使ってみる
- コンテナの情報を確認
docker ps -a
- イメージの確認
docker images
- コンテナを立ち上げる (-i -tではなく-dにするとバックグラウンドで立ち上がる)
docker run -i -t -p 8080:80 --name 識別するための好きな名前 イメージの名前
- コンテナの停止
docker stop コンテナID又は--nameで指定した名前
- コンテナ再起動
docker start コンテナID又は--nameで指定した名前
- コンテナをシェルで立ち上げる(docker start後)
docker attach コンテナID又は--nameで指定した名前
- コンテナ削除
docker rm コンテナID又は--nameで指定した名前
- イメージ削除
docker rmi イメージID (例:docker pull amazonlinux
- プル
docker pull プルしたいイメージ
- docker fileを使う
- Dockerfileという名前でファイルを作成(拡張子なし)中身は以下のような感じ
From amazonlinux
RUN yum update -y
RUN yum install httpd -y
- Dockerfileという名前でファイルを作成(拡張子なし)
- Dockerfileが置かれている場所で以下を実行するとnewawsってimageが作成される(newawsは好きな名前でok)
- コンテナ作成
docker build -t newaws .
- できたことを確認
docker images
- イメージと同じように使える
docker run -it --privileged --name aws newaws
#docker上でamazonlinuxを立ち上げapacheで接続
1.amazonlinuxのイメージをダウンロード
docker pull amazonlinux
2.仮想サーバーに接続
docker-machine ssh default
3.魔法の呪文?
mkdir /sys/fs/cgroup/systemd
mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
4.-vをつけることでサーバーとdockerのディレクトリをリンクさせる(docker-machineは Windows環境であれば、
C:\Users をVirtualBox共有フォルダとしてdockerホストの /c/Users に自動マウントしてくれます)
- --privilegedと/sbin/initはsystemctlを有効にするためにつける
-pでdockerの80番ポートを仮想サーバーの8080ポートで使用するという意味
docker run -v /c/Users/yoy_n/docker:/var/www --privileged -d -p 8080:80 --name aws amazonlinux /sbin/init
もしdockerfileを使用するなら
docker build -t newaws .
docker run -v /c/Users/yoy_n/docker:/var/www --privileged -d -p 8080:80 --name aws newaws /sbin/init
- Dドライブを-vで使用したいなら
# VboxManageで D:\ を d として共有フォルダを追加
VBoxManage sharedfolder add dev --name d --hostpath 'D:/' --automount
# dockerホスト上に共有フォルダ d を /d にマウントする
docker-machine ssh dev 'sudo mkdir -p /d'
docker-machine ssh dev 'sudo mount -t vboxsf -o uid=0,gid=0 d /d'
# dockerホストにマウントした /d をコンテナ内の /d でData Volumeとして利用する
docker run -v /d:/d ubuntu ls -la /d
5.立ち上げ
docker exec -it aws /bin/bash
6.webルート確認
httpd -S -D SSL
7.var/www/htmlになっていたら以下実行
mkdir var/www/html
#apache起動
systemctl start httpd
systemctl status httpd
#番外編
1.virtualboxとローカルPCのファイル共有
2.環境変数の設定
- PC->プロパティ->システムの詳細設定->環境変数->システム環境変数
- 変数名 VBoxManage
- 変数値 C:\Program Files\Oracle\VirtualBox
3.設定後cmd再起動
VirtualBox VMs/VM-Share
4.virtualboxでローカルPCの共有したいpathを指定
参考:https://pc-karuma.net/virtualbox-folder-share/
5.仮想環境(virtualbox)で下記コマンド実行(sample2はvirtualboxで指定した名前)
sudo mount -t vboxsf sample2 /var/www/html
※1 管理者権限でインストール必要
mysqlの設定
#mariadbがインストールされているか確認
$ yum list installed | grep mariadb
mariadb-libs.x86_64 1:5.5.56-2.amzn2 installed
#mysqlがインストールされているか確認
$ yum list installed | grep mysql
#mysqlがインストールできるか確認
$ yum info mysql
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
エラー: 表示するパッケージはありません
#mysql8.0リポジトリの追加(このリポジトリに5.7も含まれています)
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y
#mysql8.0リポジトリの無効化
$ sudo yum-config-manager --disable mysql80-community
#mysql5.7リポジトリの有効化
$ sudo yum-config-manager --enable mysql57-community
#mysql5.7がインストールできるか確認
$ yum info mysql-community-server
#mysqlインストール
$ sudo yum install mysql-community-server -y
$ mysqld --version
mysqld Ver 5.7.22 for Linux on x86_64 (MySQL Community Server (GPL))
#自動起動設定
$ sudo systemctl start mysqld.service
$ sudo systemctl enable mysqld.service
$ systemctl status mysqld.service
set global validate_password.policy = "LOW";
set global validate_password.special_char_count = 0;
systemctl status mysqld.service
mysql -u root -p -D sample -P 13306 -A
status;
CREATE DATABASE sample_db;
use nikatsu_sample
SELECT CURRENT_USER();
-- 説即しているdb名
SELECT DATABASE();
show databases;
use データベース名;
#コンテナをイメージに出力
docker commit コンテナ名 イメージファイル名