Docker 是一个开源的应用容器引擎,基于 Go 语言 并听从 Apache2.0 协议开源。php
Docker 可让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,而后发布到任何流行的 Linux(Windows,MacOS) 机器上,也能够实现虚拟化。html
容器是彻底使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。mysql
docker pull nginx:latest docker pull php:5.6-fpm docker pull php:5.6-cli docker pull mysql:5.6.46 docker pull phpmyadmin/phpmyadmin
使用命令 docker images
查看本地镜像:nginx
REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest c7460dfcab50 5 hours ago 126MB phpmyadmin/phpmyadmin latest fcf3beee74b9 47 hours ago 458MB mysql 5.6.46 f7ba8643e01a 12 days ago 302MB php 5.6-fpm 3458979c7744 11 months ago 344MB php 5.6-cli 36c3c974e6ee 11 months ago 344MB
善用
https://www.runoob.com/docker/docker-search-command.htmldocker search
命令来查看可用版本。web
能够执行命令 docker container ls
(或docker ps)或者 docker container ls -all
(或docker ps -a),来查看已启动的容器或者全部容器。sql
docker run --name xu-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.6.46
docker run --name xu-phpmyadmin -d --link xu-mysql:db -p 8081:80 phpmyadmin/phpmyadmin # 访问http://127.0.0.1:8081/,使用root/123456帐号信息登陆管理mysql
docker run --name xu-php-fpm5.6 -v ~/code/docker/nginx/www:/www -d php:5.6-fpm
下面Nginx + PHP:docker
docker run --name xu-nginx -p 8080:80 -d -v ~/code/docker/nginx/www:/usr/share/nginx/html -v ~/code/docker/nginx/conf/conf.d/:/etc/nginx/conf.d --link xu-php-fpm5.6:php nginx
参考:数据库
https://www.runoob.com/docker/docker-install-php.html
https://hub.docker.com/_/php
当把web程序代码放入 ~/code/docker/nginx/www
后,在浏览器打开http://127.0.0.1:8080/
,提示:vim
您的服务器环境不支持gd扩展,将没法使用验证码!浏览器
容器的中止、删除,以下:
docker stop 027c0f432aae # 此外对应的容器id
docker rm 027c0f432aae
查看mysql容器的ip地址,链接数据库时用得上:
docker inspect --format='{{.NetworkSettings.IPAddress}}' xu-mysql
若是以前启用了 gd
,须要先在 php.ini
文件中注释掉 extension=gd.so
并重启容器。
进入php容器:
docker exec -it <容器ID或容器名称> /bin/bash
可把软件源修改成国内某镜像站源,例如容器软件源 /etc/apt/sources.list
修改成网易镜像站源,以stretch
为例:
# 先作备份: mv /etc/apt/sources.list /etc/apt/sources.list.bak # 再建立编辑 /etc/apt/sources.list deb http://mirrors.163.com/debian/ stretch main contrib non-free contrib deb http://mirrors.163.com/debian/ stretch-updates main contrib non-free contrib deb http://mirrors.163.com/debian/ stretch-backports main contrib non-free contrib
编辑器推荐安装 vim
,默认没有安装,请先执行 apt-get update
,再安装 apt-get install vim
,可是每每矛盾的是,我若是可以快速更新并安装的话,就用不着换源了,因此使用最基本的命令“echo
”:
# 依次执行: echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >/etc/apt/sources.list echo "deb http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >>/etc/apt/sources.list echo "deb-src http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list
# 更新软件源 apt update # 安装各类库 apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev # 解压源码 docker-php-source extract # 进入gd源码文件夹 cd /usr/src/php/ext/gd # 准备编译 docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2 # 编译安装 docker-php-ext-install gd # 检查扩展是否安装成功 php -m | grep gd # 退出php容器终端 exit # 重启php容器 ……
若是网站图形验证码还显示不出来,报错以下:
Fatal error: Call to undefined function core\extend\code\imagettftext()
按照如下步骤进行:
docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include 从新编译: docker-php-ext-install gd
若是报错:
configure: error: freetype-config not found.
运行: apt install libfreetype6-dev
,而后再继续运行上面的命令。
gd库中有了freetype,则验证码显示正常了。
同理,若是提示没有mysqli扩展,执行 docker-php-ext-install mysqli
命令再重启php容器便可。
此命令在PHP容器中建立一个/usr/src/php的目录,里面放了一些自带的文件而已。咱们就把它看成一个从互联网中下载下来的PHP扩展源码的存放目录便可。事实上,全部PHP扩展源码扩展存放的路径: /usr/src/php/ext 里面。
格式:
docker-php-source extract | delete
参数说明:
* extract : 建立并初始化 /usr/src/php目录
* delete : 删除 /usr/src/php目录
这个命令是用来启动 PHP扩展 的。咱们使用pecl安装PHP扩展的时候,默认是没有启动这个扩展的,若是想要使用这个扩展必需要在php.ini这个配置文件中去配置一下才能使用这个PHP扩展。而 docker-php-ext-enable 这个命令则是自动给咱们来启动PHP扩展的,不须要你去php.ini这个配置文件中去配置。
这个命令是用来安装并启动PHP扩展的。
命令格式:
docker-php-ext-install “源码包目录名”
注意点: