当前位置: 首页 > wzjs >正文

数商云网络西宁网站seo价格

数商云网络,西宁网站seo价格,中文域名到期对网站的影响,营销网络电话软件Docker 技术详解 一、概述 Docker官网:https://docs.docker.com/ 菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html 1.1 什么是Docker? Docker 是一个开源的容器化平台,它允许开发者将应用程序和其依赖项打包到…

Docker 技术详解

一、概述

Docker官网:https://docs.docker.com/

菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html

1.1 什么是Docker?

Docker 是一个开源的容器化平台,它允许开发者将应用程序和其依赖项打包到一个称为容器的标准化单元中。容器可以在任何支持 Docker 的环境中运行,确保了应用程序在不同环境中的一致性。

1.2 Docker的发展历程

  • 2013年:Docker项目启动
  • 2014年:Docker 1.0发布
  • 2015年:Docker Compose发布
  • 2016年:Docker Swarm发布
  • 2017年:Docker企业版发布
  • 2018年:Docker Desktop发布
  • 2019年:Docker Desktop for Windows 2.0发布
  • 2020年:Docker Desktop for Mac with Apple Silicon发布
  • 2021年:Docker Compose V2发布
  • 2022年:Docker Desktop 4.0发布

1.3 Docker的优势

  • 环境一致性:确保开发、测试、生产环境的一致性
  • 快速部署:容器化应用可以快速部署和扩展
  • 资源隔离:每个容器都有独立的资源空间
  • 轻量级:相比虚拟机,容器更加轻量级
  • 可移植性:一次构建,到处运行

1.4 Docker的应用场景

  • 微服务架构
  • 持续集成/持续部署(CI/CD)
  • 开发环境标准化
  • 应用程序隔离
  • 快速原型开发

二、安装与配置

2.1 下载地址

官方下载地址
  • Docker Desktop for Windows: https://www.docker.com/products/docker-desktop
  • Docker Desktop for Mac: https://www.docker.com/products/docker-desktop
  • Docker Engine for Linux: https://docs.docker.com/engine/install/
阿里云镜像下载地址
  • Docker CE 镜像:https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/
  • Docker Desktop for Windows:https://mirrors.aliyun.com/docker-toolbox/
  • Docker Desktop for Mac:https://mirrors.aliyun.com/docker-toolbox/

2.2 镜像加速器配置

阿里云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
腾讯云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
网易云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.3 Windows安装

  1. 下载Docker Desktop for Windows
  2. 运行安装程序
  3. 启用WSL2(Windows Subsystem for Linux)
  4. 配置系统要求:
    • Windows 10/11 专业版、企业版或教育版
    • 启用Hyper-V和Windows容器功能
    • 至少4GB RAM

2.4 Linux安装

# Ubuntu安装
sudo apt-get update
sudo apt-get install docker.io# CentOS安装
sudo yum install docker-ce docker-ce-cli containerd.io

2.5 配置Docker

# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker# 配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker命令

3.1 基础命令

# 查看Docker版本
docker version# 查看Docker信息
docker info# 查看帮助
docker --help

3.2 镜像命令

# 查看本地镜像
docker images# 搜索镜像
docker search nginx# 拉取镜像
docker pull nginx:latest# 删除镜像
docker rmi -f 镜像ID

3.3 容器命令

# 运行容器
docker run [参数] 镜像名# 常用参数
-d          # 后台运行
-it         # 交互式运行
-p          # 端口映射
--name      # 容器命名
-v          # 数据卷挂载
--network   # 网络设置

3.4 高级命令

# 查看容器资源使用情况
docker stats# 查看容器日志
docker logs -f 容器ID# 进入容器内部
docker exec -it 容器ID /bin/bash# 查看容器详细信息
docker inspect 容器ID# 查看容器端口映射
docker port 容器ID# 查看容器变更
docker diff 容器ID# 复制文件到容器
docker cp 本地文件路径 容器ID:容器内路径# 从容器复制文件
docker cp 容器ID:容器内路径 本地文件路径

3.5 批量操作命令

# 停止所有容器
docker stop $(docker ps -aq)# 删除所有容器
docker rm $(docker ps -aq)# 删除所有镜像
docker rmi $(docker images -q)# 清理未使用的数据卷
docker volume prune# 清理未使用的网络
docker network prune# 清理所有未使用的资源
docker system prune -a

