本文环境:centos7、docker-18.09.3
一、前置条件
1.1、网络环境
各服务器间互联互通,大概某一台服务器能与其他的服务互联互通
1.2、工具
- SSH客户端:FinalShell、SmartTTY、Xshell(个人版)、MobaXterm等
- 文件上传:Xftp(个人版)、WinSCP等
1.3、SSH免密访问设置
以 192.168.133.176、192.168.133.177、192.168.133.178这三台呆板为例;
以 192.168.133.176为紧张呆板
1.3.1、 操纵指令
指令全部在192.168.133.176呆板上执行
- # 全部回车直至结束 #
- ssh-keygen -t rsa
复制代码- # 中间需要输入 192.168.133.177 的 密码,正确输入即可 #
- ssh-copy-id -i /root/.ssh/id_rsa 192.168.133.177
复制代码- # 测试 #
- ssh 192.168.133.177
- # 输入 ip addr 查看登陆机器的IP #
- # 退出ssh #
- exit
复制代码 按照雷同步骤,设置免密访问 192.168.133.178。
二、Docker安装
2.1、离线环境
2.1.1 rpm安装
获取rpm包的方法,在可以联网的最小化安装的centos服务器上执行如下:
- yum install --downloadonly --downloaddir=./ docker-ce-18.09.3-3.el7
复制代码 该指令下载离线依赖包于当前目录下。拷贝离线包到必要安装docker-ce-18.09.3-3.el7的服务器上,同级目录下执行脚本,脚本内容如下:
脚本内DOCKER_DATA_DIR 的值按照现实环境修改,保障该目录的磁盘空间充足使用
- #!/bin/sh
- # docker数据存放的目录
- # 依据实际的情况修改,保障该目录的磁盘空间足够使用
- DOCKER_DATA_DIR=/data
- echo "安装docker"
- rpm -Uvh package/*.rpm --nodeps --force
- rpm -Uvh container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
- rpm -Uvh docker-ce-18.09.3-3.el7.x86_64.rpm
- echo "创建配置文件"
- mkdir -p /etc/docker
- cat > /etc/docker/daemon.json << EOF
- {
- "graph": "${DOCKER_DATA_DIR}/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m"
- },
- "storage-driver": "overlay2"
- }
- EOF
- echo "启动"
- systemctl daemon-reload
- systemctl start docker
- echo "开机启动"
- systemctl enable docker
- echo "docker info"
- docker info
复制代码 卸载指令
- rpm -e –nodeps docker-ce-18.09.3-3.el7.x86_64.rpm
复制代码 2.1.2 二进制安装
下载二进制包:下载地点,版本18.09.3 ,另附官方下载地点,下载必要的版本。下载的压缩包上传到必要安装docker的服务器上,同目录下执行脚本 install.sh,该脚本的内容如下:
脚本内DOCKER_DATA_DIR、DOCKER_BIN_FILE_NAME的值按照现实环境修改,DOCKER_DATA_DIR设置为一个磁盘空间较大的目录
- #!/bin/sh
- set -e
- # 依据实际的情况修改,保障该目录的磁盘空间足够使用
- DOCKER_DATA_DIR=/data
- # 依据实际的情况修改,修改为实际上的下载的压缩包的名称
- DOCKER_BIN_FILE_NAME=docker-18.09.3.tgz
- echo "解压文件"
- tar zxvf ${DOCKER_BIN_FILE_NAME}
- mv docker/* /usr/bin
- echo "sysyemd管理"
- cat > /usr/lib/systemd/system/docker.service << EOF
- [Unit]
- Description=Docker Application Container Engine
- Documentation=https://docs.docker.com
- After=network-online.target firewalld.service
- Wants=network-online.target
- [Service]
- Type=notify
- ExecStart=/usr/bin/dockerd
- ExecReload=/bin/kill -s HUP \$MAINPID
- LimitNOFILE=infinity
- LimitNPROC=infinity
- LimitCORE=infinity
- TimeoutStartSec=0
- Delegate=yes
- KillMode=process
- Restart=on-failure
- StartLimitBurst=3
- StartLimitInterval=60s
- [Install]
- WantedBy=multi-user.target
- EOF
- # 授权
- chmod +x /usr/lib/systemd/system/docker.service
- echo "创建配置文件"
- mkdir /etc/docker
- cat > /etc/docker/daemon.json << EOF
- {
- "graph": "${DOCKER_DATA_DIR}/docker",
- "log-driver": "json-file",
- "log-opts": {
- "max-size": "100m"
- },
- "storage-driver": "overlay2"
- }
- EOF
- echo "启动"
- systemctl daemon-reload
- systemctl start docker
- echo "开机启动"
- systemctl enable docker
- echo "docker info"
- docker info
复制代码 二进制安装卸载
- # 停止docker #
- systemctl stop docker
- # 删除 #
- rm -f /usr/bin/docker*
- rm -f /usr/bin/containerd
- rm -f /usr/bin/containerd-shim
- rm -f /usr/bin/ctr
- rm -f /usr/bin/runc
- rm -f /usr/lib/systemd/system/docker.service
复制代码 2.2、互联网环境
参考:Alibaba开源镜像网站,docker-ce项
三、镜像管理
3.1、内网
主机上必要安装哪个组件就导入对应的镜像。
如安装nginx必要导入linux的镜像。
如必要运行springboot应用的服务器上必要导入java镜像。
docker save : 将指定镜像生存成 tar 归档文件
- docker save -o mysql.tar mysql:5.7.24
复制代码 docker load : 导入使用 docker save 命令导出的镜像,常用的镜像 java、nginx、mysql、minio(文件存储)、redis、nacos 等
3.2、互联网
3.2.1、镜像加速
您可以通过修改设置文件/etc/docker/daemon.json来使用加速器
注意下述指令针对完全没有设置过/etc/docker/daemon.json的环境,若已经设置过,自己在原底子上进行补充即可。
- sudo mkdir -p /etc/docker
- sudo tee /etc/docker/daemon.json <<-'EOF'
- {
- "registry-mirrors": [
- "https://l4bejypu.mirror.aliyuncs.com"
- ]
- }
- EOF
- sudo systemctl daemon-reload
- sudo systemctl restart docker
复制代码 3.2.2、拉取镜像
以nginx为例
四、中心件、应用步调安装
4.1、镜像导入
指令参考如下:
- # 导入nginx镜像 #
- docker load -i nginx.tar
复制代码 4.2、重启脚本
- # 停止容器 #
- docker stop 容器名称|容器ID
- # 运行容器 #
- docker start 容器名称|容器ID
- # 重启容器 #
- docker restart 容器名称|容器ID
复制代码 4.5、中心件查抄
用于查抄安装的额中心件,是否正常。非必须操纵
4.5.1、MySQL启动乐成查抄
navicat等数据库客户端可以方便的修改用户的权限,密码等,大概使用MySQL的控制台,指令参考如下:
- # 安装了MySQL的机器 #
- docker exec -it mysql /bin/bash
- # 进入容器后 #
- mysql -uroot -p
- # 输入密码 进入MySQL的控制台,使用MySQL指令操作 #
- select 1;
复制代码 4.5.2、nacos启动乐成查抄
- curl http://<nacos_ip>:<nginx_port_exp>/nacos
复制代码 nacos不要在公网访问,避免敏感设置信息(密码等)走漏
4.5.3、nginx启动乐成查抄
4.5.4、minio启动乐成查抄
访问地点http://<minio_ip>:<minio_port_exp>,可以访问minio的网页管理。IP和端口必要申请或自行映射。
4.5.5、redis启动乐成查抄
- # 安装了mysql的机器 #
- docker exec -it redis /bin/bash
- # 进入容器后 #
- redis-cli
- # 验证密码 #
- auth <redis_password>
复制代码 4.6、应用启动
略,注意设置生产环境参数
五、一样平常简朴运维
nacos不要在公网访问,避免数据库等敏感信息(密码等)走漏
5.1、应用运行是否正常
nacos的网页管理端(http://:/nacos),检察应用注册是否正常
5.2、中心件密码修改
MySQL不要修改重启等脚本的参数密码来修改MySQL的密码
5.2.1、MySQL密码修改
示例:修改密码为1234567
- # 安装mysql的机器,进入容器 #docker exec -it mysql /bin/bash# 输入现在的密码 #mysql -uroot -p# 修改密码 #ALTER USER `root`@`%` IDENTIFIED BY '1234567';# 刷新权限 #flush privileges;# 退出容器 完成密码修改 #
复制代码 5.2.2、Redis密码修改
修改redis的重启脚本即可
5.2.3、Minio密码修改
修改重启脚本的参数MINIO_SECRET_KEY,再执行脚本即可
- docker run -p 9000:9000 -d --name minio \
- --restart=always \
- -e MINIO_ACCESS_KEY="admin" \
- -e MINIO_SECRET_KEY="123456" \
- -v /etc/localtime:/etc/localtime:ro \
- -v /data/minio/data:/data \
- -v /data/minio/config:/root/.minio minio/minio server /data
复制代码 5.2.4、nacos修改密码
nacos修改密码,不影相应用,在网页上修改即可
5.3、nginx设置文件修改
nginx设置文件custom.conf修改后必要重新加载文件才能生效,可以直接docker restart nginx,不过更推荐下述的操纵:
- # 进入nginx 容器 #docker exec -it nginx /bin/bash# j进入后,执行 nginx 测试命令 #nginx -t# 测试有错误,依据提示修改即可 ## 通过测试 重新加载配置#nginx -s reload# 退出容器 #exit
复制代码 5.4、应用步调新增设置参数
- 在nacos的设置项增长相应的参数,再重启应用
- 在Dockerfile文件中的CMD项中,新增启动参数
具体以开发职员的更新文档为准
5.5、应用更新
应用更新,设置修改等环境,保持至少一个备份,以便更新出现非常,能够快速的规复正常
六、排错指南
6.1、应用步调无法启动?
- 1、Java基础镜像是否有提前导入2、Dockerfil中关于nacos的配置是否正确,nacos配置中的关于mysql、redis等的配置是否正确
复制代码 6.2、容器无法启动?
- 1、如果可以查看日志的,查看应用运行日志判断问题2、无法查看日志,查看docker的启动错误提示
复制代码 6.3、容器no route host非常,包罗容器间,容器与宿主机之间无法http访问
- # 放行指定的端口 #firewall-cmd --zone=public --add-port=8088/tcp --permanentfirewall-cmd --reload
复制代码 6.4、启动docker的时候报错:WARNING IPv4 forwarding is disabled. Networking will not work
- # 解决方案 #vi /etc/sysctl.conf# 添加配置 #net.ipv4.ip_forward=1# 重启 #systemctl restart network# 查看是否成功 #sysctl net.ipv4.ip_forward# 如果返回为net.ipv4.ip_forward = 1 则表示成功了 #
复制代码 6.5、执行脚本时,$’\r’: command not found
- # Windows系统的文件换行使用的是\r\n,而Unix系统是\n ## 使用 vim 打开文件 #vim demo.sh# 格式转换 #:set ff=unix# 保存文件 #:wq
复制代码 七、注意点
- 安装脚本执行完成以后,不要再次执行。针对每个容器的操纵使用docker的指令即可,大概参考重启的脚本
- 应用步调运行的底子镜像为java,提前导入
- 中心件中nacos依赖于mysql,mysql正常运行是nacos运行的前提条件
- 应用步调优先启动网关lee-gateway
八、前端部署
略,自行部署即可
九、dockr 常用的底子指令
9.1、停止容器
9.2、容器启动
- # 针对停止运行了的容器 #docker start 容器名|容器ID
复制代码 9.3、容器重启
9.4、容器删除
9.5、镜像删除
9.6、删除所有镜像名为none的镜像
- docker rmi $(docker images | grep "none" | awk '{print $3}')
复制代码 9.7、获取容器/镜像的元数据
- # 可以获取容器绑定的数据卷等信息 #docker inspect 容器名|容器ID|镜像名|镜像ID
复制代码 9.8、检察容器日志
- # 查看最新(后)100行日志 #docker logs 容器名|容器ID --tail 100
复制代码 9.9、进入容器
- docker exec -it 容器名|容器ID /bin/bashdocker exec -it 容器名|容器ID /bin/sh
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |