以下内容引用官方docker :
To install Docker Engine, you need a maintained version of CentOS 7. Archived versions aren’t supported or tested. The centos-extras repository must be enabled. This repository is enabled by default, but if you have disabled it, you need to re-enable it. The overlay2 storage driver is recommended.
服务器环境
环境:CentOS Linux release 7.9.2009 (Core)
内核版本:3.10.0-1127.13.1.el7.x86_64
备注
从官方的系统环境要求可见,需要CentOS 7
以上版本 之前安装过CentOS 8
,安装也是正常CentOS 7
以下版本没有实测,应该是不兼容了
安装Docker 卸载旧版本(若安装过) docker-ce以前的版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
docker-ce以后的版本 查看已安装版本 yum list installed|grep docker
卸载 yum -y remove containerd.io.x86_64 yum -y remove docker-ce.x86_64 yum -y remove docker-ce-cli.x86_64
安装必需软件包 yum install -y yum-utils device-mapper-persistent-data lvm2
配置阿里镜像源
配置官方的镜像源,会比较慢,所以不推荐使用官方镜像源。 使用阿里的镜像源,速度贼快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker-ce
这里的docker-ce 也就是社区版本,免费使用
查看版本信息
安装成功,显示版本号
启动
配置开机启动
安装Docker-Compose 下载 sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
赋予执行权限 sudo chmod +x /usr/local/bin/docker-compose
查看版本号
安装MySQL 5.7版本 docker run -d -p 33060:3306 --restart=always --privileged=true -v /docker/mysql/conf:/etc/mysql -v /docker/mysql/data:/var/lib/mysql -v /docker/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=password --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
MYSQL_ROOT_PASSWORD
:root用户的密码,自行设置
8.0版本 配置
8.0部分配置以及操作跟5.7有所不一样,配置需要进一步去了解,才能正常使用 宿主机配置mysql配置文件,在/docker/mysql/conf下新增my.cnf文件 添加以下配置
[mysqld] default-authentication-plugin = mysql_native_password skip-name-resolve
default-authentication-plugin
由于mysql8.0默认的密码加密方式是 caching_sha2_password
,而目前大多数人使用的navicat版本是不支持的, 此配置就是修改加密方式,能够让外面连接 还有一种方法,直接进去容器修改user表里面的加密方式,但是修改完后,并不生效
skip-name-resolve
mysql日志显示[Warning] IP address ‘xxxx’ could not be resolved: Name or service not known, mysql默认对ip或者host进行dns反查,查询出错,则抛出异常,需要禁用掉 此配置就是禁用dns反查的配置
启动 docker run -d -p 33060:3306 --restart=always -v /docker/mysql/log/:/var/log/mysqld.log --privileged=true -v /docker/mysql/conf/:/etc/mysql/conf.d -v /docker/mysql/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=password --name mysql mysql
MYSQL_ROOT_PASSWORD
:root用户的密码,自行设置
安装Redis 配置 mkdir /docker mkdir /docker/redis mkdir /docker/redis/conf touch /docker/redis/conf/redis.conf
在redis.conf
配置以下内容
启动 docker run -d --privileged=true --restart=always -p 6379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redis redis:latest redis-server /etc/redis/redis.conf --appendonly yes --requirepass "password"
安装Nginx 添加证书(有的话)
在/docker/nginx/cert/
目录下添加对应的证书文件,如果有的话
配置
修改配置文件/docker/nginx/conf/nginx.conf
,没有此文件 则新增
upstream halo{ #定义upstream名字,下面会引用 server 127.0.0.1:8090; #指定后端服务器地址 server 192.168.3.2:8090; } server { listen 80 ; server_name wenthywang.cn; #个人域名 rewrite ^ https://$host$request_uri? permanent; #带参数跳转 } server { listen 443; server_name wenthywang.cn www.wenthywang.cn; #个人域名 ssl on; ssl_certificate cert/1_wenthywang.cn_bundle.crt; #证书位置 ssl_certificate_key cert/2_wenthywang.cn.key; #证书位置 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://halo; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ { expires 30d; access_log off; proxy_pass http://halo; } location ~ .*\.(eot|ttf|otf|woff|svg)$ { expires 30d; access_log off; proxy_pass http://halo; } location ~ .*\.(js|css)?$ { expires 7d; access_log off; proxy_pass http://halo; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } server { listen 443; server_name api.wenthywang.cn; #个人域名 ssl on; ssl_certificate cert/1_api.wenthywang.cn_bundle.crt; #证书位置 ssl_certificate_key cert/2_api.wenthywang.cn.key; #证书位置 ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_set_header HOST $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://192.168.3.2:8082/; #转发的地址 } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ { expires 30d; access_log off; } location ~ .*\.(eot|ttf|otf|woff|svg)$ { expires 30d; access_log off; } location ~ .*\.(js|css)?$ { expires 7d; access_log off; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
备注
以上配置为个人服务器配置,可添加或者修改自己的配置
因为部署了halo ,配置了80端口转发到halo
上面
小程序端需要调用服务获取信息,提供了443端口转发到api的域名
启动 docker run --restart=always -p 80:80 -p 443:443 --name nginx -v /docker/nginx/log/:/var/log/nginx -v /docker/nginx/conf/:/etc/nginx/conf.d/ -v /docker/nginx/cert/:/etc/nginx/cert -d nginx
安装Portainer
Portainer
: docker容器管理界面化,可以在浏览器管理docker,容器,镜像,挂载等很多东西 对比在控制台管理这些东西,确实方便了很多 相同的产品似乎还有挺多,之前有同事提及过,我就装来玩玩
启动 docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
登录
打开ip+端口,完成账户的登录配置
安装Jenkins
jenkins安装在容器里面比较费劲,还有一些问题也是比较难处理,安装在宿主机会好操作很多
在使用过程中,遇到挺多的棘手的问题,很难处理,可能需要一些非正常手段处理。
如果是复杂用起来的话,docker下jenkins确实是个难以维护的东西
赋予权限 chown -R 1000 /data/jenkins/jenkins-new/JENKINS_HOME chown -R 1000 /data/maven_rept chown -R 1000 /data/apache-maven-3.5.2 chown -R 1000 ~/.ssh
启动 docker run --restart=always --name jenkins -p 8090:8080 -p 50000:50000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/bin/docker \ -v /data/jenkins/jenkins-new/JENKINS_HOME:/var/jenkins_home \ -v /etc/localtime:/etc/localtime \ -v /etc/timezone:/etc/timezone \ -v /data/apache-maven-3.5.2:/data/apache-maven-3.5.2 \ -v /data/maven_rept:/data/maven_rept \ -v ~/.ssh:/var/jenkins_home/.ssh \ -d docker.io/jenkins/jenkins
登录
ip+端口登录,需要初始密码
查看初始密码
进入jenkins容器里面查看初始密码
docker exec -it jenkins /bin/bash cat /var/jenkins_home/secrets/initialAdminPassword
配置jenkins
有挺多的配置安装的时候就默认安装,根据个人需要安装需要的东西