前言最近迷上docker了,就看用docker有什么坑没踩过的,先把项目会用到的工具用docker撸一遍,省得到时候再踩这些坑浪费时间
构建环境
centos7.9
docker 20.10.6
需要构建的开发环境
mysql8.0.23
redis6.0.6
es7.8
php7.4
swoole4
nginx-1.18
docker基本命令
docker images 查看当前有哪些镜像
docker ps 查看启动的容器
docker ps -a 查看所有容器
docker top 容器名 查看进程
docker exec -it nginx bash 进入容器
docker inspect nginx|grep IPAddress //在docker里面查找nginx ip
docker image inspect 镜像名 |grep -i verison
docker image rm 删除本地镜像
docker rm 容器
容器启动-p端口 -d后台运行–name容器名 -v映射目录 --privileged=true拥有root权限
docker run -p -d --name -v --privileged=true 镜像名
docker run -p 80:80 -d --name nginx -v /var/www/html:/docker/www -v /docker/nginx/default.conf:/etc/nginx/conf.d/default.conf --privileged=true nginx
一、安装docker
yum -y install docker
安装nginx
yum pull nginx
nginx配置文件
server {
listen 80;
listen [::]:80;
server_name localhost;
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.18.0.6:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
启动命令 docker run -p 80:80 -d --name nginx -v /var/www/html:/docker/www -v /docker/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /nginx/logs:/var/nginx/log --privileged=true nginx
安装nginx
出现这个界面nginx算配好了
安装php-fpm
我们用7.4的版本
docker pull php:7.4-fpm
构建php 容器
docker run -p 9000:9000 -d -name php -v /var/www/html:/docker/www --privileged=true php:7.4-fpm
这时候在/var/www/html目录建一个index.php,然后随便输点什么,phpinfo();只要页面有输出证明成功了
如果报403,404,都是配置出问题了
注意这个ip的配置是容器内php-fpm的ip
可以用命令去查
docker inspect php|grep IPAddress
然后在docker/nginx修改一下配置重启nginx即可
安装mysql
docker pull mysql
docker run -p 3306:3306 --name mysql -v /home/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql
安装成功后软件访问会连不上,这是因为的8.0的加密规则发生变化了,需要在数据库改加密规则
mysql 8 外部连接会报一下异常: Authentication plugin ‘caching_sha2_password’ cannot be loaded.
安装redis
docker pull redis
docker run -p 6379:6379 --name redis -d --privileged=true redis
服务器或防火墙打开端口即可,非常简单
安装es
老规矩
docker pull elasticsearch
但是这里却报错了
这是要指定版本才能下载,我直接输了个7.8,问题依旧,应该是没有这个版本号,需要到官网去看才行
docker仓库查对应elasticsearch版本下载.
我直接下载了最新的7.12.1
创建网络
如果需要安装kibana等其他,需要创建一个网络,名字任意取,让他们在同一个网络,使得es和kibana通信
docker network create esnet
docker run --name es -p 9200:9200 -p 9300:9300 --network esnet -e “discovery.type=single-node” elasticsearch:7.12.1
出现这个界面就安装成功了
踩坑
如果报go235,说明docker版本比较低,需要更新yum库并重装docker
解决Error response from daemon: oci runtime error: container_linux.go:247: starting container process.
如果报Error response from daemon: Unknown runtime specified docker-runc
Unknown runtime specified docker-runc.