asp.net core的Docker

# 卸载旧版本Docker(如果有)
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo //官方镜像源可能不行

# 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动Docker服务
sudo systemctl start docker

# 设置Docker开机自启
sudo systemctl enable docker

# 验证Docker是否安装成功
docker --version
# 构建Docker镜像
docker build -t your-image-name .

docker run -d -p 80:80 --name your-container-name your-image-name

  • -d:后台运行容器。

  • -p 80:80:将容器的80端口映射到主机的80端口。

  • --name:指定容器名称。

  • your-image-name:你构建的镜像名称。

    docker logs your-container-name

docker build -t myapp:v1 -f /path/to/Dockerfile .
标签:版本,功能,环境   同一个功能不同版本, docker run myapp:v1

 

示例 1:运行一个简单的容器

bash
复制
docker run myapp:v1
  • 从镜像 myapp:v1 创建并启动一个容器。

示例 2:以后台模式运行容器

bash
复制
docker run -d myapp:v1
  • -d:容器在后台运行。

示例 3:映射端口

bash
复制
docker run -p 8080:80 myapp:v1
  • -p 8080:80:将主机的 8080 端口映射到容器的 80 端口。

 

1.Docker容器作用


rm libstdc++.so.6

sudo ln -s libstdc++.so.6.0.21 libstdc++.so.6


Cannot find a valid baseurl for repo: base/7/x86_64

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"


1. ASP.NET Core 基础

  • 项目结构:了解ASP.NET Core项目的基本组成。

  • 启动配置:掌握Startup.csProgram.cs的配置。

  • 依赖注入:熟悉ASP.NET Core的依赖注入机制。

  • 中间件:了解中间件的使用和配置。

2. Docker 基础

  • Docker 概念:理解镜像、容器、Dockerfile等基本概念。

  • Docker 命令:掌握常用命令如docker builddocker rundocker-compose等。

  • Dockerfile:学会编写Dockerfile来定义镜像构建步骤。

3. ASP.NET Core 与 Docker 集成

  • Dockerfile 编写:掌握为ASP.NET Core应用编写Dockerfile。

  • 多阶段构建:了解如何使用多阶段构建优化镜像大小。

  • 环境变量:学会通过环境变量配置应用。

4. Docker Compose

  • Compose 文件:掌握docker-compose.yml的编写,用于定义多容器应用。

  • 服务依赖:了解如何配置服务依赖和网络。

5. 容器编排

  • Kubernetes:了解Kubernetes的基本概念和部署ASP.NET Core应用的方法。

  • Helm:掌握使用Helm进行Kubernetes应用部署。

6. CI/CD 集成

  • CI/CD 管道:学会将Docker集成到CI/CD工具如GitHub Actions、Azure DevOps等。

  • 镜像推送:掌握将镜像推送到Docker Hub或私有仓库的方法。

7. 调试与日志

  • 容器内调试:掌握在容器内调试ASP.NET Core应用的技巧。

  • 日志管理:了解如何配置和管理容器日志。

8. 安全

  • 镜像安全:学会扫描和加固Docker镜像。

  • 网络安全:了解容器网络的安全配置。

9. 性能优化

  • 镜像优化:掌握优化Docker镜像大小和性能的方法。

  • 应用性能:了解如何优化ASP.NET Core应用在容器中的性能。

10. 实践项目

  • 示例项目:通过实际项目练习,加深对ASP.NET Core和Docker的理解。

 

 

docker-compose管理多应用

 

容器镜像可以包含http server

浏览器验证容器


Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听

在现有镜像上创建新的镜像

 

 

docker images可以查看到httpd已经下载到本地

docker ps或者docker container ls显示容器正在运行 docker ps - a | docker container ls -a (显示所有状态容器, 包括退出的)

开发人员可以在笔记本上构建镜像并上传到Registry,然后QA人员将镜像下载到物理或虚拟机做测试,最终容器会部署到生产环境

 

docker pull 安装包

base镜像共享
最上容器层记录修改

Docker提供了两种构建镜像的方法: docker commit命令与Dockerfile构建文件

Docker默认会从build context中查找Dockerfile文件

如果我们希望在构建镜像时不使用缓存,可以在docker build命令中加上--no-cache参数

 

 镜像可以打多个标签

