Py学习  »  docker

Docker应用:Hello World

运维 • 5 年前 • 498 次点击  

作者:漂亮的猫

链接:https://www.cnblogs.com/lanxiaoke/p/10432631.html

前言

最近学习了Docker相关技术点,国内关于Docker的资料大多是基于Linux系统的,但是我对Linux又不熟。


好在在Win10下也是支持Docker的,而且是支持Linux和Windows两种容器。


在Win10下运行容器和在Linux下是有一些区别的,很多命令都不一样、容器网络也不一样,刚开始我就不明白这点,搭建应用总是错误不断,


网上相关Win10下的容器的资料有很少,特别是容器网络这段,坑不是一般少。学习的过程是曲折的。

一、Win10下安装Docker

1、win10以下的那些Docker大家还是别去看了,个人觉得浪费时间;win10下的Docker是Docker for windows,点击这里下载:https://www.docker.com/products/docker-desktop


2、下载完成后安装,一直Next就行了,最后在桌面看到快捷方式



3、双击快捷方式启动docker,第一次启动需要注册登录,没有账户的先去官网注册:http://hub.docker.com/


4、注册完成后输入账户就可以成功启动docker了,启动后可以看到小鲸鱼



5、运行PowerShell验证,输入docker info


二、Web应用

1、新建ASP.NET Core测试项目


 

2、修改Controllers以及View


public IActionResult Index()
{
   ViewData["Message"] = "Hello World";
   return View();
}


3、修改View


@{
    ViewData["Title"] = "Home Page";
}
" font-size:24px; font-weight:bold; text-align:center">
    @ViewData["Message"]

 

4、新建Dockerfile


FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY WebApp-HelloWorld/*.csproj ./WebApp-HelloWorld/
RUN dotnet restore

# copy everything else and build app
COPY WebApp-HelloWorld/. ./WebApp-HelloWorld/
WORKDIR /app/WebApp-HelloWorld
RUN dotnet publish -c Release -o out


FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/WebApp-HelloWorld/out ./
ENTRYPOINT ["dotnet""WebApp-HelloWorld.dll"]

三、部署在Docker容器中

1、进入demo路径


cd X:\Users\漂亮的猫\Desktop\WebApp-HelloWorld


2、生成镜像





    
docker build -t helloworld .

 


3、启动镜像,将本地8000端口映射到容器80端口


docker run --name helloworld -p 8000:80 helloworld



4、访问localhost:8000验证



OK,这就完成了,好像有点简单。


那就稍微深入一点,再加一个数据库容器,从数据库端返回数据

四、Web端修改

1、引用Dapper、MySql.Data


using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace WebApp_HelloWorld.Controllers
{
    public  class DBService
    {
        protected IDbConnection conn;

        public DBService()
        
{
            conn = new MySqlConnection("server=198.198.198.181;User Id=root;password=mima2100;Database=mysql-db");
        }

        public async Task Single(string sql, object paramPairs = null)
        {
            return await conn.QuerySingleOrDefaultAsync(sql, paramPairs);
        }

        public async Task<intCount(string sql, object paramPairs = null)
        
{
            return await conn.QuerySingleOrDefaultAsync<int>(sql, paramPairs);
        }
    }
}


2、修改HomeController


public IActionResult 


    
Index()
        
{
            var dbService = new DBService();
            var tb = dbService.Single("select * from Tb limit 1").Result;

            ViewData["Message"] = string.Format("Idx:{0},Name:{1}", tb.Idx, tb.Name);
            //ViewData["Message"] = "Hello World";

            return View();
        }


3、Tb


public class Tb
    {
        public int Idx { getset; }
        public string Name { getset; }
        public DateTime CreateTime { getset; }
    }

五、容器端修改

1、拉取MySql容器


docker pull mysql



2、启动容器


docker run --name mysql001 -e MYSQL_ROOT_PASSWORD=mima2100 -p 3306:3306 -d mysql



3、链接Mysql,Navicat工具,创建数据



4、重新发布web应用


1 docker stop 5b41
2 docker rm 5b41
3 docker build -t helloworld .
4 docker run --name helloworld -p 8000:80 helloworld


5、重新验证



OK,完成了Docker从入门到放弃的第一步。



●编号303,输入编号直达本文

●输入m获取文章目录

推荐↓↓↓

Linux学习

更多推荐25个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/29569
 
498 次点击