一、Docker的三大核心概念1、Docker仓库repositorydocker仓库repository类似于代码库是docker集中存放镜像的场所。实际上注册服务器是存放仓库的地方其上往往存放着很多仓库。每个仓库集中存放某一类镜像往往包括多个镜像文件通过不同的标签tag来进行区分。根据存储的镜像公开分享与否docker仓库可以分为公开仓库Public和私有仓库Private两种形式。目前最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载国内的公开镜像包括Docker Pool,可以提供稳定的国内访问与GitHub类似。2、Docker镜像Imagedocker镜像类似于虚拟机镜像可以将其理解为一个只读模板。除了提供容器运行时所需的程序、库、资源、配置等文件外docker镜像还包含了一些为运行时准备的一些配置参数如匿名卷、环境变量、用户等我们把项目打包才成一个镜像那么这个镜像中就有了我们项目所依赖的所有环境和资源3、 Docker容器container二、.Net项目部署到Docker1、生成构建Image镜像文件Vs中右键项目-添加-Docker 支持-目标OS选择 Linux 在项目中会生成个Dockerfile文件这个Dockerfile文件就是用来构建你项目的Image镜像的它是一个创建当前项目镜像的所有命令的文本文件2、将你的项目存放到Linux中我们可以用MobaXterm 或者其他文件工具将我们的项目存放到Linux中我们就在Linux系统的root文件下创建了一个叫ZKHK的文件用于存放我们的项目代码然后我又单独的将Dockerfile文件单独的放在了与项目文件夹同级的ZKHK文件夹下。3、构建项目镜像构建镜像的时候如果提示[Warning]IPv4forwardingisdisabled.Networkingwillnotwork.则需要开启 Linux 操作系统的 IP 转发功能临时开启如果你只是希望临时开启 IP 转发功能可以使用以下命令sudosysctl-wnet.ipv4.ip_forward1永久开启如果你希望永久开启 IP 转发功能需要编辑配置文件使其在系统重启时仍然生效1、编辑 /etc/sysctl.conf 文件# 1、打开/etc/sysctl.conf 文件sudonano/etc/sysctl.conf#或sudovim/etc/sysctl.conf#vim命令打开的文件 按 i 进入编辑状态# 2、在文件末尾添加以下行表示开启 IP 转发功能net.ipv4.ip_forward1# 编辑完毕后按Esc退出编辑 然后按冒号Shift:输入w !sudo %进行强制保存# Ctrlo可以修改文件名Ctrlx 保存并退出当前文件2、使修改生效sudosysctl-p现在IPv4转发已经启用了。重新启动网络服务你将不再收到IPv4 forwarding is disabled的警告消息并且网络连接将正常工作。使用firewalld或iptables设置转发规则除了开启 IP 转发功能如果你需要进行网络地址转发你还需要设置转发规则。你可以使用firewalld或iptables、来进行设置具体步骤因操作场景和需求而异1、使用 firewalldsudofirewall-cmd --add-masquerade--permanentsudofirewall-cmd--reload2、使用 iptablessudoiptables-tnat-APOSTROUTING-o出口网卡-jMASQUERADE3、修改完成后按下 Ctrl O这将会显示一个提示询问你是否要保存已经编辑的内容。按下 Enter 键即可确认保存4、确认保存后你可以修改文件名如果需要然后按下 Enter 键5、最后按下 Ctrl X 退出 nano 编辑器4、根据镜像创建并运行容器Docker容器启动之前如果不进行端口映射在容器外部是无法通过网络来访问容器内的网络应用和服务。因为容器中常常会运行一些网络应用和服务如果想在容器外部通过网络来访问容器内的网络应用和服务就需要对该容器进行端口映射可以通过docker run命令中的-P或-p选项来进行端口映射Docker容器本身是一个独立的、隔离的环境它自己拥有独立的IP地址。当我们创建并运行一个容器时它内部的应用程序无法直接被主机上的其他应用访问。因此我们需要进行端口映射将容器内部的端口与主机的端口进行映射这样就能够通过主机上的端口访问容器内部的应用程序了举例假设我们虚拟机的IP是 192.168.43.10我们可以通过HTTP地址即常说的“网址”或IP加“: 80”来访问网站因为浏览网页服务默认的端口号都是80我们的项目运行在Docker容器中而容器外部是无法通过网络来访问容器的内容部网络应用和服务的所以我们就需要将Docker容器的某个端口如8083映射到主机的80端口这样我们就可以在外部通过网址“:8083” 来访问容器的里应用和服务了。92.168.43.10:8083 就相当于访问主机的80端口了。#8083:80将容器内部的 8083端口映射到主机上的 80端口#docker8083容器的名称名称随便自己取#net6projecttest 镜像名称dockerrun-itd-p8083:80--namedocker8083 net6projecttestdockerrun-itd-p8084:80--namedocker8084 net6projecttest上面就根据镜像创建了两个两个容器92.168.43.10:8083和92.168.43.10:8084
Docker部署.NET10 项目
一、Docker的三大核心概念1、Docker仓库repositorydocker仓库repository类似于代码库是docker集中存放镜像的场所。实际上注册服务器是存放仓库的地方其上往往存放着很多仓库。每个仓库集中存放某一类镜像往往包括多个镜像文件通过不同的标签tag来进行区分。根据存储的镜像公开分享与否docker仓库可以分为公开仓库Public和私有仓库Private两种形式。目前最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载国内的公开镜像包括Docker Pool,可以提供稳定的国内访问与GitHub类似。2、Docker镜像Imagedocker镜像类似于虚拟机镜像可以将其理解为一个只读模板。除了提供容器运行时所需的程序、库、资源、配置等文件外docker镜像还包含了一些为运行时准备的一些配置参数如匿名卷、环境变量、用户等我们把项目打包才成一个镜像那么这个镜像中就有了我们项目所依赖的所有环境和资源3、 Docker容器container二、.Net项目部署到Docker1、生成构建Image镜像文件Vs中右键项目-添加-Docker 支持-目标OS选择 Linux 在项目中会生成个Dockerfile文件这个Dockerfile文件就是用来构建你项目的Image镜像的它是一个创建当前项目镜像的所有命令的文本文件2、将你的项目存放到Linux中我们可以用MobaXterm 或者其他文件工具将我们的项目存放到Linux中我们就在Linux系统的root文件下创建了一个叫ZKHK的文件用于存放我们的项目代码然后我又单独的将Dockerfile文件单独的放在了与项目文件夹同级的ZKHK文件夹下。3、构建项目镜像构建镜像的时候如果提示[Warning]IPv4forwardingisdisabled.Networkingwillnotwork.则需要开启 Linux 操作系统的 IP 转发功能临时开启如果你只是希望临时开启 IP 转发功能可以使用以下命令sudosysctl-wnet.ipv4.ip_forward1永久开启如果你希望永久开启 IP 转发功能需要编辑配置文件使其在系统重启时仍然生效1、编辑 /etc/sysctl.conf 文件# 1、打开/etc/sysctl.conf 文件sudonano/etc/sysctl.conf#或sudovim/etc/sysctl.conf#vim命令打开的文件 按 i 进入编辑状态# 2、在文件末尾添加以下行表示开启 IP 转发功能net.ipv4.ip_forward1# 编辑完毕后按Esc退出编辑 然后按冒号Shift:输入w !sudo %进行强制保存# Ctrlo可以修改文件名Ctrlx 保存并退出当前文件2、使修改生效sudosysctl-p现在IPv4转发已经启用了。重新启动网络服务你将不再收到IPv4 forwarding is disabled的警告消息并且网络连接将正常工作。使用firewalld或iptables设置转发规则除了开启 IP 转发功能如果你需要进行网络地址转发你还需要设置转发规则。你可以使用firewalld或iptables、来进行设置具体步骤因操作场景和需求而异1、使用 firewalldsudofirewall-cmd --add-masquerade--permanentsudofirewall-cmd--reload2、使用 iptablessudoiptables-tnat-APOSTROUTING-o出口网卡-jMASQUERADE3、修改完成后按下 Ctrl O这将会显示一个提示询问你是否要保存已经编辑的内容。按下 Enter 键即可确认保存4、确认保存后你可以修改文件名如果需要然后按下 Enter 键5、最后按下 Ctrl X 退出 nano 编辑器4、根据镜像创建并运行容器Docker容器启动之前如果不进行端口映射在容器外部是无法通过网络来访问容器内的网络应用和服务。因为容器中常常会运行一些网络应用和服务如果想在容器外部通过网络来访问容器内的网络应用和服务就需要对该容器进行端口映射可以通过docker run命令中的-P或-p选项来进行端口映射Docker容器本身是一个独立的、隔离的环境它自己拥有独立的IP地址。当我们创建并运行一个容器时它内部的应用程序无法直接被主机上的其他应用访问。因此我们需要进行端口映射将容器内部的端口与主机的端口进行映射这样就能够通过主机上的端口访问容器内部的应用程序了举例假设我们虚拟机的IP是 192.168.43.10我们可以通过HTTP地址即常说的“网址”或IP加“: 80”来访问网站因为浏览网页服务默认的端口号都是80我们的项目运行在Docker容器中而容器外部是无法通过网络来访问容器的内容部网络应用和服务的所以我们就需要将Docker容器的某个端口如8083映射到主机的80端口这样我们就可以在外部通过网址“:8083” 来访问容器的里应用和服务了。92.168.43.10:8083 就相当于访问主机的80端口了。#8083:80将容器内部的 8083端口映射到主机上的 80端口#docker8083容器的名称名称随便自己取#net6projecttest 镜像名称dockerrun-itd-p8083:80--namedocker8083 net6projecttestdockerrun-itd-p8084:80--namedocker8084 net6projecttest上面就根据镜像创建了两个两个容器92.168.43.10:8083和92.168.43.10:8084