以前一直很好奇docker是个什么玩意,今天终于闲下来去玩一下了,关于docker的介绍以及优点介绍,相信大家都有去看过一点文章,我是通过这篇文章了解到docker,里面的作者也有写一系列的教程,大家可以去看看https://www.cnblogs.com/ityouknow/category/1173004.html

接下来就是实战了:

安装 docker (1.安装docker,2.启动docker服务 3.开机自动启动docker服务)
1 yum install docker
2 systemctl start docker.service
3 systemctl enable docker.service

检查是否安装正常,显示出版本就证明可以了:
docker -v
在这里插入图片描述
创建项目

随意创建一个mvc网站项目
在这里插入图片描述
本地发布验证程序是否运行正常,并且Dockerfile属性要设置为 始终复制
在这里插入图片描述
在这里插入图片描述
ps:默认启动端口是5000,可以修改appsetting.json文件,添加urls节点指定启动端口 例如: urls:“http://*8068” 。还有其他指定端口方法和原理,参考:https://www.cnblogs.com/cgyqu/p/12169014.html

在这里插入图片描述
这里由于我的服务器5000已经有了,所以改成8068

修改Dockerfile文件

由于我们已经自己生成发布了在本地了,而vs帮我们自动生成的文件里面,包含了生成->发布->运行,所以这里,我们只需要运行的命令就行
修改为:
**FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]**

在这里插入图片描述
dockerfile文件指令说明:

FROM -指定所创建镜像的基础镜像
WORKDIR-配置工作目录
EXPOSE-声明镜像内服务监听的端口 (可以不写,因为我们具体映射的端口可以在运行的时候指定)
COPY-复制内容到镜像 (. .代表当前目录)
ENTRYPOINT-启动镜像的默认人口命令
打包到服务器
在这里插入图片描述

构建镜像

1.进入程序目录,先验证下程序能否启动和访问 

在这里插入图片描述

访问正常,关闭网站,开始构建镜像:

   进入当前程序目录,输入构建命令   
   docker build -t mytest-mvc .

在这里插入图片描述

参数解释:

     -t  --指定镜像名称 (只能小写)
     .   --表示build上下文为当前目录,默认情况docker会使用上下文的根目录找到Dockerfile文件
       



  查看构建的镜像

docker images

在这里插入图片描述
创建并启动容器

docker run --name myfirstWeb -d -p 8041:8068 mytest-mvc

docker ps -a
参数解释:

 --name 表示容器名称(区分大小写),也可以不指定,默认会生成

 -d         表示在后台以守护形式运行容器

 -p         表示外部端口与内部容器端口映射。关于-p的还有其他用法(https://www.cnblogs.com/williamjie/p/9915019.html)

mytest-mvc 是我们刚才创建的镜像名称
查看是否启动成功

在这里插入图片描述
最后去我们本地访问
在这里插入图片描述
遇到的问题:

 1.dockerfile里面指定了EXPOSE 暴露端口,发现最终容器启动的时候内部还是用的配置文件里面那个ulrs里面的端口,可以使用docker logs 容器名 查看启动日志

 2.如果部署成功但发现访问不了,一般都是防火墙问题

 3.在删除容器后,重新添加发现会ip冲突或者其他错误,直接重启一下docker

其他常用命令:

复制代码
1 docker logs 容器名称
2 docker attach 容器名称或容器ID
3 docker exec -it 59ec /bin/bash (如果提示“/bin/bash 未找到”之类的 可以改成:docker exec -it 59ec sh,退出ctrl+d)
4 docker stop 容器ID或容器名
5 docker kill 容器ID或容器名
6 docker rm 容器ID或容器名
7 systemctl restart docker

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