Unubtu的Docker的安装以及.NETCORE的开发部署

Unubtu的Docker的安装以及.NETCORE的开发部署

1主要流程

系统配置
安装DOKER
开发CORE 项目
DOCKER下的项目部署
配置DOCKER运行容器
发布HTTP虚拟机外部访问

系统配置

  1. 系统配置。
    -分割线--------------------------------------
    修改本机密码: sudo passwd
    获得系统权限:
    -分割线--------------------------------------
    第一次设置:
    sudo passwd root
    以后管理员登录:
    su root 输入密码;
    -分割线--------------------------------------
  2. 更新当前软件。
    sudo apt-get upgrade
    sudo apt-get update
    sudo apt-get dist-upgrade
    –分割线-------------------------------------



巨坑:由于本人用的是UBUNTU 20的最新版本, 出现了2个问题:

  1. (没有Release文件)
  2. 无法安全地用该源进行更新,所以默认禁用该源
    解决:
  3. 更换源: https://www.cnblogs.com/lynn-z/p/12874504.html
  4. 清除无效的连接: https://blog.csdn.net/whq19890827/article/details/79101571
  5. 根据个人报错内容取消无效连接。

取消无效的源------------------------------------



  1. 安装net
    sudo apt-get install net-tools
    ifconfig -a 查看当前IP (早期版本没有TCP/IP)

  2. 安装samba服务器。------用于网路共享文件!
    sudo apt-get install samba samba-common
    这是网址:hhttps://www.linuxidc.com/Linux/2018-11/155466.htm
    10.0.2.15
    172.17.0.1
    http://10.0.2.15:32768/


  1. 部署 VSCODE
    得需要个文本编辑器,拿这个代替得了,虽然大材小用了,;
    分割线-------------------------------------

7.部署ssh
部署ssh才可以外部访问虚拟机;
sudo apt-get install openssh-client
sudo apt-get install openssh-server

重启服务器:
sudo service ssh restart
或者:
sudo /etc/init.d/networking restart

开启服务:
sudo /etc/init.d/ssh start 开启服务

关闭Ubuntu防火墙设置,输入命令:ufw allow 22/tcp

最后 重启虚拟机;

分割线------------------------------------

安装DOKER

参考菜鸟论坛;https://www.runoob.com/docker/ubuntu-docker-install.html>

后面后详细写具体操作。
0. 安装DOCKER :
sudo apt-get install -y docker.io

1、安装 DOCKER:
runoob@runoob:~$ wget -qO- https://get.docker.com/ | sh

2、启动docker 后台服务
前台:systemctl start docker
开机启动: systemctl enable docker

后台: sudo service docker start

3、测试运行hello-world
docker run hello-world
第一次运行会找不到,然后会自动下载。第二次就好了。

查看docker在 系统中的状态,
docker search ubuntu

查看docker中的镜像:
docker images -a

查看docker版本:
docker version
下面继续参考:
https://blog.csdn.net/fei2636/article/details/79384969

开发CORE 项目

dockerfile 文件 的第一行 改成: FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base (项目所依赖的环境)

参考大牛的笔记(后面回详细补充)
参考文档:创建项目 ----部署项目
https://www.cnblogs.com/lonelyxmas/p/10748667.html

也可以参考 :
https://www.cnblogs.com/fanqisoft/p/10883097.html
https://blog.csdn.net/weixin_34161032/article/details/93345884

在这里插入图片描述
在这里插入图片描述

DOCKER下的项目部署

https://www.cnblogs.com/Tassdar/p/9584406.html
DOCKER下的:CORE API 的SDK文件j镜像下载命令:
sudo docker pull microsoft/dotnet

拉取测试程序 :
sudo docker build -t web:v0.1 .
build是在线拉取建立该程序的新镜像名字; 该镜像依赖于 CORE3.1 是在DOCKER中文件配置里面进行配置。

我的:建立镜像 (这步最关键: 一定要在你发布的所在文件夹统计目录下执行命令行 我的是 publish 所在的同级文件夹 同时 docker文件也在该同级目录下)
创建镜像:
Docker 命令:docker build -t <要生成的镜像的名称> . (注意,结尾有个点,这个点是Dockerfile的路径,因为Dockerfile现在就在当前目录下,所以打个点就行,-t 参数后的镜像名字不需要打<>)

