I. Преимущества подготовки докера к созданию среды:
Simple operation, rapid construction and environmental isolation
Общие команды и параметры работы докера:
Docker search - find image from docker hub Docker images view the local image list Docker pull pulls or updates the specified image from the image warehouse Docker run create a new container and run a command Docker RM delete a container Docker RMI delete an image Docker inspect - get metadata of container / image Docker PS ා view the started containers, and add the parameter - A to view all containers Docker build? Use dockerfile to create image Common dockerfile instructions: From format is from image or from image: tag, and the first instruction in the dockerfile must be from instruction, and multiple from instructions can be used when multiple images are created in the same dockerfile Run ා format is run command or run ["execute", "Param1", "param2"...], the former runs command in shell terminal, / bin / SH - C command, for example, / bin / SH - C "echo hello"; the latter uses exec to execute, and specifies that other running terminals use run ["/ bin / bash", "- C", "echo hello"] CMD ා used to specify the command to be executed when the container is started Maintainer - specify maintainer information Env ා is used to specify environment variables, which can be used by run instruction later Expose ා expose port, used for container external link
II. Начните порядок сборки: MySQL > php fpm > nginx Сначала убедитесь, что вы создали phpfpm, а затем построили docker ﹣ nginx
- Настроить докер? MySQL
Во – первых, используйте docker search Mysql для перечисления образов MySQL, существующих на складе
Используйте команду docker pull для загрузки изображений с наибольшим количеством запусков локально (время загрузки немного велико…) тяга докера mysql
После загрузки используйте изображения docker, чтобы проверить, было ли изображение загружено в локальный изображения docker Вы можете увидеть следующее Используйте команду запуска docker для запуска docker? Контейнер MySQL docker run -di --имя моего docker mysql -p 3308:3306 -e mysql_root_password
Docker run command to start the container -I. interactive operation -D ා Daemons --Name specifies the container name as mydockermysql -P? Map the 3306 port of the container to the 3308 port of the host -E ා specify the environment variable, which can be used in the container to set the root password The last MySQL is to specify to use a certain image
Используйте команду docker PS, чтобы проверить, запущен ли контейнер
Если вы видите только что созданный MySQL, контейнер успешно создан. Если вы этого не видите, вы можете использовать докер войти в мой докер mysql Команда для проверки ошибок, измените команду, а затем перезапустите. Однако вам необходимо удалить контейнер. Команда такова докер rm mydockermysql
Попробуйте использовать инструмент Navicat для привязки базы данных и найти не удалось. Проверьте это Введите контейнер MySQL docker exec -это мой докер mysql/bin/bash запуск mysql mysql -uroot -p123456 Просмотр версии MySQL статус Авторизация удаленных ссылок РАЗРЕШИТЬ ВСЕ НА *.* ДЛЯ `root’ @ ‘%’ `; Обновить полномочия сбросить привилегии; Изменить правила шифрования ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ "root"@"localhost", ИДЕНТИФИЦИРОВАННОГО паролем "пароль", НИКОГДА НЕ ИСТЕКАЕТ; Изменить пароль root ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ "root"@"%", ИДЕНТИФИЦИРОВАННОГО паролем mysql_native_password ПО "123456"; Обновить полномочия сбросить привилегии; На этом этапе используйте Navicat, чтобы обнаружить, что вы можете подключиться к mysql mydocker В контейнере сначала выйдите из MySQL Затем выйдите из контейнера В это время строительство контейнера docker ﹣ MySQL завершено. Версия MySQL-8.0. Если вам нужно создать версию 5. X, вам нужно только использовать docker pull MySQL: 5. X и использовать изображение для запуска контейнера. В контейнере вам нужно только авторизовать удаленное подключение,
- Сборка докера php fpm
Создание docker phpfpm немного утомительно, потому что PHP имеет разные версии, разные расширения и зависимости, поэтому вы можете использовать dockerfile для создания docker phpfpm и гибко настраивать необходимые расширения Создайте новый файл dockerfile со следующим содержимым
FROM php:7.1-fpm
MAINTAINER your name
#Define extension version number
#Redis extension
ENV PHPREDIS_VERSION 4.0.0
#Swoole extension
ENV SWOOLE_VERSION 4.0.3
#Set time
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' > /etc/timezone
#Some extensions that are neither in the PHP source package nor in the PECL extension warehouse are no longer available. Use apt to install the extensions directly
RUN apt-get update \
&& apt-get install -y \
curl \
wget \
git \
zip \
libz-dev \
libssl-dev \
libnghttp2-dev \
libpcre3-dev \
libmemcached-dev \
zlib1g-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
&& apt-get clean \
&& apt-get autoremove
#Install composer
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
&& composer self-update --clean-backups
#PHP source file directory comes with extension docker PHP ext install
#Mysqli extension
RUN docker-php-ext-install mysqli
PDO extension
RUN docker-php-ext-install pdo_mysql
# Bcmath
RUN docker-php-ext-install bcmath
GD extension
RUN docker-php-ext-install -j$(nproc) iconv mcrypt
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install -j$(nproc) gd
#Some extensions are not included in the PHP source file, but exist in the extension library warehouse of PHP. Use PECL install to install the extension, and then use the docker PHP ext enable command to enable the extension
RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tgz \
&& pecl install /tmp/redis.tgz \
&& rm -rf /tmp/redis.tgz \
&& docker-php-ext-enable redis
#Msgpack extension download PECL local installation open extension (delay queue usage reduces source data space)
RUN wget http://pecl.php.net/get/msgpack-${MSGPACK_VERSION}.tgz -O /tmp/msgpack.tgz \
&& pecl install /tmp/msgpack.tgz \
&& rm -rf /tmp/msgpack.tgz \
&& docker-php-ext-enable msgpack
#Hiredis depends on installation
RUN wget https://github.com/redis/hiredis/archive/v${HIREDIS_VERSION}.tar.gz -O /tmp/hiredis.tar.gz \
&& mkdir -p /tmp/hiredis \
&& tar -xf /tmp/hiredis.tar.gz -C /tmp/hiredis --strip-components=1 \
&& rm /tmp/hiredis.tar.gz \
&& ( \
cd /tmp/hiredis \
&& make -j$(nproc) \
&& make install \
&& ldconfig \
) \
&& rm -r /tmp/hiredis
#Swoole extension installation open extension
RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O /tmp/swoole.tar.gz \
&& mkdir -p /tmp/swoole \
&& tar -xf /tmp/swoole.tar.gz -C /tmp/swoole --strip-components=1 \
&& rm /tmp/swoole.tar.gz \
&& ( \
cd /tmp/swoole \
&& phpize \
&& ./configure --enable-async-redis --enable-mysqlnd --enable-openssl --enable-http2 \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r /tmp/swoole \
&& docker-php-ext-enable swooleПосле создания файла dockerfile выполните следующую команду в каталоге, в котором находится файл, для создания образа sudo docker build-t fpm-php-7.1:v1.0.0 . Примечание: последнее. Команды представляет текущий каталог Используйте образы докеров, чтобы проверить, успешно ли создан образ Запустите докер? Контейнер Php fpm с командой docker run
docker run --name docker_phpfpm71 \ --restart=always \ -p 9000:9000 \ -v ~/Sites:/data/home \ -v ~/Sites/docker_phpfpm71/logs:/data/logs \ --privileged \ -d fpm-php-7.1:v1.0.0
-V - mount the directory in the container to the local directory --Privileged enables the root in the container to have real root permission, otherwise, the root in the container is only a common external user permission --Restart - sets the container restart policy. When the container exits, does the docker daemons restart the container that just exited.
Используйте команду docker PS, чтобы проверить, запущен ли контейнер docker ps
Докер php fpm удался
- Сборка докера
Когда вы начинаете докер? Nginx, вам нужно использовать параметр — link, чтобы связать контейнер nginx с контейнером phpfpm, который вы только что запустили, и вам нужно выполнить некоторые операции по монтированию каталогов Сначала создайте несколько локальных каталогов для хранения конфигурации nginx mkdir -p ~/Сайты/docker_nginx/{conf,conf.d,html,журналы} Создайте файл nginx.conf в ~/сайты/docker \ nginx/conf/. Содержание выглядит следующим образом
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html{
}
error_page 500 502 503 504 /50x.html;
location = /50x.html{
}
location ~ ^/assets/.*\.php$ {
deny all;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass docker_phpfpm71:9000;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
try_files $uri =404;
}
location ~* /\. {
deny all;
}
}
}
Запустите контейнер nginx с помощью команды docker run
docker run --name docker_nginx -d -p 80:80 -v ~/Sites/docker_nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/Sites/docker_nginx/logs:/var/log/nginx -v ~/Sites:/usr/share/nginx/html -v ~/Sites/docker_nginx/conf.d:/etc/nginx/conf.d --link docker_phpfpm71:phpfpm --volumes-from docker_phpfpm71 nginx
--Link links two containers, so that the source container (the linked container) and the receiving container (the actively unlinked container) can communicate with each other, and the receiving container can obtain some data of the source container, such as the environment variables of the source container --Volumes from authorize one container to access another's volume
Используйте команду docker PS, чтобы узнать, запускается ли контейнер Посетите локальный хост в браузере