docker~从Dockerfile到Container的过程(终于算是OK了)

上一文章,主要介绍Dockerfile里各参数的含义,以及在项目文件里这些内容的含义,因为大叔认为官方和网上其它文章说的有些模棱两可,不太好让大家理解,所有我又从新写了一个大白话的文章,希望可以给大家一些帮助.<DotNetCore跨平台~Dockerfile的解释

本文章主要对一个windows下的dotnet new api生成的项目进行迁移,将它存储为一个镜像,然后运行这个镜像,生成一个容器,容器对外开放5000端口,大家就可以通过5000来访问它了,说起来很容易,做起来有些坑!

Docerfile和DotnetCore部署的过程

  1. 项目需要在windows里恢复,生成一下,dotnet restore和dotent publish
  2. 我们在docker里使用的是生成后的东西,比较如目录是项目下的obj/docker/publish
  3. 你的Dockerfile与obj目录是同一级的
  4. 使用docker build ‘加你的项目根目录路径"
  5. 使用docker run -it -p 5000:5000 imageId 运行起一个容器来,同时向外监听了5000端口

做起来

1 通过dotnet new生成一个项目,路径:C:\Users\lind\hellomvc

2 我们在docker里使用的是生成后的东西,比较如目录是项目下的obj/docker/publish

3 你的Dockerfile与obj目录是同一级的

Dockerfile的内容如下

#基于microsoft/dotnet 来构建我们的镜像,它有800多兆,不是300多兆那个
FROM docker.io/microsoft/dotnet
MAINTAINER lind
#设置Docker容器对外暴露5000端口
EXPOSE 5000
#输入参数
ARG source
#将source所在目录下的obj/docker/publish下的内容复制到容器根目录的hellomvc目录
COPY ${source:-obj/Docker/publish} ./hellomvc
#将容器当前目录设为hellmvc
WORKDIR hellomvc
#在容器中运行dotnet这个命令
ENTRYPOINT ["dotnet","hellomvc.dll"]

4 使用docker build ‘加你的项目根目录路径"

这个命令是在linux平台执行的,下面看一下我们项目的路径,可以使用xft,xshell等工具,方式操作,使用xft把整个项目都复制到linux下的/root/project目录

在xshell中连接你的linux主机,输入下面的命令,生成一个新的镜像

5 使用docker run -it -p 5000:5000 imageId 运行起一个容器来,同时向外监听了5000端口

镜像生成后,我们使用docker run 去启动一个容器!

启动后,它将监听5000这个端口,IP地址就是linux主机的,我们在外面可以通过linux ip:5000来访问它

如果你希望对外暴露8000端口,可以这样写docker run -it -p 8000:5000 7c8d43fe67f9,这样,相同的网站被你在两个容器中共同执行了,或者说一个网站多了一个"负载"的支持,看到这里你是否想起什么了,对就是负载均衡,你的环境部署更简单了,一个项目可以在很短的时间被部署起来,再配上反射代理(nginx,lvs),一个网站负载就搭好了!

这个命令可以为你的镜像重命名

docker tag 7c8d43fe67f9 helloapi:1.0

希望这篇文章可以帮助刚开始学docker的学生们,大家有问题可以直接与我联系!

docker是一种新的技术,它在未来将会再火一把!

一个镜像,到处执行!

时间: 2024-08-13 19:13:53

docker~从Dockerfile到Container的过程(终于算是OK了)的相关文章

【转】docker之Dockerfile实践

上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为base image: [[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE wadeson/centos_nginx v1 210a202d37b8 2 hours ago 464MB nginx latest c59f17fe53b0 4 days ago 108MB ubuntu latest 747

docker+centos7 + python3.7 + scrapyd 安装过程

现在安装 docker https://www.cnblogs.com/angdh/p/12197143.html 非dockerfile 方法 下拉 centos7的镜像 docker pull centos:7 使用  docker images 查看 镜像id docker run -it --name=c7 镜像id /bin/bash 进入 容器 后 安装 python3.7 https://www.cnblogs.com/angdh/p/10564369.html 再 安装 scra

Docker使用Dockerfile创建支持ssh服务自启动的容器镜像

1. 首先创建一个Dockerfile文件,文件内容如下 # 选择一个已有的os镜像作为基础 FROM centos:centos6 # 镜像的作者 MAINTAINER Fanbin Kong "[email protected]" # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no RUN yum install -y openssh-server sudo RUN sed -i 's/UsePAM yes/UsePAM no/g' /

阿里云部署Docker(9)----Dockerfile脚本定制镜像

本文为原创文章,转载需注明转自:http://blog.csdn.net/minimicall?viewmode=contents 技术爱好者都是比较懒的.而docker又是开发者支持起来的.所以,它肯定是有比较懒的方式供我们定制自己需要的东西. docker build docker 用build指令来执行dockerfile脚本. 具体的用法: [java] view plaincopy sudo docker build . 小心后面那个点,表示当前目录.当前目录有一个Dockerfile

阿里云部署Docker(9)----Dockerfile脚本定制你的镜像

本文为原创文章,转载需注明转自:http://blog.csdn.net/minimicall?viewmode=contents 技术爱好者都是比较懒的.而docker又是开发者支持起来的.所以,它肯定是有比较懒的方式供我们定制自己需要的东西. docker build docker 用build指令来执行dockerfile脚本. 具体的用法: sudo docker build . 小心后面那个点,表示当前目录.当前目录有一个Dockerfile的文件. 当然,你可以指定你建立的镜像的名字

Centos上Docker 使用dockerfile构建容器实现ssh

这几日在学习docker.遇到的问题数一年都数不完,网上大多数都是ubuntu的,百度或者谷歌的时候心好累.写写文档来帮助使用centos的docker爱好者们. docker基本操作这里就不介绍了 编写时间为:2015年12月25日17:41:41 如果你是准备开始学习,或者准备想用ssh实现连接容器这个功能时,请先自己折腾一下.不然达不到学习的目的哦 ssh -p 32772 [email protected] Read from socket failed: Connection rese

docker swarm:执行 service update 过程中服务短暂不能访问的问题

这是我们使用自建 docker swarm 集群后在部署时遇到的一个问题,使用 docker service update 命令更新服务时, docker service update -d=false --force service_name 在更新的过程中服务有短暂的时间不能访问. 该服务中运行的是 asp.net core web api ,所使用的 Dockerfile 如下: FROM microsoft/aspnetcore:1.1.2 ARG PROJECT WORKDIR /ap

Docker 基础 : Dockerfile

Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的基本结构及其支持的众多指令,并具体讲解通过执行指令来编写定制镜像的 Dockerfile. 基本结构 Dockerfile 由一行行命令语句组成,并且支持已 # 开头的注释行.一般而言,Dockerfile 的内容分为四个部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令.例如: # This dockerfile uses the Ubu

虚拟化技术—docker容器—Dockerfile篇

什么是Dockerfile? 按照平时,我们都需要先让一个容器跑起来,然后进去搭建制定自己的服务,那有没有更简洁的方法呢?Dockerfile就是为了更方便的制定容器的. 首先先看Dockerfile里的一些定义,这里从网上截了个图,比较形象: 创建目录: 要先把需要的软件包放在同一个目录下 编写Dockerfile,这里要特别提醒,Dockerfile编写需要非常注意空格!!! vim Dockerfile 添加: # This is My first Dockerfile # Version