四、Docker镜像

4.1 镜像原理

  • 镜像是一个轻量级、可执行的独立软件包
  • 包含运行某个软件所需的所有内容
  • 采用分层存储架构

4.2 镜像操作

# 构建镜像
docker build -t 镜像名:标签 .# 推送镜像
docker push 镜像名:标签# 导入导出镜像
docker save -o 文件名.tar 镜像名
docker load -i 文件名.tar

五、容器数据卷

5.1 数据卷概念

  • 数据卷是宿主机中的一个目录或文件
  • 容器数据卷可以实现数据持久化
  • 支持容器间数据共享

5.2 数据卷操作

# 创建数据卷
docker volume create 数据卷名# 挂载数据卷
docker run -v 数据卷名:容器内路径 镜像名# 查看数据卷
docker volume ls

六、DockerFile

6.1 DockerFile指令

# 基础镜像
FROM 镜像名:标签# 维护者信息
MAINTAINER 作者名# 构建参数
ARG 参数名=默认值# 环境变量
ENV 环境变量名=值# 工作目录
WORKDIR 路径# 复制文件
COPY 源路径 目标路径# 添加文件
ADD 源路径 目标路径# 执行命令
RUN 命令# 暴露端口
EXPOSE 端口号# 启动命令
CMD ["命令", "参数"]

6.2 构建过程

  1. 编写Dockerfile
  2. 构建镜像:docker build -t 镜像名 .
  3. 运行容器:docker run -d 镜像名

七、Docker网络原理

7.1 网络模式

  • bridge:桥接模式(默认)
  • host:主机模式
  • none:无网络模式
  • container:容器模式

7.2 网络操作

# 创建网络
docker network create 网络名# 查看网络
docker network ls# 连接容器到网络
docker network connect 网络名 容器名

八、IDEA整合Docker

8.1 安装插件

  1. 打开IDEA设置
  2. 搜索"Docker"
  3. 安装Docker插件

8.2 配置Docker

  1. 配置Docker连接
  2. 设置Docker主机地址
  3. 配置证书路径(如需要)

8.3 使用Docker

  • 构建镜像
  • 运行容器
  • 管理容器
  • 查看日志

九、Docker Compose

9.1 基本概念

  • 用于定义和运行多容器Docker应用
  • 使用YAML文件配置应用服务
  • 一键部署多个容器

9.2 常用命令

# 启动服务
docker-compose up -d# 停止服务
docker-compose down# 查看服务状态
docker-compose ps# 查看服务日志
docker-compose logs

十、Docker Swarm

10.1 集群管理

  • 创建Swarm集群
  • 添加节点
  • 部署服务
  • 管理集群

10.2 常用命令

# 初始化Swarm
docker swarm init# 加入集群
docker swarm join# 部署服务
docker service create# 查看服务
docker service ls

十一、CI/CD Jenkins

11.1 Jenkins安装

  1. 拉取Jenkins镜像
# 拉取Jenkins LTS版本镜像
docker pull jenkins/jenkins:lts# 创建Jenkins数据卷
docker volume create jenkins_home# 运行Jenkins容器
docker run -d \--name jenkins \-p 8080:8080 \-p 50000:50000 \-v jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \jenkins/jenkins:lts
  1. 配置Jenkins
  • 访问 http://localhost:8080
  • 获取初始管理员密码:
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  • 安装推荐插件
  • 创建管理员账户
  • 配置Jenkins URL

11.2 配置Docker集成

  1. 安装Docker插件
  • 进入 Manage Jenkins > Manage Plugins
  • 安装以下插件:
    • Docker Pipeline
    • Docker plugin
    • Docker API Plugin
    • docker-build-step
  1. 配置Docker凭据
  • 进入 Manage Jenkins > Manage Credentials
  • 添加Docker凭据:
    • 类型选择:Username with password
    • 添加Docker Hub账号信息
    • 或添加私有镜像仓库凭据
  1. 创建Docker构建任务
