Dockerとは
- コンテナ型仮想化技術を実現するために実行される常駐化アプリケーションとそれを操作するためのコマンドフロントインタフェースから成るプロダクト
- アプリケーションのデプロイに特化しており、コンテナを中心とした開発・運用を可能とする
ホストOS型仮想化とコンテナ型仮想化の違い
- ホスト型とコンテナ型の構成が違う
メリット
- 軽い早い
- 環境差異問題解消
- xamppと違って違う環境すぐ用意(PHP複数バージョン)
- デプロイ簡単
DockerHubに登録
docker login
docker logout
Docker Help使用
docker help
docker image --help
Docker Image
# 一覧
docker images
docker image ls
# Image取得
docker pull ImageName:[TagName]
# Image詳細
docker inspect ImageName
# Imageタグ付け
docker tag ImageName:[TagName] repoName/ImageName:[TagName]
# Image削除
docker rmi ImageName
# Imageプッシュ
docker push ImageName:[TagName]
Docker Container
# コンテナ起動
docker run -d -p <HostPort>:<ContainerPort> -v <HostPath>:<ContainerPath> --name ContainerName ImageName:[TagName]
# コンテナ一覧確認
docker ps -a
# コンテナへのログイン
docker exec -it ContainerName bash
# ファイルコピー
docker cp <HostFiles> ContainerName:<ContainerPath>
docker cp ContainerName:<ContainerPath> <HostFiles>
# コンテナからDockerイメージ作成
docker commit ContainerName ImageName:[TagName]
# コンテナ起動、停止
docker start ContainerName
docker stop ContainerName
# コンテナ削除
docker rm (-f) ContainerName
実例
docker run --name php74 -d -p 80 -v "C:\Acquia\docker\static":/var/www/html php:7.4-apache
docker run --name php56 -d -p 80 -v "C:\Acquia\docker\static":/var/www/html php:5.6-apache
docker run --name my-nginx -v "C:\Acquia\docker\static":/usr/share/nginx/html -d -p 80 nginx
docker tag ...
docker push
ほかの人docker pull
docker run -v "C:\Acquia\docker\mysql":/var/lib/mysql --name my-mysql -e MYSQL_ROOT_PASSWORD=aquaring -d --net=mynet --ip=172.19.0.33 mysql
docker run --name my-drupal --net mynet -p 80 -d drupal
Docker Network
docker network ls
docker network create --subnet=172.19.0.0/16 mynet
Dockerfile
FROM php:7.4-fpm
COPY php.ini /usr/local/etc/php/
RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim
RUN apt-get update \
&& docker-php-ext-install pdo_mysql
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
WORKDIR /var/www
RUN composer global require "laravel/installer"
Dockerfileでイメージ作成
docker build -t repoName/ImageName:[TagName] .