配置 Docker 环境
配置 Docker 环境
1、安装 Docker
(1)安装 Docker
# 清理旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 安装依赖包
yum install -y yum-utils
# 以下二选一
# 配置国内镜像源(阿里)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 配置国内镜像源(腾讯)
yum-config-manager --add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo
# 安装 Docker
yum install -y docker-ce docker-ce-cli containerd.io
# 设置自启动
systemctl enable docker
# 启动服务
systemctl start docker注意:在 2024-11-17 18:30:31 经过对腾讯云 TencentOS 2.4(兼容 CentOS 7)系统上进行最后的 yum install -y ... 时,出现了 404 找不到包的问题,当时的解决方案如下:
# 删除系统自带的各种yum镜像源文件(谨慎而行)
mv /etc/yum.repos.d/*.repo /home/xxx/backup
# 下载CentOS对应版本的基础源文件(这里是7,需要8就尝试的找8的版本)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tencent.com/repo/centos7_base.repo
# 拉取缓存,顺便验证一下上面的基础库是否正确
yum makecache
# 配置国内的 Docker 镜像源
yum-config-manager --add-repo https://mirrors.cloud.tencent.com/docker-ce/linux/centos/docker-ce.repo
# 完成上面的操作之后,再次执行安装,如果还是不行,继续执行以下步骤
# 修改docker-ce.repo文件中的模块的信息
vim /etc/yum.repos.d/docker-ce.repo
# 将 docker-ce-stable 模块的内容改为:
baseurl=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/7/x86_64/stable
gpgkey=https://mirrors.cloud.tencent.com/docker-ce/linux/centos/gpg
# 完成后继续安装 Docker,没问题就没事了,有问题只能再面向搜索引擎了!(2)配置 Docker
注意:当前多个国内镜像源已失效,以下示例中的腾讯云镜像源仅支持内网访问,除此之外还可自行去阿里云申请专属的镜像加速地址。
# 注意查看此文件中是否有内容,或使用>>则不覆盖
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"],
"log-opts": {
"max-size": "1024m",
"max-file": "1"
}
}
EOF
# 重启使其生效
systemctl restart docker(3)授权用户(可选)
# 创建用户组(可能已存在)
groupadd docker
# 加入指定用户
usermod -aG docker [username]
# 重启 Docker(不知道此步骤是否必须),用户必须重新登录后生效
systemctl restart docker2、安装 Nexus 3
(1)拉取镜像
docker search sonatype/nexus3
docker pull sonatype/nexus3(2)准备数据挂载目录
mkdir -p /usr/local/program/nexus3/data
chmod 777 -R /usr/local/program/nexus3/data(3)启动镜像
在启动前需注意:
- 配置较低的服务器,可在
docker run时携带以下参数来限制nexus的内存:
-e "INSTALL4J_ADD_VM_PARAMS=-Xms512m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs"
- 若后续有配置
docker仓库的需求,在启动nexus容器前要规划好docker仓库的端口号并添加端口映射,即:
nexus容器共需要3个端口:nexus本身的端口、docker仓库的HTTP端口、docker仓库的HTTPS端口(可选)
启动命令如下:
#!/bin/bash
cd /usr/local/program/nexus3
program_path=`pwd`
program_name=${program_path##*/}
docker rm -f ${program_name}
docker run --name ${program_name} --restart always \
-v /etc/localtime:/etc/localtime \
-v ${program_path}/data:/nexus-data \
-p 58081:8081 -p 58082:8082 -p 58083:8083 \
-e "INSTALL4J_ADD_VM_PARAMS=-Xms512m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs" \
-d sonatype/nexus3(4)访问web管理页面
安装完成后可以通过http:ip:58081访问,这里要根据自身的实际情况,如有nginx还需要配置代理。
登录用户名为admin,密码需要通过cat /usr/local/program/nexus/data/admin.password命令查看,登录成功后需修改密码。
(5)配置maven仓库及docker仓库
此处页面操作较复杂,具体可查看参考资料中的文章。
题外话:在对nexus进行数据迁移时,遇到了一个数据目录权限的问题,启动后日志一直在报“Unable to update instance pid: /nexus-data/instances/instance.properties (Permission denied)”等信息,这是因为Nexus docker镜像使用的用户id是200,需要有映射到容器中
/nexus-data目录的本地的权限,最简单的方式就是将这个目录的所有权修改为200:sudo chown -R 200 <本地nexus-data目录>。
参考:
3、安装 Nginx
(1)拉取镜像
docker pull nginx(2)启动临时容器
docker run --name nginx -p 80:80 -d nginx(3)准备映射文件及目录
# 创建日志目录
mkdir -p /usr/local/program/nginx/logs
# 创建证书目录,非必须,若要求配置 https 会用到
mkdir -p /usr/local/program/nginx/certificate
# 将容器内的相应目录复制到宿主机
docker cp nginx:/usr/share/nginx/html /usr/local/program/nginx
docker cp nginx:/etc/nginx/conf.d /usr/local/program/nginx
docker cp nginx:/etc/nginx/nginx.conf /usr/local/program/nginx(4)启动正式容器
#!/bin/bash
cd /usr/local/program/nginx
program_path=`pwd`
program_name=${program_path##*/}
docker rm -f ${program_name}
docker run --name ${program_name} --restart always --net=host \
-v /etc/localtime:/etc/localtime \
-v ${program_path}/certificate:/etc/nginx/certificate \
-v ${program_path}/conf.d:/etc/nginx/conf.d \
-v ${program_path}/html:/usr/share/nginx/html \
-v ${program_path}/logs:/var/log/nginx \
-v ${program_path}/nginx.conf:/etc/nginx/nginx.conf \
-d nginx4、安装 MySQL
(1)拉取镜像
docker pull mysql:8.0.41
# docker pull mysql:5.7.44(2)启动临时容器
docker run -d --name mysql8 -p 53308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.41
# docker run -d --name mysql57 -p 53306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.44(3)准备映射文件及目录
mkdir -p /usr/local/program/mysql8
docker cp mysql8:/etc/my.cnf /usr/local/program/mysql8/
docker cp mysql8:/var/lib/mysql /usr/local/program/mysql8
mv /usr/local/program/mysql8/mysql /usr/local/program/mysql8/data
# mkdir -p /usr/local/program/mysql57
# docker cp mysql57:/etc/my.cnf /usr/local/program/mysql57/
# docker cp mysql57:/var/lib/mysql /usr/local/program/mysql57
# mv /usr/local/program/mysql57/mysql /usr/local/program/mysql57/data(4)启动正式容器
#!/bin/bash
cd /usr/local/program/mysql8
program_path=`pwd`
program_name=${program_path##*/}
docker rm -f ${program_name}
docker run --name ${program_name} --restart always \
-v /etc/localtime:/etc/localtime \
-v ${program_path}/my.cnf:/etc/my.cnf \
-v ${program_path}/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 53308:3306 -d mysql:8.0.41(5)配置MySQL
参考常规安装后的配置方式
5、安装 Redis
(1)拉取镜像
docker pull redis:6.0.20(2)准备映射文件及目录
# 创建相关目录
mkdir -p /usr/local/program/redis/data
cd /usr/local/program/redis为了保证配置文件与版本的匹配性,建议去以下地址下载对应版本的包,找到里面的redis.conf文件,手动上传到/usr/local/program/redis目录下。
地址:http://download.redis.io/releases/
注意:千万不要参考网上 通过wget http://download.redis.io/redis-stable/redis.conf下载,笔者已踩坑,导致启动报错:Bad directive or wrong number of arguments
在此之前可以修改一些自定义配置,具体修改内容如下:
// 解除只能为本地连接限制
# bind 127.0.0.1
bind *
// 关闭保护模式,保护模式下限制为本地访问
# protected-mode yes
protected-mode no
// 设置一个密码(强烈推荐)
# requirepass foobared
requirepass 这是你的密码
// 设置内存限制(可选)
maxmemory 512MB
(3)启动容器
#!/bin/bash
cd /usr/local/program/redis
program_path=`pwd`
program_name=${program_path##*/}
docker rm -f ${program_name}
docker run --name ${program_name} --restart always \
-v /etc/localtime:/etc/localtime \
-v ${program_path}/redis.conf:/etc/redis/redis.conf \
-v ${program_path}/data:/data \
-p 56379:6379 -d redis:6.0.20 redis-server /etc/redis/redis.conf6、参考资料
- Docker
- Nexus
- Nginx
- MySQL