docker tag <image_id> myimage:tag1

上传到docker hup公共平台需要重命名镜像,用户名/镜像名
docker tag 旧名 新名:标签

docker push 新名:标签   (省略tag所有都上传,不省略只上传新增镜像)

 

 

自己的镜像上传到本地仓库是有名称规范的,只有共有docker hub是可以省略主机名:端口

docker tag jiangzheng/httpd:v1 registry.example.net:5000/jiangzheng/httpd:v1

docker push registry.example.net:5000/jiangzheng/httpd:v1

docker pull registry.example.net:5000/jiangzheng/httpd:v1

删除镜像,每次删除只删镜像tag,只有最后一个tag删除才会真正删除镜像
docker rmi jingxiang:latest

检索 docker search httped
docker images httped

 

操作docker可以用长id, 短id, 名字
docker stop 短id

 服务类容器(-d 后台),工具类容器(docker run -it 镜像名   直接运行进入容器中交互)

docker run命令实际上是docker create和docker start的组合

 

--restart  因为执行docker stop或docker kill退出,则不会自动重启

 

docker run --name "container_A" -c 1024 ubuntu docker run --name "container_B" -c 512 ubuntu    这个-c是分配cpu的使用优先级

。如果containerA处于空闲状态,这时,为了充分利用CPU资源,containerB也可以分配到全部可用的CPU

 docker删除容器的时候,可以配命令把关联的volume也删除

 

volume怎么备份

# 1. 创建临时容器挂载Volume
docker create -v your_volume:/data --name temp_container alpine
# 2. 备份到主机
docker cp temp_container:/data ./backup_folder
# 3. 恢复备份
docker cp ./backup_folder temp_container:/data
# 4. 清理临时容器
docker rm temp_container

docker run --rm -v your_volume:/volume -v $(pwd):/backup alpine \
tar cvf /backup/backup.tar /volume


  1. docker run
    Docker 命令,用于创建并运行一个新容器

  2. --rm

    • 容器退出后自动删除

    • 避免留下无用的容器

  3. -v your_volume:/volume

    • 将名为 your_volume 的 Docker Volume 挂载到容器内的 /volume 目录

    • 这是要备份的数据源

  4. -v $(pwd):/backup

    • 将当前主机工作目录 ($(pwd)) 挂载到容器内的 /backup 目录

    • 这是备份文件的存储位置

  5. alpine

    • 使用轻量级的 Alpine Linux 镜像作为基础

    • 因为它体积小,包含基本工具

  6. tar cvf /backup/backup.tar /volume

    • 在容器内执行的命令

    • 使用 tar 工具创建归档文件:

      • c - 创建新归档

      • v - 显示详细输出

      • f - 指定归档文件名

      • /backup/backup.tar - 归档文件路径(映射到主机的当前目录)

      • /volume - 要备份的目录(即挂载的 Volume)


执行流程


  1. Docker 启动一个临时的 Alpine Linux 容器

  2. 将指定的 Volume 挂载到容器的 /volume 目录

  3. 将主机的当前目录挂载到容器的 /backup 目录

  4. 在容器内执行 tar 命令,将 /volume 的内容打包到 /backup/backup.tar

  5. 由于 /backup 映射到主机当前目录,备份文件实际保存在主机上

  6. 命令执行完毕后,容器自动删除(--rm 选项)


实际效果


  • 在主机当前目录生成 backup.tar 文件

  • 该文件包含 Volume 中的所有内容

  • 不改变原始 Volume 数据

  • 完成后自动清理临时容器


恢复备份的对应命令


要恢复这个备份,可以使用类似的命令结构:


bash
复制
docker run --rm -v your_volume:/volume -v $(pwd):/backup alpine \
  tar xvf /backup/backup.tar -C /volume --strip 1

其中:


  • x 表示解压

  • -C /volume 指定解压到 Volume 挂载点

  • --strip 1 去除 tar 文件中的顶层目录(如果有)

 

 

docker exec -it <container> bash 是 Docker 中一个常用的命令,用于进入正在运行的容器内部并启动一个交互式 Bash shell

docker network inspect bridge看一下bridge网络的配置信息

posted @ 2025-03-26 09:11  爱晒太阳的懒猫。。  阅读(46)  评论(0)    收藏  举报