• 以下内容引用官方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

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 也就是社区版本,免费使用

yum install docker-ce

查看版本信息

docker --version

安装成功,显示版本号

启动

systemctl start docker

配置开机启动

systemctl enable docker

安装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

查看版本号

docker-compose --version

安装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 配置以下内容

#daemonize yes 否则无法启动容器

启动

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+端口,完成账户的登录配置

docker

安装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

有挺多的配置安装的时候就默认安装,根据个人需要安装需要的东西