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:运行一个简单的容器
docker run myapp:v1
-
从镜像
myapp:v1创建并启动一个容器。
示例 2:以后台模式运行容器
docker run -d myapp:v1
-
-d:容器在后台运行。
示例 3:映射端口
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.cs和Program.cs的配置。 -
依赖注入:熟悉ASP.NET Core的依赖注入机制。
-
中间件:了解中间件的使用和配置。
2. Docker 基础
-
Docker 概念:理解镜像、容器、Dockerfile等基本概念。
-
Docker 命令:掌握常用命令如
docker build、docker run、docker-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
-
docker run
Docker 命令,用于创建并运行一个新容器 -
--rm-
容器退出后自动删除
-
避免留下无用的容器
-
-
-v your_volume:/volume-
将名为
your_volume的 Docker Volume 挂载到容器内的/volume目录 -
这是要备份的数据源
-
-
-v $(pwd):/backup-
将当前主机工作目录 (
$(pwd)) 挂载到容器内的/backup目录 -
这是备份文件的存储位置
-
-
alpine-
使用轻量级的 Alpine Linux 镜像作为基础
-
因为它体积小,包含基本工具
-
-
tar cvf /backup/backup.tar /volume-
在容器内执行的命令
-
使用
tar工具创建归档文件:-
c- 创建新归档 -
v- 显示详细输出 -
f- 指定归档文件名 -
/backup/backup.tar- 归档文件路径(映射到主机的当前目录) -
/volume- 要备份的目录(即挂载的 Volume)
-
-
执行流程
-
Docker 启动一个临时的 Alpine Linux 容器
-
将指定的 Volume 挂载到容器的
/volume目录 -
将主机的当前目录挂载到容器的
/backup目录 -
在容器内执行
tar命令,将/volume的内容打包到/backup/backup.tar -
由于
/backup映射到主机当前目录,备份文件实际保存在主机上 -
命令执行完毕后,容器自动删除(
--rm选项)
实际效果
-
在主机当前目录生成
backup.tar文件 -
该文件包含 Volume 中的所有内容
-
不改变原始 Volume 数据
-
完成后自动清理临时容器
恢复备份的对应命令
要恢复这个备份,可以使用类似的命令结构:
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网络的配置信息

浙公网安备 33010602011771号