• Docker:Docker打包Web API成镜像并上传到Docker Hub(2)


     Docker官方镜像:https://hub.docker.com/

     本文将把一个webapi制作成docker镜像

    一、Docker命令

    打开Docker Quickstart,有以下常用的命令

    官方命令行文档:https://docs.docker.com/engine/reference/commandline/build/#add-entries-to-container-hosts-file-add-host

    http://www.runoob.com/docker/docker-run-command.html

    使用镜像

    1、docker run [镜像名称] 

    创建一个容器

    --name :给容器一个名称

    -d:后台运行

    -p 外部:内部:标识容器暴漏给外部访问,

    -expose 外部:内部 : 是内部容器互相访问使用

    -v  /var/redmine/files:/redmine/files -v /var/redmine/mysql:/var/lib/mysql sameersbn/redmine:挂载文件;宿主机器:容器目录

    -it 交互模式运行容器;如 docker run -it nginx:latest /bin/bash就是在容器中运行nginx并且运行命令 /bin/bash

    类似:docker exec -ti 容器名称 /bin/bash ;进入容器终端

    --link redis-1:redis-2 容器之间建立链接,常常和-v挂载文件时候一起使用

    2、docker search image_name

    检索image ,如:docker search microsoft/dotnet

    3、docker pull <镜像名:tag>

    下载image ,如:docker pull microsoft/dotnet:latest

    4、docker images

    列出本地镜像列表; -a, --all=false Show all images; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs

    docker ps 

    查看所有运行的镜像,-a参数标识包括已经停止的

    5、docker rmi image_name或者ID

    删除一个或者多个镜像; -f, --force=false Force; --no-prune=false Do not delete untagged parents

    docker rm <容器名orID>如:docker rm $(docker ps -a -q)删除所有镜像

    docker stop <容器名orID> 停止容器
    docker start <容器名orID>开启容器
    docker kill <容器名orID>

    6、docker save 镜像名 > path/savename.tar

    保存镜像

    7、docker load < path/savename.tar

    加载路径下已经拷贝到本机的镜像

    8、docker build -t <镜像名> <Dockerfile路径>

    创建镜像,例如:docker build -t mydocker . 最后的Dockerfile路径可以使用 . 代替,标识当前路径


    微软提供的的镜像:https://hub.docker.com/u/microsoft/

    二、制作.Net Core Webapi镜像

    1、打开VS2015 新建.net core webapi项目

    简单修改一下代码,配置下端口

    运行api;vs里生成一下,打开项目路径,管理员运行命令行输入

    dotnet run 

    发布api;运行命令后发布路径如绿色字体;

    dotnet publish 

    2、打开Docker终端,创建一个Dockerfile文件

    这里在桌面创建一个dockerwebapi文件夹,并创建一个Dockerfile

    cd Desktop

    mkdir dockerwebapi

    cd dockerwebapi

    touch Dockerfile  (注意:区分大小写)

    打开Dockerfile;如下编辑

    # 基于microsoft/dotnet:latest构建Docker Image
    FROM microsoft/dotnet:latest
     
     
    # 进入docker中的/usr/local/src目录
    RUN cd /usr/local/src
     
     
    # 创建DockerWebAPI目录
    RUN mkdir DockerWebAPI
     
     
    # 设置工作路径
    WORKDIR /usr/local/src/DockerWebAPI
     
     
    # 将当前文件夹下的所有文件全部复制到工作目录
    COPY *.* ./
     
     
    # 向外界暴露5000端口
    EXPOSE 5000
     
     
    # 执行dotnet DockerWebAPI.dll命令
    CMD ["dotnet", "DockerWebAPI.dll"]
    Dockerfile

    3、使用Dockerfile创建镜像

    创建镜像有多种方法,适用于不同的情景,这里我们演示用Dockerfile创建一个Webapi的镜像。回到docker终端,输入命令

    docker build -t docker-webapi . (注意:最后的空格 .  表示在当前目录创建镜像)

    image的名字必须小写,否则报错

    基于微软的dotnet镜像,所以会下载,速度感人;

     build成功后,使用命令查看一下,docker images查看一下本地已经有我们创建的镜像了。

     运行镜像

    docker run docker-webapi

    三、Push到Docker Hub

    首先登录hub:

    docker login

    然后给自己的镜像打tag:

    docker tag dockerwebapi:latest baoyun/dockerwebapi:1.0

    push到hub:

    docker push baoyun/dockerwebapi:1.0

    至此通过上面的实践操作,对docker的image、容器、基础命令、Dockerfile等等有了很直观的印象。

     

    参考文档:

    https://docs.microsoft.com/en-us/dotnet/core/docker/building-net-docker-images

    http://www.cnblogs.com/Leo_wl/p/5782414.html

    https://docs.docker.com/docker-hub/repos/#searching-for-images

  • 相关阅读:
    理想解法
    IEEExtreme 2021
    day_1-python前期学习准备篇
    电梯模拟C++
    java线程_01——————————HelloWorld例子
    Unknown tag (c:forEach) 未知的标签
    自动生成Junit单元测试的插件 CodeProAnalytix
    Log4j笔记----01
    Springboot学习笔记_helloWorld篇
    支持开源,崇尚技术,追求真理,充实人生
  • 原文地址:https://www.cnblogs.com/xmai/p/7371814.html
Copyright © 2020-2023  润新知