社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker应用:Hello World

运维 • 6 年前 • 659 次点击  

作者:漂亮的猫

链接: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
 
659 次点击