🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Docker容器安装参考链接:https://blog.csdn.net/weixin_41412505/article/details/124842879 容器组成:镜像名称:镜像标签 解析:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S 创建容器:[容器同步本地] 1:[nginx] 未安装php前:执行此命令: docker run --name nginx -p 80:80 -d -v /etc/nginx/conf.d:/docker/nginx/conf.d --privileged=true nginx 安装php后:先把之前的nginx删掉,再执行此命令(或者先搭建php容器,再直接执行此语句):docker run -d --name nginx -p 80:80 -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/www:/docker/www -v /docker/wwwlogs:/var/log/nginx --link php --privileged=true nginx 2:[php] docker run -p 9000:9000 -d --name php -v /docker/www:/docker/www --privileged=true php:7.4-fpm 3:[mysql] docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 4: [redis] docker run -p 6379:6379 -v $PWD/data:/data -v $PWD/redis.conf:/etc/redis/redis.conf --name redis -d --restart=always redis:latest redis-server --appendonly yes --requirepass "redis_123456" 虚拟主机文件最终配置(子配置文件): server { listen 80; root /docker/www; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /docker/www; } location ~ \.php$ { root /docker/www; #fastcgi_pass 172.17.0.3:9000; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 删除容器命令:【先停止容器:docker stop 容器名】 删除全部容器命令:docker rm `docker ps -a -q` 删除指定容器命令:docker rm 容器名 进入容器命令: 1:进入mysql命令: docker exec -it mysql(容器名) /bin/bash 2:进入nginx命令: docker exec -it nginx(容器名) /bin/bash 3:进入php命令: docker exec -it php(容器名) /bin/bash 4:进入redis命令: docker exec -it redis(容器名) /bin/bash 5:进入指定容器命令:docker exec -it a66c72ad18e6(容器CONTAINER ID) /bin/bash 6:停止且删除指定容器命令:docker stop 1dbee1e0b726 && docker rm 08500896e2e4 (可直接删除: docker rm -f 19da2e3cc55f) 7:进入nginx容器后,找到nginx配置文件:whereis nginx 8:记住三个路径: 1:进入容器后,查询nginx配置成功的欢迎html页面路径:cd /usr/share/nginx/html 下面有index.html(nginx欢迎界面),注意:此/usr/share/nginx下的除html目录外,一旦容器删除,就会全部删除其他目录 2:查询nginx主或子配置文件:vim /etc/nginx/nginx.conf(主配置文件) 或 cd /etc/nginx/conf.d(子配置文件) 3:如果按照上述配置nginx容器部署,那么映射的外部(服务器内)的主配置文件路径为:cd /docker/nginx/nginx.conf 映射的外部(服务器内)的子配置文件路径为:cd /docker/nginx/conf.d/下所有的conf后缀文件【如有不清楚地方,可以查看nginx.conf文件加载机制】 9:注意事项: 1:每次创建nginx容器后,检查STATUS(Up)是否开启:docker ps -a ,没有问题,启动容器:docker restart 容器ID 2:如果打开网站(域名),无法正常访问:使用d命令:docker logs 容器ID(注意查询指定日志前多少条:docker logs 容器ID --tail=10),查询具体问题,解决 3:启动容器前,进入nginx内部容器中,使用nginx -t 命令检查是否出现报错问题,如果正常:可以启动容器(退出容器后执行),如果错误,先处理nginx报错问题,然后再启动容器 查询容器日志: docker logs (容器CONTAINER ID) Nginx热重启命令: nginx reload 容器内安装Vim命令:apt-get update && apt-get install vim -y Docker命令: 重启: systemctl restart docker 开启: systemctl start docker 关闭: systemctl stop docker 加入开机自启: systemctl enable docker 关闭 systemctl stop firewalld 禁止开机启动防火墙 systemctl disable firewalld Docker重启php命令: 重启: docker restart php 开启: docker start php 关闭: docker stop php Docker镜像命令: 查询镜像 docker images 删除镜像 docker rmi <容器 id> Lnmp命令:【需要在容器外部使用】 nginx: docker restart nginx mysql: docker restart mysql php: docker restart php Docker安装php扩展: 1:进入php容器(切到/usr/src目录),执行ls -l 2:创建并初始化 /usr/src/php目录 docker-php-source extract 3:ls -l 4:docker-php-source delete 5:ls -l 6:(切到/usr/local/etc/php目录)ls /usr/local/lib/php/extensions/no-debug-non-zts-20190902 7:# 查看redis 扩展是否可以启动:php -m | grep redis 8:安装redis 扩展:pecl install redis 8:启动 redis 扩展:docker-php-ext-enable redis 9:查看redis 扩展是否可以启动:php -m | grep redis PHP命令: 检查扩展:进入容器后执行命令:php -m 说明,php容器中默认是没有php.ini配置文件的,加载原理如下所示: root@517b9c67507a:/usr/local/etc/php# php -i | grep -A 5 php.ini Configuration File (php.ini) Path => /usr/local/etc/php Loaded Configuration File => (none) # 核心是 /usr/local/etc/php/conf.d 目录下的扩展配置文件 Scan this dir for additional .ini files => /usr/local/etc/php/conf.d Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-redis.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini 卸载扩展,直接删除/usr/local/etc/php/conf.d 对应的配置文件即可 # 卸载redis 扩展 root@803cbcf702a4:/usr/local# rm -rf /usr/local/etc/php/conf.d/docker-php-ext-redis.ini root@803cbcf702a4:/usr/local# php -m 注释: 1:如果上述nginx、php、mysql、redis均已安装完成,配置虚拟主机后,打开虚拟主机的域名,依旧提示"无法访问",可能要参考链接: 参考链接1:https://www.cnblogs.com/typttxs/p/10764640.html 参考链接2:https://www.cnblogs.com/Cra2iTeT/p/16131940.html 1.1:查看进程,发现相关的容器并没有在运行,而 docker-proxy 却依然绑定着端口:docker ps 1.2:检查docker镜像,查看被docker-proxy占用的端口:ps -aux | grep -v grep | grep docker-proxy 1.3:停止 doker 进程,删除所有容器,然后删除 local-kv.db 这个文件,再启动 docker 就可以了。 service docker stop docker rm `docker ps -a -q` sudo rm /var/lib/docker/network/files/local-kv.db service docker start docker run -d --name nginx -p 80:80 -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/www:/docker/www -v /docker/wwwlogs:/var/log/nginx --privileged=true nginx && docker run -p 9000:9000 -d --name php -v /docker/www:/docker/www --privileged=true php:7.4-fpm && docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 && docker run -p 6379:6379 -v $PWD/data:/data -v $PWD/redis.conf:/etc/redis/redis.conf --name redis -d --restart=always redis:latest redis-server --appendonly yes --requirepass "redis_123456" 分别把创建容器在四个步骤重新走一遍,然后重启各个服务,即可打开Nginx 1.4:使用下面的语句启动了另外一个nginx服务:docker run --name test -p:80:80 -d nginx ,如果显示Nginx标识,代表Nginx配置OK docker restart nginx