Docker build tag login push save load + kubectl命令
微软Docker仓库镜像源
- FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
- FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
私有Docker仓库镜像源
- FROM docker.***.net/dotnet/core/aspnet:3.1 AS base
- FROM docker.***.net/dotnet/core/sdk:3.1 AS build
.net5的docker镜像源地址:
https://hub.docker.com/_/microsoft-dotnet-aspnet/
https://hub.docker.com/_/microsoft-dotnet-sdk/
本地开发环境生成Docker镜像
# docker build -f ./MeShop.View.SSO/Dockerfile -t meshop.view.sso . #创建镜像文件
# docker build -f ./MeShop.View.API/Dockerfile -t meshop.view.api . #创建镜像文件
本地开发环境运行Docker镜像,-d 参数可加可不加,--rm 与 -d 参数不兼容
# docker run --rm --name meshop.sso -p 9999:9999 meshop.view.sso -it /bin/bash # docker run --rm --name meshop.api -p 7777:7777 meshop.view.api -it /bin/bash # docker ps #查看本机正在运行的Docker容器 # docker ps -a #查看本机所有的Docker容器
本地Docker镜像推到私有Docker仓库
# docker tag meshop.view.sso private-docker.tidebuy.net/meshop.view.sso #重命名镜像名 # docker tag meshop.view.api private-docker.tidebuy.net/meshop.view.api #重命名镜像名 # docker login private-docker.tidebuy.net -u rancher -p rancher --password-stdin #登录私有仓 # docker push private-docker.tidebuy.net/meshop.view.sso #推到私有仓 # docker push private-docker.tidebuy.net/meshop.view.api #推到私有仓
将本地Docker镜像里面的镜像保存到磁盘文件、从磁盘文件加载进本地Docker镜像里面
# docker save -o ./meshop.view.sso.tar meshop.view.sso:latest #保存image到本地,格式tar # docker load --input meshop.view.sso.tar #将tar文件装入image里 # docker save -o ./meshop.view.api.tar meshop.view.api:latest #保存image到本地,格式tar # docker load --input meshop.view.api.tar #将tar文件装入image里
MESHOP_PROJECT_ABBREVIATION=crm MESHOP_PROJECT_PUBLISH_PATH=publish/${MESHOP_PROJECT_ABBREVIATION} MESHOP_PROJECT_NAME=MeShop.View.CRM CI_REGISTRY=私有仓库地址 CI_REGISTRY_USER=用户名 CI_REGISTRY_PASSWORD=密码 image_version="${CI_APPLICATION_TAG:-$(date +%Y%m%d%H%M%S)}" image_name="${CI_REGISTRY}/meshop/shop/${MESHOP_PROJECT_ABBREVIATION}" dotnet publish meshop/${MESHOP_PROJECT_NAME}/${MESHOP_PROJECT_NAME}.csproj \ --runtime linux-x64 -c Release -o ${MESHOP_PROJECT_PUBLISH_PATH} echo "${MESHOP_PROJECT_PUBLISH_PATH}" echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" docker build -f .ci/Dockerfile \ --build-arg APP_PATH="$MESHOP_PROJECT_PUBLISH_PATH" \ --build-arg MAIN_DLL="$MESHOP_PROJECT_NAME.dll" \ --build-arg PORT="8888" \ --tag "$image_name:$image_version" . docker push "$image_name:$image_version" echo "${image_name}" echo "${image_version}"
kubectl get pod -n meshop #获取某一个命名空间下面的pod信息 kubectl cp -n meshop meshop-sso-5b49bd7b9d-qrmzg:MeShop.Web.dll ./MeShop.Web.dll #将某一个命名空间下面的某一个pod里面的某一个文件复制到本地磁盘中
IMAGE_NAME='api' && \ IMAGE_TAG='3.0.1-alpha' && \ docker pull meshop/shop/$IMAGE_NAME &&\ IMAGE_ID=$(docker images 'meshop/shop/'$IMAGE_NAME':latest' -q) &&\ docker tag $IMAGE_ID private-docker.runshopstore.com/meshop/shop/$IMAGE_NAME:$IMAGE_TAG &&\ docker push private-docker.runshopstore.com/meshop/shop/$IMAGE_NAME:$IMAGE_TAG &&\ docker rmi -f $IMAGE_ID
cat << EOF > api-version.json [{"op": "replace", "path": "/spec/template/spec/containers/0/image","value": "docker.runshopstore.com/meshop/shop/api:1.0.0-alpha.20"}] EOF kubectl get deployment --all-namespaces=true \ --selector='app.kubernetes.io/name=meshop-api' --no-headers=true | \ awk '{print $2,$1}'| \ xargs -n2 \ sh -c ' echo "kubectl patch deployment $1 -n $2 --type json --patch \"\$(cat api-version.json)\""' _| \ sh
cat << EOF > api-version.json [{"op": "replace", "path": "/spec/template/spec/containers/0/image","value": "docker.tidebuy.net/meshop/shop/api:latest"}] EOF kubectl get deployment --all-namespaces=true \ --selector='app.kubernetes.io/name=meshop-api' --no-headers=true | \ awk '{print $2,$1}'| \ xargs -n2 \ sh -c ' echo "kubectl patch deployment $1 -n $2 --type json --patch \"\$(cat api-version.json)\""' _| \ sh
appArray=("api","front"); appVersion="latest"; appDepository="docker.tidebuy.net"; for app in ${appArray};do \ sh -c "echo 'kubectl get deployment --all-namespaces=true --field-selector=\"metadata.name=meshop-${app}\" --no-headers=true'" \ | sh \ | awk '{print $2,$1}' \ | xargs -n2 sh -c ' echo "kubectl patch deployment $1 -n $2 --type json --patch '\''[{\"op\":\"replace\",\"path\":\"/spec/template/spec/containers/0/image\",\"value\":\"'${appDepository}/meshop/shop/${app}:${appVersion}'\"}]'\''"' _ \ | sh \ ;done
kubectl --namespace meshop-tester port-forward service/meshop-mysql 33306:3306 #指定命名空间,设置本地33306端口转发到k8s里面mysql的3306端口 kubectl config set-context --current --namespace=meshop-tester #切换命名空间 kubectl port-forward service/meshop-mysql 33306:3306 #设置本地33306端口转发到k8s里面mysql的3306端口 alias kubectl='_kubectl_custom(){ if [[ "$1" == "project" && "$2" != "" ]]; then kubectl config set-context --current --namespace=$2; elif [[ "$1" == "projects" && "$2" == "" ]]; then kubectl get ns; elif [[ "$1" == "project" && "$2" == "" ]]; then kubectl config get-contexts | sed -n "2p" | awk "{print \$5}"; else kubectl $*; fi;}; _kubectl_custom' #切换到当前所在的Context下
kubectl delete ns meshop-wangyp1 #删除namespace=meshop-wangyp1的
kubectl delete ingress meshop-wangyp1 -n meshop-admin #删除namespace=meshop-admin里面的ingress=meshop-wangyp1的
restartShopName="testernew|template2|template3|template4"; kubectl get ns -l 'k8s.meshopstore.com/name' -o custom-columns='Name:metadata.name,ShopName:metadata.labels.k8s\.meshopstore\.com/name' --no-headers |\ grep -E "\s+($restartShopName)$" |\ awk '{print $1}' |\ xargs -n1 sh -c ' echo "kubectl rollout restart deployment/meshop-shop -n $1"' _|sh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现