// Jenkinsfile示例
pipeline {agent anyenvironment {DOCKER_IMAGE = 'your-app'DOCKER_TAG = 'latest'}stages {stage('Checkout') {steps {git 'your-git-repo-url'}}stage('Build') {steps {sh 'mvn clean package'}}stage('Docker Build') {steps {script {docker.build("${DOCKER_IMAGE}:${DOCKER_TAG}")}}}stage('Docker Push') {steps {script {docker.withRegistry('https://registry.example.com', 'registry-credentials') {docker.image("${DOCKER_IMAGE}:${DOCKER_TAG}").push()}}}}stage('Deploy') {steps {sh """docker pull ${DOCKER_IMAGE}:${DOCKER_TAG}docker-compose up -d"""}}}
}

11.3 自动化部署流程

  1. 代码提交触发构建
  • 配置Git Webhook
    # 在Git仓库中配置Webhook
    - URL: http://your-jenkins-url/github-webhook/
    - Content type: application/json
    - 选择触发事件:Push events
    
  • 设置构建触发器
    // Jenkinsfile中的触发器配置
    triggers {githubPush()// 或使用cron表达式定时触发cron('H/15 * * * *')
    }
    
  • 配置分支策略
    // 多分支流水线配置
    pipeline {agent nonestages {stage('Build') {when {branch 'main'  // 主分支}steps {// 构建步骤}}stage('Test') {when {branch 'develop'  // 开发分支}steps {// 测试步骤}}}
    }
    
  1. 构建Docker镜像
  • 编写Dockerfile
    # 多阶段构建示例
    FROM maven:3.8.4-openjdk-11 AS builder
    WORKDIR /app
    COPY pom.xml .
    COPY src ./src
    RUN mvn clean package -DskipTestsFROM openjdk:11-jre-slim
    WORKDIR /app
    COPY --from=builder /app/target/*.jar app.jar
    EXPOSE 8080
    CMD ["java", "-jar", "app.jar"]
    
  • 配置构建参数
    // Jenkinsfile中的参数配置
    parameters {string(name: 'VERSION', defaultValue: '1.0.0', description: '版本号')choice(name: 'ENVIRONMENT', choices: ['dev', 'test', 'prod'], description: '部署环境')booleanParam(name: 'SKIP_TESTS', defaultValue: false, description: '是否跳过测试')
    }
    
  • 设置构建环境
    // Jenkinsfile中的环境配置
    environment {DOCKER_BUILDKIT = 1MAVEN_OPTS = '-Xmx2048m'JAVA_HOME = tool 'JDK11'
    }
    
  1. 推送到镜像仓库
  • 配置镜像仓库地址
    // Jenkinsfile中的仓库配置
    environment {REGISTRY = 'registry.example.com'REGISTRY_CREDENTIALS = 'registry-credentials'
    }
    
  • 设置镜像标签策略
    // Jenkinsfile中的标签策略
    script {def imageTag = "${env.BUILD_NUMBER}-${env.GIT_COMMIT.take(7)}"docker.build("${REGISTRY}/${DOCKER_IMAGE}:${imageTag}")docker.tag("${REGISTRY}/${DOCKER_IMAGE}:${imageTag}", "${REGISTRY}/${DOCKER_IMAGE}:latest")
    }
    
  • 配置推送权限
    # 配置Docker登录
    docker login registry.example.com -u username -p password# 或使用Jenkins凭据
    withCredentials([usernamePassword(credentialsId: 'registry-credentials', usernameVariable: 'DOCKER_USER', passwordVariable: 'DOCKER_PASSWORD')]) {sh "docker login ${REGISTRY} -u ${DOCKER_USER} -p ${DOCKER_PASSWORD}"
    }
    
  1. 部署到目标服务器
  • 配置部署环境
    # docker-compose.yml示例
    version: '3.8'
    services:app:image: ${DOCKER_IMAGE}:${DOCKER_TAG}ports:- "8080:8080"environment:- SPRING_PROFILES_ACTIVE=${ENVIRONMENT}- DB_HOST=dbdepends_on:- dbdb:image: mysql:8.0environment:- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}volumes:- db_data:/var/lib/mysql
    
  • 设置部署策略
    // Jenkinsfile中的部署策略
    stage('Deploy') {when {branch 'main'  // 仅主分支部署}steps {script {// 滚动更新策略sh """docker-compose pulldocker-compose up -d --no-deps --build app"""}}
    }
    
  • 配置健康检查
    # docker-compose.yml中的健康检查
    services:app:healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]interval: 30stimeout: 10sretries: 3
    

11.4 最佳实践

  1. 安全性配置
  • 使用Docker安全扫描
    # 使用Trivy进行安全扫描
    docker run aquasec/trivy image your-image:tag# 使用Snyk进行安全扫描
    snyk test --docker your-image:tag
    
  • 配置镜像签名
    # 使用Docker Content Trust
    export DOCKER_CONTENT_TRUST=1
    docker push your-image:tag
    
  • 实施访问控制
    # 配置Docker访问控制
    {"authorization-plugins": ["authz-broker"],"tls": true,"tlscacert": "/path/to/ca.pem","tlscert": "/path/to/server-cert.pem","tlskey": "/path/to/server-key.pem"
    }
    
  1. 性能优化
  • 使用多阶段构建
    # 优化后的多阶段构建
    FROM node:16 AS builder
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci
    COPY . .
    RUN npm run buildFROM nginx:alpine
    COPY --from=builder /app/dist /usr/share/nginx/html
    COPY nginx.conf /etc/nginx/conf.d/default.conf
    
  • 优化镜像大小
    # 使用.dockerignore排除文件
    .git
    node_modules
    npm-debug.log
    Dockerfile
    .dockerignore
    
  • 配置缓存策略
    # docker-compose.yml中的缓存配置
    services:app:build:cache_from:- your-image:latestcache_to:- type=inline
    
  1. 监控告警
  • 配置构建通知
    // Jenkinsfile中的通知配置
    post {success {emailext body: '构建成功!', subject: '构建通知', to: 'team@example.com'}failure {emailext body: '构建失败!', subject: '构建失败通知', to: 'team@example.com'}
    }
    
  • 设置部署状态监控
    # Prometheus监控配置
    metrics:- name: container_cpu_usagetype: gaugehelp: "Container CPU usage"- name: container_memory_usagetype: gaugehelp: "Container memory usage"
    
  • 配置错误告警
    // Jenkinsfile中的错误处理
    try {sh 'docker-compose up -d'
    } catch (Exception e) {currentBuild.result = 'FAILURE'error "部署失败: ${e.message}"
    }
    
  1. 备份策略
  • 定期备份Jenkins配置
    # Jenkins配置备份脚本
    #!/bin/bash
    BACKUP_DIR="/backup/jenkins"
    DATE=$(date +%Y%m%d)# 备份Jenkins配置
    tar -czf ${BACKUP_DIR}/jenkins_config_${DATE}.tar.gz /var/jenkins_home/# 保留最近30天的备份
    find ${BACKUP_DIR} -name "jenkins_config_*.tar.gz" -mtime +30 -delete
    
  • 备份Docker镜像
    # Docker镜像备份脚本
    #!/bin/bash
    BACKUP_DIR="/backup/docker"
    DATE=$(date +%Y%m%d)# 备份所有镜像
    docker images | grep -v "REPOSITORY" | awk '{print $1":"$2}' | while read image; dodocker save -o ${BACKUP_DIR}/${image//\//_}_${DATE}.tar $image
    done
    
  • 配置数据恢复方案
    # 数据恢复脚本
    #!/bin/bash
    BACKUP_FILE=$1# 恢复Jenkins配置
    tar -xzf ${BACKUP_FILE} -C /var/jenkins_home/# 重启Jenkins服务
    docker restart jenkins
    

十二、故障排查与常见问题

12.1 常见问题解决方案

  1. 容器无法启动
# 查看容器日志
docker logs 容器ID# 检查容器状态
docker inspect 容器ID# 检查端口占用
netstat -tulpn | grep 端口号# 检查容器资源限制
docker stats 容器ID
  1. 镜像构建失败
# 查看构建日志
docker build -t 镜像名 . --progress=plain# 清理构建缓存
docker builder prune# 检查Dockerfile语法
docker build -t 镜像名 . --no-cache
  1. 网络连接问题
# 检查网络配置
docker network inspect 网络名# 检查DNS配置
docker run --rm busybox nslookup 域名# 检查防火墙规则
iptables -L

12.2 性能优化建议

  1. 容器资源限制
# 限制CPU使用
docker run --cpus=2 镜像名# 限制内存使用
docker run --memory=512m 镜像名# 限制IO
docker run --device-read-bps=/dev/sda:1mb 镜像名
  1. 存储优化
# 使用数据卷
docker run -v 数据卷名:容器内路径 镜像名# 使用绑定挂载
docker run -v 本地路径:容器内路径 镜像名# 使用tmpfs
docker run --tmpfs /tmp 镜像名

十三、Docker与Kubernetes集成

13.1 基本概念

  • Pod:Kubernetes中最小的部署单元
  • Service:服务发现和负载均衡
  • Deployment:声明式更新
  • ConfigMap:配置管理
  • Secret:密钥管理

13.2 部署示例

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: my-app
spec:replicas: 3selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-appimage: your-image:tagports:- containerPort: 8080resources:limits:cpu: "1"memory: "512Mi"requests:cpu: "500m"memory: "256Mi"

13.3 服务配置

# service.yaml
apiVersion: v1
kind: Service
metadata:name: my-app-service
spec:selector:app: my-appports:- port: 80targetPort: 8080type: LoadBalancer

13.4 配置管理

# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: my-app-config
data:config.json: |{"database": {"host": "db-service","port": 3306}}

参考资料

  • Docker 官方文档
  • Docker Hub
  • Docker Compose 文档
  • Jenkins 官方文档

文章转载自:

http://9jOFqVdm.tdwjj.cn
http://TglN68Yp.tdwjj.cn
http://80YYBBZn.tdwjj.cn
http://IA9CQHPA.tdwjj.cn
http://kH9U1DTS.tdwjj.cn
http://QXPLfd70.tdwjj.cn
http://xmpBUtQE.tdwjj.cn
http://CfEb1PEG.tdwjj.cn
http://LE4Kcexh.tdwjj.cn
http://JKZ1AVKi.tdwjj.cn
http://x4G7lEji.tdwjj.cn
http://SoUqcCBz.tdwjj.cn
http://7qAni2cF.tdwjj.cn
http://9W2WchWu.tdwjj.cn
http://AAtDP66a.tdwjj.cn
http://iV4PsK1Z.tdwjj.cn
http://5DcAuuBD.tdwjj.cn
http://cmqGvpX0.tdwjj.cn
http://lLpzFypy.tdwjj.cn
http://XZyMhgJP.tdwjj.cn
http://1NlQFCPo.tdwjj.cn
http://VKmx1XaE.tdwjj.cn
http://AFYwCreU.tdwjj.cn
http://uYF0ZE2d.tdwjj.cn
http://Df4usFbo.tdwjj.cn
http://AlshJ726.tdwjj.cn
http://bimOUpzp.tdwjj.cn
http://MboREKhG.tdwjj.cn
http://zRQiHFcV.tdwjj.cn
http://j6SBKKRQ.tdwjj.cn
http://www.dtcms.com/wzjs/608133.html

相关文章:

  • 网站制作公司哪家专业摄影网站哪个最好
  • 修改WordPress网站网页设计100个方法
  • 宣城市建设银行网站首页wordpress求助
  • 广州网站模块建设简述制作网站的步骤和过程
  • 网站建设价格是哪些方面决定的做网站编辑心得
  • 做网站建设平台网站建设 郑州
  • wordpress revolution slider网站优化怎么做ppt
  • 网站 方案新手做网站视频教程
  • 个人网站备案 服务内容怎么写上海装饰公司10排名
  • 建设个人网站详细点做网站和做网店哪个好
  • 成都网站建设 四川冠辰科技响应式网站设计尺寸
  • 合肥官方网站优化费用有没有好的ppt网站做参考的
  • 响应式制作网站建设南头专业英文网站建设公司
  • 沈阳开发网站新闻发布平台
  • 网站开发转码手机荆门网站制作
  • 2017企业网站建设方案做个网站页面多钱
  • 求网站建设详细过程加盟凡科建站
  • 简洁大方的网站建个电子商务网站多少钱
  • 如何查询网站点击率有网站前台
  • 紫金网站制作ps软件下载电脑版要钱吗
  • 做网站编辑工作累吗织梦 蝉知 wordpress
  • 免费建站宝盒长沙工商注册流程
  • 网站建设视频教程免费下载怎么才能在百度上做网站推广
  • 网站怎么做直播常德网站建设详细策划
  • 网站开发的基本技术路线360网站推广怎么做
  • 快站免费网站建设哪家好国外图片网站源码
  • 互联网网站模版收费的网站如何免费
  • 网站导出链接查询wordpress文章调用标签
  • 网网站站建建站站企业网站建设问卷
  • 梅河口网站建设给企业做网站收入