在visual studio 中进行web项目发布,并上传文件到服务器
创建Dockerfile文件内容如下:
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim WORKDIR /app EXPOSE 80 EXPOSE 443 WORKDIR /app COPY . /app ENTRYPOINT ["dotnet", "web.dll"]
如果缺少gdilibplus使用下面的,添加了RUN
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base WORKDIR /app RUN apt-get update && apt-get install -y libgdiplus && cd /usr/lib && ln -s libgdiplus.so gdiplus.dll EXPOSE 80 EXPOSE 443 WORKDIR /app COPY . /app ENTRYPOINT ["dotnet", "TFCMS.dll"]
dockerfile注解
把此文件跟放到发布目录,然后执行:
docker build -t tfcms .
注意:上面的命令,在镜像名后还有一个空格加点的,这个不能少" ."
然后把镜像挂载到docker中 如:
docker run --name tfcms -d -p 5001:80 -p 5002:443
-
-d ,表示在后台以守护态(daemonized)形式运行容器
-
-p 外部端口与内部容器端口映射。
-
--name 指定容器的名称。当然可以不指定,默认会为我们创建
-
最后一个参数 tfcms 就是我们刚创建的镜像名称
或者 docker run -d -p 5001:80 -p 5002:443 -v /root/tfcms:/app --workdir /app mcr.microsoft.com/dotnet/aspnet dotnet /app/LinuxDockerNginx.dll
-p:指定物理主机5001端口映射到docker容器80端口
-v:复制物理主机中的文件到docker容器中的指定目录
--workdir:指定后续指令目录
mcr.microsoft.com/dotnet/aspnet:指定对应的基础镜像 使用dotnet命令运行项目dll
如此即可发布完成。
运行项目
运行项目 docker run -itd -p 5000:80 dockerpublish -itd:交互式后台启动
-p:指定物理主机5001端口映射到docker容器80端口
dockerpublish:镜像名称
二、源码镜像制作
2.1将源码拷贝到Centos指定目录下,并在源码总文件夹的同级目录下,复制Dockerfile文件
2.2 进入到Dockerfile同级目录,进行镜像构建
使用docker构建命令进行构建:docker build -t dockerpublish -f Dockerfile .
-t :镜像名称(必须小写) -f :Dockerfile文件 最后圆点指定dockfile文件
三、将Docker 镜像推送到阿里云镜像仓储
在阿里云创建自己的容器仓库 https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
按照阿里云的提示进行镜像推送。
先登录,密码为阿里云的账号密码
推送镜像,注意镜像ID 和版本
这时候可以在阿里云的镜像版本看到自己的版本信息
这里推送到阿里云的镜像完成
在linux上获取阿里云自己的Docker镜像
这时候的本地镜像仓库就存在阿里云的版本的镜像
在linux运行项目,多版本回滚
执行 命令
docker run --name test -d -p 8003:8003 registry.cn-hangzhou.aliyuncs.com/lijiqing/test:1.0.2
版本的回滚指的是,当发布新的镜像之后 如果出现bug或者其他问题,可以将当前容器关闭,运行之前旧的镜像
四、docker 常见命令
docker run:docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)
docker start :启动已存在的镜像
docker stop:停止镜像
docker stop $(docker ps -q):停止所有镜像
docker images:docker中的所有镜像
docker ps -a :显示容器列表 -a 显示所有容器(默认显示正在运行)
docker pull:拉取镜像 name:tag 指定版本,默认latest
docker search:搜索的范围是官方镜像和所有个人公共镜像
docker rm :删除容器
docker rmi:删除镜像
docker rm $(docker ps -aq):删除所有停止的容器
docker exec -it 容器ID /bin/bash :进入指定id的容器