• 【Core】.NET Core 部署( Docker + CentOS)


    阅读目录

    CentOS 下 Docker安装

    回到顶部

    使用脚本安装 Docker

    (1)安装docker

     sudo yum install docker

    ---------------------------------------------------------------------------------------------------------

    *.rpm is not signed解决

    1、# yum install qemu*报错如下:Package qemu-kvm-tools-0.12.1.2-2.113.el6.x86_64.rpm is not signed2、解决# vim /etc/yum.repos.d/CentOS-Base.repo把其中的gpgcheck值改为0如果还报错yum加参数--nogpgcheck

    yum install docker --nogpgcheck

    ---------------------------------------------------------------------------------------------------------------------------------------

    1.软件包 moby-runc-1.0.0~rc10+azure-2.x86_64.rpm 没有签名

    2.处理 moby-runc-1.0.0~rc10+azure-2.x86_64 与 runc 的冲突
    --> 处理 moby-containerd-1.3.7+azure-1.x86_64 与 containerd 的冲突
    --> 解决依赖关系完成
    错误:moby-containerd conflicts with containerd.io-1.2.13-3.2.el7.x86_64
    错误:moby-runc conflicts with containerd.io-1.2.13-3.2.el7.x86_64
    您可以尝试添加 --skip-broken 选项来解决该问题
    您可以尝试执行:rpm -Va --nofiles --nodigest

     docker -v  docker info   docker version

    yum remove docker
    > docker-client
    > docker-client-latest
    > docker-common
    > docker-latest
    > docker-latest-logrotate
    > docker-logrotate
    > docker-engine

     sudo yum install -y 

     rpm -e docker-ce-cli-19.03.12

     rm -rf /var/lib/docker/*

     sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

     sudo yum install -y docker-ce docker-ce-cli containerd.io

     systemctl status docker.service

    ---------------------------------------------------------------------------------------------------------------------------------------

    (2)启动docker

    systemctl  start docker.service

    (3)配置开机启动

    systemctl enable docker.service

    (4)查看docker版本信息

    docker version

    (5).net core 创建 Dockerfile 

    (5)dockerfile

    复制代码

    #基于 `microsoft/aspnetcore:2.0` 来构建我们的镜像
    FROM microsoft/aspnetcore:2.0
    
    #拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中  
    COPY . /publish
    
    #设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
    WORKDIR /publish
    
    #设置Docker容器对外暴露80端口
    EXPOSE 80
    
    #使用`dotnet NetCore2Mvc.dll`来运行应用程序
    ENTRYPOINT ["dotnet", "NetCore2Mvc.dll"]

    复制代码

     (6)发布项目

     

     将发布的文件拷到centos的core文件夹下

    (7)生成镜像

    cd 到core文件夹下

    sudo docker build -t demo-netcore .       (注意:最后空格后面有一个.)。

    (9)查看生成的镜像

    sudo docker images

    因为,刚打包的镜像demo-netcore是基于docker.io/microsoft/aspnetcore镜像的,所以在打包demo-netcore的过程中,会优先从镜像库中拉取docker.io/microsoft/aspnetcore镜像。

    (10)运行docker容器

    sudo docker run --name democore -d -p 54907:80 demo-netcore

    democore 容器的名称。

    -d 后台进程。

    -p是进行宿主和容器之间端口的映射,(-p 宿主端口:容器端口)

     

     (11)检验docker容器是否运行成功

        sudo docker ps -a

     

    (12)因为运行docker容器的时候 进行了 端口映射  所以外部访问端口 为 54907

     

     ip addr

    (13)删除镜像

    sudo docker rmi (镜像ID)

    (14)删除容器

    sudo docker rm xxxxxxxxx(容器id)

     

     删除容器之前停止容器

    sudo docker stop (容器id)

    (15)创建容器

     docker commit -p xxxxxxxxxxx(容器id) name(快照名称)

    (16)保存本地tar备份

     docker save -o ~/xxxxxxxx.tar name(容器名称)

    (17)Xftp5物理导出到本地

    (18)恢复docker备份

    (19)进入docker容器内部

    docker exec -it 容器id /bin/bash

    (20)退出容器

    Ctrl+D 或者 exit

    (21)查看docker 日志

    docker logs -f -t --since="2017-05-31" --tail=10 alibaba-vica-netapi

    docker logs 6dc1e5f74c0

    --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。

    -f : 查看实时日志

    -t : 查看日志产生的日期

    -tail=10 : 查看最后的10条日志。

    alibaba-vica-netapi : 容器名称

    项目需要重新发布时:

    将发布文件拷到core文件夹下

    将之前的容器停掉,

    重新build一个镜像demo-netcore2

    再次run一个容器democore2  端口映射

     

    就可以看到新发布的内容了

    如果想回退到上个版本 只需要停掉当前容器,run demo-netcore镜像

    $ sudo docker ps // 查看所有正在运行容器
    $ sudo docker stop containerId // containerId 是容器的ID

    $ sudo docker ps -a // 查看所有容器
    $ sudo docker ps -a -q // 查看所有容器ID

    $ sudo docker stop $(docker ps -a -q) // stop停止所有容器
    $ sudo  docker rm $(docker ps -a -q) // remove删除所有容器

    https://www.cnblogs.com/chuankang/p/9474591.html

  • 相关阅读:
    Shiro框架:Failed to deserialize java.lang.Exception: Failed to deserialize问题解决
    Linux系统:CentOS防火墙的各种命令使用
    Linux系统:CentOS下vsftpd的安装配置
    Vue项目启动报错:UnhandledPromiseRejectionWarning: TypeError: loaderContext.getResolve is not a function问题解决
    Minio存储桶:部署存储服务以及设置永久下载链接
    Redis之Bitmaps
    Redis事务与Lua
    Redis Pipeline
    Redis Shell详解
    Redis慢查询
  • 原文地址:https://www.cnblogs.com/wangwenlong8/p/13423149.html
Copyright © 2020-2023  润新知