mysql
mysql的容器的构建,首先要拉取官方的mysql容器:
通过docker search mysql
命令搜索镜像。
docker search mysql
➜ docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 7270 [OK]
mariadb MariaDB is a community-developed fork of MyS… 2340 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 535 [OK]
zabbix/zabbix-server-mysql Zabbix Server with MySQL database support 138 [OK]
hypriot/rpi-mysql RPi-compatible Docker Image with Mysql 97
zabbix/zabbix-web-nginx-mysql Zabbix frontend based on Nginx web-server wi… 74 [OK]
...
第1个mysql就是官方的镜像,可以使用docker pull mysql获取镜像。目前直接拉取的是mysql的最新版mysql10.0,mysql8.0以后的版本在使用上和之前的mysql5.7有较大的区别,好多命令会报错,需要使用mysql8.0的规范去处理。本地做演示使用mysql5.7老版本,方便测试和排查问题。
docker pull mysql:5.7
$ docker images;
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 702fb0b7837f 13 days ago 372MB
为了方便调试在本地创建shell脚本来运行镜像,编写mysql启动脚本docker-mysql.sh
,并通过chmod +x 文件
给与运行权限:
sudo docker run \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-d \
-v /Users/tyrad/docker/mysql/data:/var/lib/mysql \
-v /Users/tyrad/docker/mysql/logs:/logs \
-v /Users/tyrad/docker/mysql/conf:/etc/mysql \
mysql:5.7
其中:
- -v /Users/tyrad/docker/mysql/data:/var/lib/mysql 数据库文件与宿主机的映射
- -v /Users/tyrad/docker/mysql/logs:/logs 日志的映射
- -v /Users/tyrad/docker/mysql/conf:/etc/mysql 配置文件目录的映射
运行脚本:./docker-mysql.sh
chmod +x docker-mysql.sh
./docker-mysql.sh
Password:
7517eaa8a3d6b909702b31fa8565fb57d8cd6d7a6a4b3df949748372751a8585
如果看到显示有以上的记录说明容器创建并启动正常了。如果没有发现记录,可以通过docker ps -a
查看未启动的进程或启动失败的进程。并且可以通过docker logs mysql
查看mysql容器为什么启动失败!
启动失败或修改启动脚本需要停止现有的并删除现在的容器,再重新运行脚本。
如果有需要可以使用docker stop mysql
命令停止正在运行的容器,再执行docker rm mysql
删除容器。
此处主要参考(抄)自 http://blog.ku-cat.com/2018/11/06/boost/
php+nginx
为了方便,直接拉取已有的richarvey/nginx-php-fpm
仓库。
同样的写一个脚本:
docker run --name web --restart=always \
-v `pwd`/nginx/webapp:/usr/share/nginx/html \
-v `pwd`/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v `pwd`/nginx/conf.d:/etc/nginx/conf.d \
-v `pwd`/nginx/logs:/var/log/nginx \
-p 80:80 \
-p 8999:8999 \
-p 443:443 \
--network cc-net \
--add-host localhost:$(ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}') \
-d richarvey/nginx-php-fpm
报错解决
Error response from daemon: driver failed programming external connectivity on endpoint lnmp (ac1a9c20be8f96388c1fc2d78983297d1d9b9feb428d8ca31cc3ff46c81d5d91): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error Permission denied
解决:
1) 检查映射的端口是否被宿主机占用
2) 检查docker网卡是否被禁用