离线服务器安装部署docker项目

打印 上一主题 下一主题

主题 865|帖子 865|积分 2595

本文环境: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呆板上执行
  1. # 全部回车直至结束 #
  2. ssh-keygen -t rsa
复制代码
  1. # 中间需要输入 192.168.133.177 的 密码,正确输入即可 #
  2. ssh-copy-id -i /root/.ssh/id_rsa 192.168.133.177
复制代码
  1. # 测试  #
  2. ssh 192.168.133.177
  3. # 输入  ip addr 查看登陆机器的IP #
  4. # 退出ssh #
  5. exit
复制代码
按照雷同步骤,设置免密访问 192.168.133.178。
二、Docker安装

2.1、离线环境

2.1.1 rpm安装

获取rpm包的方法,在可以联网的最小化安装的centos服务器上执行如下:
  1. yum install --downloadonly --downloaddir=./ docker-ce-18.09.3-3.el7
复制代码
该指令下载离线依赖包于当前目录下。拷贝离线包到必要安装docker-ce-18.09.3-3.el7的服务器上,同级目录下执行脚本,脚本内容如下:
   脚本内DOCKER_DATA_DIR 的值按照现实环境修改,保障该目录的磁盘空间充足使用
  1. #!/bin/sh
  2. # docker数据存放的目录
  3. # 依据实际的情况修改,保障该目录的磁盘空间足够使用
  4. DOCKER_DATA_DIR=/data
  5. echo "安装docker"
  6. rpm -Uvh package/*.rpm --nodeps --force
  7. rpm -Uvh container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm
  8. rpm -Uvh docker-ce-18.09.3-3.el7.x86_64.rpm
  9. echo "创建配置文件"
  10. mkdir -p /etc/docker
  11. cat > /etc/docker/daemon.json << EOF
  12. {
  13.     "graph": "${DOCKER_DATA_DIR}/docker",
  14.     "log-driver": "json-file",
  15.     "log-opts": {
  16.         "max-size": "100m"
  17.     },
  18.     "storage-driver": "overlay2"
  19. }
  20. EOF
  21. echo  "启动"
  22. systemctl daemon-reload
  23. systemctl start docker
  24. echo  "开机启动"
  25. systemctl enable docker
  26. echo "docker info"
  27. docker info
复制代码
卸载指令
  1. 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设置为一个磁盘空间较大的目录
  1. #!/bin/sh
  2. set -e
  3. # 依据实际的情况修改,保障该目录的磁盘空间足够使用
  4. DOCKER_DATA_DIR=/data
  5. # 依据实际的情况修改,修改为实际上的下载的压缩包的名称
  6. DOCKER_BIN_FILE_NAME=docker-18.09.3.tgz
  7. echo "解压文件"
  8. tar zxvf  ${DOCKER_BIN_FILE_NAME}
  9. mv docker/*  /usr/bin
  10. echo "sysyemd管理"
  11. cat > /usr/lib/systemd/system/docker.service << EOF
  12. [Unit]
  13. Description=Docker Application Container Engine
  14. Documentation=https://docs.docker.com
  15. After=network-online.target firewalld.service
  16. Wants=network-online.target
  17. [Service]
  18. Type=notify
  19. ExecStart=/usr/bin/dockerd
  20. ExecReload=/bin/kill -s HUP \$MAINPID
  21. LimitNOFILE=infinity
  22. LimitNPROC=infinity
  23. LimitCORE=infinity
  24. TimeoutStartSec=0
  25. Delegate=yes
  26. KillMode=process
  27. Restart=on-failure
  28. StartLimitBurst=3
  29. StartLimitInterval=60s
  30. [Install]
  31. WantedBy=multi-user.target
  32. EOF
  33. # 授权
  34. chmod +x /usr/lib/systemd/system/docker.service
  35. echo "创建配置文件"
  36. mkdir /etc/docker
  37. cat > /etc/docker/daemon.json << EOF
  38. {
  39.     "graph": "${DOCKER_DATA_DIR}/docker",
  40.     "log-driver": "json-file",
  41.     "log-opts": {
  42.         "max-size": "100m"
  43.     },
  44.     "storage-driver": "overlay2"
  45. }
  46. EOF
  47. echo  "启动"
  48. systemctl daemon-reload
  49. systemctl start docker
  50. echo  "开机启动"
  51. systemctl enable docker
  52. echo "docker info"
  53. docker info
复制代码
二进制安装卸载
  1. # 停止docker #
  2. systemctl stop docker
  3. # 删除  #
  4. rm -f  /usr/bin/docker*
  5. rm -f  /usr/bin/containerd
  6. rm -f  /usr/bin/containerd-shim
  7. rm -f  /usr/bin/ctr
  8. rm -f  /usr/bin/runc
  9. rm -f  /usr/lib/systemd/system/docker.service
复制代码
2.2、互联网环境

参考:Alibaba开源镜像网站,docker-ce项
三、镜像管理

3.1、内网

   主机上必要安装哪个组件就导入对应的镜像。
  如安装nginx必要导入linux的镜像。
  如必要运行springboot应用的服务器上必要导入java镜像。
  docker save : 将指定镜像生存成 tar 归档文件
  1. docker save -o mysql.tar mysql:5.7.24
复制代码
docker load : 导入使用 docker save 命令导出的镜像,常用的镜像 java、nginx、mysql、minio(文件存储)、redis、nacos 等
  1. docker load -i mysql.tar
复制代码
3.2、互联网

3.2.1、镜像加速

您可以通过修改设置文件/etc/docker/daemon.json来使用加速器
   注意下述指令针对完全没有设置过/etc/docker/daemon.json的环境,若已经设置过,自己在原底子上进行补充即可。
  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4.   "registry-mirrors": [
  5.     "https://l4bejypu.mirror.aliyuncs.com"
  6.   ]
  7. }
  8. EOF
  9. sudo systemctl daemon-reload
  10. sudo systemctl restart docker
复制代码
3.2.2、拉取镜像

以nginx为例
  1. docker pull nginx:latest
复制代码
四、中心件、应用步调安装


4.1、镜像导入

指令参考如下:
  
  1. # 导入nginx镜像 #
  2. docker load -i nginx.tar
复制代码
4.2、重启脚本

  1. # 停止容器 #
  2. docker stop 容器名称|容器ID
  3. # 运行容器 #
  4. docker start 容器名称|容器ID
  5. # 重启容器 #
  6. docker restart 容器名称|容器ID
复制代码
4.5、中心件查抄

   用于查抄安装的额中心件,是否正常。非必须操纵
  4.5.1、MySQL启动乐成查抄

navicat等数据库客户端可以方便的修改用户的权限,密码等,大概使用MySQL的控制台,指令参考如下:
  1. # 安装了MySQL的机器 #
  2. docker exec -it mysql /bin/bash
  3. # 进入容器后 #
  4. mysql -uroot -p
  5. # 输入密码 进入MySQL的控制台,使用MySQL指令操作 #
  6. select 1;
复制代码
4.5.2、nacos启动乐成查抄

  1. curl http://<nacos_ip>:<nginx_port_exp>/nacos
复制代码
  nacos不要在公网访问,避免敏感设置信息(密码等)走漏  
  4.5.3、nginx启动乐成查抄

  1. ps -aux | grep nginx
复制代码
4.5.4、minio启动乐成查抄

访问地点http://<minio_ip>:<minio_port_exp>,可以访问minio的网页管理。IP和端口必要申请或自行映射。
4.5.5、redis启动乐成查抄

  1. # 安装了mysql的机器 #
  2. docker exec -it redis /bin/bash
  3. # 进入容器后 #
  4. redis-cli
  5. # 验证密码 #
  6. auth  <redis_password>
复制代码
4.6、应用启动 

        略,注意设置生产环境参数

五、一样平常简朴运维

   nacos不要在公网访问,避免数据库等敏感信息(密码等)走漏
  5.1、应用运行是否正常

nacos的网页管理端(http://:/nacos),检察应用注册是否正常

5.2、中心件密码修改

   ​ MySQL不要修改重启等脚本的参数密码来修改MySQL的密码
  5.2.1、MySQL密码修改

示例:修改密码为1234567
  1. # 安装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,再执行脚本即可
  1. docker run -p 9000:9000 -d --name minio \
  2. --restart=always \
  3. -e MINIO_ACCESS_KEY="admin" \
  4. -e MINIO_SECRET_KEY="123456" \
  5. -v /etc/localtime:/etc/localtime:ro \
  6. -v /data/minio/data:/data \
  7. -v /data/minio/config:/root/.minio minio/minio server /data
复制代码
5.2.4、nacos修改密码

nacos修改密码,不影相应用,在网页上修改即可
5.3、nginx设置文件修改

nginx设置文件custom.conf修改后必要重新加载文件才能生效,可以直接docker restart nginx,不过更推荐下述的操纵:
  1. # 进入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. 1、Java基础镜像是否有提前导入2、Dockerfil中关于nacos的配置是否正确,nacos配置中的关于mysql、redis等的配置是否正确
复制代码
6.2、容器无法启动?

  1. 1、如果可以查看日志的,查看应用运行日志判断问题2、无法查看日志,查看docker的启动错误提示
复制代码
6.3、容器no route host非常,包罗容器间,容器与宿主机之间无法http访问

  1. # 放行指定的端口 #firewall-cmd --zone=public --add-port=8088/tcp --permanentfirewall-cmd --reload
复制代码
6.4、启动docker的时候报错:WARNING IPv4 forwarding is disabled. Networking will not work

  1. # 解决方案 #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

  1. # Windows系统的文件换行使用的是\r\n,而Unix系统是\n ## 使用 vim 打开文件  #vim demo.sh# 格式转换 #:set ff=unix# 保存文件 #:wq
复制代码
七、注意点



  • 安装脚本执行完成以后,不要再次执行。针对每个容器的操纵使用docker的指令即可,大概参考重启的脚本
  • 应用步调运行的底子镜像为java,提前导入
  • 中心件中nacos依赖于mysql,mysql正常运行是nacos运行的前提条件
  • 应用步调优先启动网关lee-gateway
 八、前端部署

        略,自行部署即可
九、dockr 常用的底子指令

9.1、停止容器

  1. docker stop 容器名|容器ID
复制代码
9.2、容器启动

  1. # 针对停止运行了的容器 #docker start 容器名|容器ID
复制代码
9.3、容器重启

  1. docker restart 容器名|容器ID
复制代码
9.4、容器删除

  1. docker rm 容器名|容器ID
复制代码
9.5、镜像删除

  1. docker rmi 镜像名|镜像ID
复制代码
9.6、删除所有镜像名为none的镜像

  1. docker rmi $(docker images | grep "none" | awk '{print $3}')
复制代码
9.7、获取容器/镜像的元数据

  1. # 可以获取容器绑定的数据卷等信息 #docker inspect  容器名|容器ID|镜像名|镜像ID
复制代码
9.8、检察容器日志

  1. # 查看最新(后)100行日志 #docker logs 容器名|容器ID --tail 100
复制代码
9.9、进入容器

  1. docker exec -it 容器名|容器ID  /bin/bashdocker exec -it 容器名|容器ID  /bin/sh
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表