sudo docker build -t apicore:v3.0 ./
或者在Publish文件下 启动控制台: docker build -t apitest //apitest 为 镜像名字
// docker build -t apitest :v2.0 //则会在镜像中显示为 版本 v2.0
[sudo] kongdecong 的密码: Kong123.
~/APICore$ 是项目的所在的目录

REPOSITORY TAG IMAGE ID CREATED SIZE
apicore v3.0 f24c834cd4d6 24 seconds ago 208MB

启动镜像:
Docker 命令:docker run -d --rm -p 5000:80 --name <实例名称> <镜像名称>

docker run -d --rm -p 5000:80 --name apitest6.5 apicore:v3.0

跟随容器自动启动
docker run -d --restart=always -p 5000:80 --name <实例名> <镜像名>
docker run -d --restart=always -p 5000:80 --name apitest6.5 apicore:v3.0

-d会在启动成功后输出镜像的唯一标识码, --rm 会判断如果存在同名实例会删除替换 -p指定程序运行端口 宿主端口:容器端口 注:因为上文中没有指定EXPOSE所以容器的端口是80 --name 参数后的实例名和镜像名不需要带<>

如下图,我把服务器的5003端口指定到了容器的80端口,现在访问5003就会访问到DEMO程序

docker ps 查看所有已经部署在容器的实例

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
769cdcbf7723 apicore:v3.0 “dotnet APICore.dll” 2 minutes ago Up 2 minutes 0.0.0.0:5000->80/tcp apitest6.5
网页: http://localhost:5000/api/Values/Get 查看结果;
GET: ttp://localhost:5000/api/Values/Get2?id=“123”
POST:

sudo docker images 查看我的镜像
在拉镜像前,先登录docker, 命令:docker login
我的账户:meiqiukong 密码:依旧!

配置DOCKER运行容器

容器 = 镜像 + 可读层。并且容器的定义并没有提及是否要运行容器。
sudo docker images 查看我的镜像
sudo docker rmi 30228dd10f26 -f 删除镜像 if是强制删除
sudo docker run -d -t -p 5001:80 apicore:v3.0 #运行容器 镜像+版本号
docker run 命令先是利用镜像创建了一个容器,然后运行这个容器。这个命令非常的方便,并且隐藏了两个命令的细节,但从另一方面来看,这容易让用户产生误解。

在这里插入图片描述

docker ps 命令会列出所有运行中的容器。
docker ps –a命令会列出所有的容器,
docker stop $(docker ps -q) 停用全部运行中的容器:
docker rm $(docker ps -aq) 删除全部容器

systemctl restart docker 重启DOCKER

ocker images命令会列出了所有顶层(top-level)镜像。
docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。
docker kill 命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。
docker rmi docker images -q 删除所有镜像
sudo docker ps #查看正在运行的容器

访问网页:http://localhost:5001/api/Values/Get
或者: http://10.0.2.15:5001/api/Values/Get
http://172.17.0.1:5001/api/Values/Get

sudo docker ps -a #查看所有容器信息
运行成功!

查看容器运行日志
docker login
删除容器: sudo docker rm 533b1b0615e0
删除所有容器 docker ps -a -q

发布HTTP虚拟机外部访问

https://blog.csdn.net/qq_38461232/article/details/81783489
DOCKER 的自动启动;容器的自动启动;
固定容器的IP地址,和 系统的IP地址;
镜像的更新升级;

成功在WINDOS上访问到 UBUNTU发布出的.Core API
[
“value1”,
“value2”
]

注意:
在设置虚拟机共享网络的时候 一定要选择“桥接”, 然后 要将 桥接出来的 网络 分配 IP 和 子网掩码 要和 主机在一个地址池内;
“NAT” 模式 能连外网但是,不能访问,可能我不太会。
在ubuntu 设置网络中,设置自动获取即可。 通过 ifconfig -a 查看IP地址,然后再主机上进行PING

如果找不到 IFCONFIG

https://blog.csdn.net/u010176014/article/details/51926658

WINDOWS下的docker 使用;

运行其他命令:sudo docker run -d -t -p 5001:80 microsoft/dotnet

(文档中用了许多大佬的链接, 内容还需要完善确认)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值