本文已参与「新人创作礼」活动,一起开启掘金创作之路。
创建一个nginx: 准备一个目录: /docker/nginx1 ./ conf/nginx.conf /.logs ./www
创建nginx: docker run -d -p 8082:80 --name nginx1 -v /docker/nginx1/html:/usr/share/nginx/html -v /docker/nginx1/conf/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx1/logs:/var/log/nginx nginx
分析: -p 8082:80 虚拟80映射宿主8082端口 --name nginx1 设置虚拟名称 -v /docker/nginx1/html:/usr/share/nginx/html 映射文件目录 /docker/nginx1/conf/nginx.conf:/etc/nginx/nginx.conf 映射配置文件 -v /docker/nginx1/logs:/var/log/nginx 映射日志
注意:带映射目录 文件的 需要实现把文件目录准备好!
cp /docker/nginx1/conf //拷贝一个文件出来 docker cp nginx1:/etc/nginx/nginx.conf /docker/nginx1/conf/ 注意:这里我的是配置文件就位后才正常运行的 这里有个骚操作就是 先搞了一个最简单的映射 没有任何配置的 虚拟nginx 直接把它的/etc/nginx/nginx.conf 撸到本地 想要的映射文件位置 然后在启动 就可以了
安装Portainer:
docker pull portainer
docker run -d -p 9999:9000 --restart=always --name portainer -v /docker/Portainer/run/docker.sock:/var/run/docker.sock -v /docker/Portainer/data:/data docker.io/portainer/portainer
上来先贴干货:
docker run --name mysql4 -p 3310:3306 -e MYSQL_ROOT_PASSWORD=root --net mynetwork --ip 192.168.212.134 -d mysql:5.7 docker run --name mysql4 -p 3311:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
Docker安装后,默认会创建下面三种网络类型
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
9781b1f585ae bridge bridge local
1252da701e55 host host local
237ea3d5cfbf none null local
启动 Docker的时候,用 --network 参数,可以指定网络类型
docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash
bridge:桥接网络
默认情况下启动的Docker容器,都是使用bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了
none:无指定网络
使用 --network=none ,docker 容器就不会分配局域网的IP
host: 主机网络
使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。 例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。
创建自定义网络:(设置固定IP)
启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下 docker run -itd --net bridge --ip 172.17.0.10 centos:latest /bin/bash 6eb1f228cf308d1c60db30093c126acbfd0cb21d76cb448c678bab0f1a7c0df6 docker: Error response from daemon: User specified IP address is supported on user defined networks only.
步骤1: 创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork
➜ ~ docker network ls
NETWORK ID NAME DRIVER SCOPE
9781b1f585ae bridge bridge local
1252da701e55 host host local
4f11ae9c85de mynetwork bridge local
237ea3d5cfbf none null local
步骤2: 创建Docker容器
docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash
查看php-fmp占用端口:
netstat -nlpt|grep php-fmp
查看端口占用情况:
netstat -nlpt | grep 9000
查看服务占用进程:
ps aux|grep php-fpm
杀死服务全部进程:
killall php-fpm
废话不多说,先解问题:
找到php-fpm的配置文件php-fpm.conf: 其中有一行 listen=/tem/php-cgi.lock 类似的内容 改成: listen=127.0.0.1:9000 重启php-fpm即可(service php-fpm restart)
特此找了一下php-fpm.conf相关的注解,贴码如下:
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice
#错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.
rlimit_files = 65535
#设置核心rlimit最大限制值.
[www]
user = joy
group = joy
listen = 127.0.0.1:9000
#fpm监听端口,即nginx中php处理的地址
listen.backlog = 2048
#backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。
pm = dynamic
pm.max_children = 1024
#,子进程最大数
pm.start_servers = 10
#控制服务启动时创建的进程数
pm.min_spare_servers = 10
#,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程
pm.max_spare_servers = 60
#保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
pm.max_requests = 102400
#设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.
request_terminate_timeout = 10s
#设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0' 表示 'Off'.当经常出现502错误时可以尝试更改此选项。
request_slowlog_timeout = 10s
#当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off'
slowlog = var/log/$pool.log.slow
#慢请求的记录日志,配合request_slowlog_timeout使用
我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿。