Dockerのメモです。徐々に追加します。
Dockerのインストール
Windows、MacOS、Linuxに対応しているが、Windowsの場合はWindows 11 Proがおすすめ。HomeバージョンはWSLをインストールする必要があるなど手間がかかる。
Windowsの場合はDocker Desktopをインストールする。
Dockerのチュートリアル
「さくらのナレッジ」の「Docker入門」https://knowledge.sakura.ad.jp/13265/
Linuxへのインストールから始まるが、Windowsの場合はDocker Desktopをインストール。
インストール後はDocker Desktopは使わずにPower Shellでコマンド実行。
第六回で使うdocker-composeもDocker Desktopをインストールすれば使える。
第一回および第六回のWordpressは記載の手順ではブラウザからアクセスするとエラーが発生する。
Dockerオフィシャルの「クイックスタート Wordpress」の手順で正常動作する。
※MySQLにrootでログインできないのが原因?
正常動作するdocker-compose.yml (Dockerオフィシャルの「クイックスタート Wordpress」より)
version: '3'services:db:image: mysql:5.7volumes:- db_data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: somewordpressMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresswordpress:depends_on:- dbimage: wordpress:latestports:- "8000:80"restart: alwaysenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressvolumes:db_data:
Dockerコマンド
イメージを取得
> docker pull <イメージ名>:<タグ>
イメージ一覧
> docker images
コンテナをバックグランドで起動
> docker run -d --name <コンテナ名> -p <ホスト側のポート>:<コンテナのポート> <イメージ名>:<タグ>
コンテナ一覧
> docker ps -a
コンテナにログイン
> docker exec -it <コンテナ名> bash
ファイルコピー(ホスト→コンテナ内)
> docker cp <ホスト側のファイル> <コンテナ名>:<コンテナ内のコピー先ディレクトリ>
ファイルコピー(コンテナ内→ホスト)
> docker cp <コンテナ名>:<コンテナ内のコピー元ファイル> <ホスト側のコピー先ディレクトリ>
コンテナからDockerイメージ作成
> docker commit <コンテナ名> <作成するDockerイメージ名>
コンテナ停止
> docker stop <コンテナ名>
コンテナ削除
> docker rm <コンテナ名>
コンテナ一括削除
> docker rm $(docker ps -a -q)
イメージ削除
> docker rmi <コンテナ名>
イメージ一括削除
> docker rmi $(docker images -q)
Dockerfileのビルド
> cd <Dockerfileのあるディレクトリ>> docker build -t <イメージ名> .
※最後の「.」はカレントディレクトリ
ネットワーク作成
> docker network create <ネットワーク名>
ネットワーク一覧
> docker network ls
ネットワーク詳細
> docker network inspect <ネットワーク名>
ネットワーク削除
> docker network rm <ネットワーク名>
Docker Composeコマンド
コンテナを起動
> cd <docker-compose.ymlのあるディレクトリ>> docker-compose up -d
コンテナ一覧
> docker-compose ps
コンテナ停止
> docker-compose stop
コンテナ削除
> docker-compose rm
停止、削除、ネットワーク削除
> docker-compose down
停止、削除、ネットワーク削除、イメージ削除
> docker-compose down --rmi all
Docker Composeを使ってLAMP環境を作る
「CodeAid Lab」「Docker Composeを使ってLAMP環境を作る」
docker-lamp/├── docker-compose.yml├── htdocs/└── php/├── Dockerfile└── php.ini
※php.iniは空のファイルを作っておく
docker-compose.yml
version: '3.7'services:mysql:image: mysql:5.7volumes:- db_data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: 'password'phpmyadmin:depends_on:- mysqlimage: phpmyadmin/phpmyadminenvironment:PMA_HOST: mysqlrestart: alwaysports:- "8080:80"php-apache:build: ./phpvolumes:- ./htdocs:/var/www/htmlrestart: alwaysports:- "80:80"depends_on:- mysqlvolumes:db_data: {}
php/Dockerfile
FROM php:7.3-apacheCOPY ./php.ini /usr/local/etc/php/RUN apt-get update \&& apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev \&& docker-php-ext-install pdo_mysql mysqli mbstring gd iconv
コンテナ起動
> cd docker-lamp> docker-compose build> docker images> docker-compose up -d
Apacheの確認
htdocs/index.html
<!DOCTYPE html><html lang="ja"><head><meta charset="utf-8"></head><body><p>Hello World!!</p></body></html>
ブラウザで確認
http://localhost/
PHPの確認
htdocs/info.php
<?phpphpinfo();?>
ブラウザで確認
http://localhost/info.php
MySQLの確認
> docker exec -it docker-lamp_mysql_1 bash# mysql -u root -pmysql> select version();+-----------+| version() |+-----------+| 5.7.27 |+-----------+1 row in set (0.00 sec)
phpMyAdminの確認
ブラウザで確認
http://localhost:8080
コンテナ停止・終了
$ docker-compose stop$ docker-compose down
データベースも含めて削除
$ docker-compose down --volumes
0 件のコメント:
コメントを投稿