服装网站建设公司哪家好做一个网站成本是多少合适

当前位置: 首页 > news >正文

服装网站建设公司哪家好,做一个网站成本是多少合适,网站建设报告内容,南昌做网站的公司文章目录 前言Docker引擎镜像管理容器管理容器运行前台运行和后台运行容器识别重启策略清除 容器日志 数据管理卷挂载创建和管理卷启动带有卷的容器通过Docker Compose使用卷使用只读卷备份、恢复和迁移卷 绑定挂载用绑定挂载启动一个容器Docker Compose使用绑定挂载使用只读绑… 文章目录 前言Docker引擎镜像管理容器管理容器运行前台运行和后台运行容器识别重启策略清除 容器日志 数据管理卷挂载创建和管理卷启动带有卷的容器通过Docker Compose使用卷使用只读卷备份、恢复和迁移卷 绑定挂载用绑定挂载启动一个容器Docker Compose使用绑定挂载使用只读绑定挂载 tmpfs挂载挂载方式的选取挂载过程中文件和目录的默认处理行为 网络管理用户自定义网络网络驱动程序Bridge网络驱动Host网络驱动管理用户自定义网络 发布端口IP地址和主机名 前言 本文均翻译自官方文档。 Docker引擎 Docker Engine是一种开源容器化技术用于构建和容器化应用程序。Docker引擎作为一个CS架构应用程序 守护进程dockerdDocker守护进程监听Docker API请求管理Docker对象如镜像、容器、网络和卷。守护进程还可以与其他守护进程通信以管理Docker服务。客户端dockerDocker客户端是许多Docker用户与Docker交互的主要方式。当您使用诸如docker run之类的命令时客户端将这些命令发送给dockerd后者执行这些命令。docker命令使用docker API。Docker客户端可以与多个守护进程通信。Docker RegistersDocker注册中心存储Docker镜像。Docker Hub是一个任何人都可以使用的公共注册中心默认情况下Docker会在Docker Hub上查找镜像。 下面的命令运行一个ubuntu容器以交互方式连接到本地命令行会话并运行/bin/bash docker run -i -t ubuntu /bin/bash当您运行此命令时会发生以下情况 如果你在本地没有ubuntu镜像Docker会从你配置的注册表中提取它就像你手动运行docker pull ubuntu一样。Docker创建一个新容器就像您手动运行docker container create命令一样。Docker为容器分配一个读写文件系统作为它的最后一层。这允许运行中的容器在其本地文件系统中创建或修改文件和目录。Docker创建了一个网络接口将容器连接到默认网络因为您没有指定任何网络选项。这包括为容器分配一个IP地址。默认情况下容器可以使用主机的网络连接连接到外部网络。Docker启动容器并执行/bin/bash由于容器以交互方式运行并连接到您的终端因此您可以使用键盘提供输入而Docker将输出记录到您的终端。当您运行exit命令终止/bin/bash命令时容器会停止但不会被移除。您可以重新启动或删除它。 当你使用Docker时那么你正在创建和使用镜像、容器、网络、卷、插件和其它Docker对象。学习Doker的使用就是学习Docker对象的使用。 镜像管理 镜像是一个只读模板带有创建Docker容器的说明。通常一个镜像基于另一个映像并进行一些额外的定制。例如您可以构建一个基于ubuntu镜像的镜像但是安装Apache web服务器和您的应用程序以及使应用程序运行所需的配置细节。您可以创建自己的镜像也可以只使用其他人创建并发布在注册中心的镜像。要构建自己的镜像需要创建一个Dockerfile该文件使用简单的语法来定义创建和运行镜像所需的步骤。Dockerfile中的每条指令都会在镜像中创建一个层。当你改变Dockerfile并重建镜像时只有那些已经改变的层才会被重建。与其他虚拟化技术相比这是镜像如此轻量级、小巧和快速的部分原因。 容器管理 容器是镜像的可运行实例。您可以使用Docker API或CLI创建、启动、停止、移动或删除容器。您可以将容器连接到一个或多个网络将存储附加到其上甚至可以根据其当前状态创建新镜像。默认情况下容器相对较好地与其他容器及其主机隔离。您可以控制容器的网络、存储或其他底层子系统与其他容器或主机的隔离程度。容器是由它的镜像以及在创建或启动它时提供给它的任何配置选项定义的。当容器被删除时任何未存储在持久存储中的对其状态的更改都会消失。 容器运行 Docker在隔离的容器中运行进程。容器是在主机上运行的进程。主机可以是本地主机也可以是远程主机。当操作员执行docker run时运行的容器进程是隔离的因为它有自己的文件系统自己的网络和自己独立于主机的隔离进程树。基本的docker run命令如下 docker run [OPTIONS] IMAGE[:TAG|DIGEST] [COMMAND] [ARG…]前台运行和后台运行 当启动Docker容器时你必须首先决定你是想在后台以分离模式运行容器还是在默认的前台模式下运行容器。 要以分离模式启动容器可以使用-dtrue或仅使用-d选项要使用分离的容器进行输入/输出请使用网络连接或共享卷。这些是必需的因为容器不再侦听运行docker的命令行。 docker run -d -p 80:80 my_image nginx -g daemon off;在前台模式下默认模式docker run可以在容器中启动进程并将控制台连接到该进程的标准输入、输出和标准错误。它甚至可以假装是一个TTY并传递信号。以下是在该模式下可以配置的选项 -a[] #附加到 STDIN STDOUT 或 STDERR -t #分配一个伪tty –sig-proxytrue #将接收到的所有信号代理到进程仅限非tty模式 -i #保持STDIN打开即使没有连接如果没有-a选项Docker将默认附加到STDOUT 和STDERR对于交互式进程必须同时使用-i -t-it以便为容器进程分配tty。 容器识别 可以通过以下三种方式识别一个容器 UUID长识别符UUID短识别符名称 UUID标识符来自Docker守护进程。如果您没有使用–name选项分配容器名称那么守护进程将为您生成一个随机字符串名称。定义名称是为容器添加含义的方便方法。如果你指定了一个名称你可以在Docker网络中引用容器时使用它。这适用于后台和前台Docker容器。 重启策略 使用–restart标志你可以指定一个重启策略来决定一个容器在退出时应该或不应该如何重启。 no当容器退出时不要自动重启容器。这是默认值。on-failure[:max-retries]仅当容器以非零退出状态退出时才重新启动。可以选择限制Docker守护进程尝试重新启动的次数always无论退出状态如何始终重新启动容器。容器也总是在守护进程启动时启动。unless-stopped无论退出状态如何总是重新启动容器包括在守护进程启动时除非容器在Docker守护进程停止之前被置于停止状态。 清除 默认情况下即使在容器退出后容器的文件系统仍然存在。这使得调试更容易因为您可以检查最终状态并且默认情况下保留所有数据。但是如果您正在运行短期前台进程这些容器文件系统就会堆积起来。如果你想让Docker在容器退出时自动清理容器并删除文件系统你可以添加–rm标志。 容器日志 docker logs命令用来显示正在运行的容器的日志信息。docker service logs命令用来显示参与服务的所有容器的日志信息。记录的信息和日志格式几乎完全取决于容器的ENDPOINT命令。 数据管理 默认情况下在容器内创建的所有文件都存储在可写容器层上。这意味着: 当容器不再存在时数据不会持久存在并且如果另一个进程需要数据则很难从容器中取出数据。容器的可写层与容器运行的主机紧密耦合。您不能轻易地将数据移到其它地方写入容器的可写层需要一个存储驱动程序来管理文件系统。存储驱动程序使用Linux内核提供了一个联合文件系统。与使用直接写入主机文件系统的数据卷相比这种额外的抽象降低了性能。 Docker提供卷和绑定挂载两种方式将容器内的文件存储到容器主机上这样即使在容器停止后文件也能被持久化。Docker还支持在主机内存中存储文件的容器但这样的文件不会被持久化。 无论选择使用哪种类型的挂载从容器中看到的数据都是一样的。它以目录或容器文件系统中的单个文件的形式公开。 卷挂载 卷是保存由Docker容器生成和使用的数据的首选机制。绑定挂载依赖于主机的目录结构和操作系统卷完全由Docker管理。 当您创建卷时它存储在Docker主机上的一个目录中。当您将卷挂载到容器中时这个目录就是挂载到容器中的目录。这与绑定挂载的工作方式类似不同之处在于卷由Docker管理并且与主机的核心功能隔离。给定的卷可以同时安装到多个容器中。当没有正在运行的容器正在使用卷时卷仍然对Docker可用并且不会自动删除。您可以使用docker volume prune来删除未使用的卷。当您挂载一个卷时它可以是命名的或匿名的。匿名卷被赋予一个随机的名称保证在给定的Docker主机中是唯一的。与命名卷一样即使删除了使用匿名卷的容器匿名卷也会持续存在除非在创建容器时使用–rm标志。Docker会自动移除使用–rm标志创建的容器的匿名卷挂载。 创建和管理卷 与绑定挂载不同您可以在任何容器的作用域之外创建和管理卷。 创建卷 docker volume create my-vol列举卷 docker volume lslocal my-vol检查卷 docker volume inspect my-vol [{Driver: local,Labels: {},Mountpoint: /var/lib/docker/volumes/my-vol/_data,Name: my-vol,Options: {},Scope: local} ]删除卷 docker volume rm my-vol启动带有卷的容器 如果你用一个还不存在的卷启动一个容器Docker会为你创建这个卷。下面的示例将卷myvol2挂载到容器的/app/中。 docker run -d --name devtest --mount sourcemyvol2,target/app \nginx:latest通过Docker Compose使用卷 下面的例子展示了一个带有卷的Docker Compose服务 services:frontend:image: node:ltsvolumes:- myapp:/home/node/app volumes:myapp:第一次运行docker compose up创建一个卷。当您随后运行该命令时Docker会重用相同的卷。您可以使用docker volume create直接在Compose外部创建卷然后在Compose内部引用它。Yaml如下 services:frontend:image: node:ltsvolumes:- myapp:/home/node/app volumes:myapp:external: true使用只读卷 对于一些开发应用程序容器需要写入到绑定挂载中以便更改传播回Docker主机。在其他时候容器只需要读取数据。多个容器可以挂载相同的卷。您可以同时将单个卷挂载为对某些容器的读写而对其他容器则为只读。 docker run -d --namenginxtest --mount sourcenginx-vol,destination/usr/share/nginx/html,readonly \nginx:latest备份、恢复和迁移卷 例如创建一个名为dbstore的新容器 docker run -v /dbdata –name dbstore ubuntu /bin/bash在接下来的命令中 启动一个新容器并从dbstore容器挂载卷挂载本地主机目录为/backup传递一个命令将dbdata卷的内容压缩到/backup目录下的backup.tar文件。 docker run –rm –volumes-from dbstore -v \((pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata使用刚刚创建的备份您可以将其恢复到相同的容器或者在其他地方创建的另一个容器。 例如创建一个名为dbstore2的新容器 docker run -v /dbdata --name dbstore2 ubuntu /bin/bash然后在新容器的数据卷中解压缩备份文件 docker run --rm --volumes-from dbstore2 -v \)(pwd):/backup ubuntu bash -c cd /dbdata tar xvf /backup/backup.tar –strip 1删除容器后Docker数据卷仍然存在。有两种类型的卷需要考虑 命名卷具有来自容器外部的特定源。匿名卷没有特定的来源。因此在删除容器时您可以指示Docker引擎守护进程删除它们。 要自动删除匿名卷使用–rm选项 docker run –rm -v /foo -v awesome:/bar busybox top删除所有未使用的卷并释放空间 docker volume prune绑定挂载 与卷相比绑定挂载的功能有限。使用绑定挂载时主机上的文件或目录将挂载到容器中。文件或目录通过其在主机上的完整路径进行引用。该文件或目录不需要已经存在于Docker主机上。如果它还不存在则按需创建它。绑定挂载速度很快但它们依赖于主机的文件系统具有可用的特定目录结构。如果您正在开发新的Docker应用程序请考虑使用命名卷。并且你不能使用Docker CLI命令直接管理绑定挂载。 用绑定挂载启动一个容器 考虑这样一种情况您有一个目录源代码当您构建源代码时工件被保存到另一个目录source/target/中。您希望工件对位于/app/的容器可用并且您希望每次在开发主机上构建源代码时容器都能访问新的构建。使用以下命令将目标目录绑定到/app/容器中。 docker run -d -it --name devtest --mount typebind,source\((pwd)/target,target/app \nginx:latestDocker Compose使用绑定挂载 一个带有绑定挂载的Docker Compose服务是这样的 services:frontend:image: node:ltsvolumes:- type: bindsource: ./statictarget: /opt/app/static volumes:myapp:使用只读绑定挂载 对于某些开发应用程序容器需要写入绑定挂载以便将更改传播回Docker主机。在其他时候容器只需要读访问。 docker run -d \-it \--name devtest \--mount typebind,source\)(pwd)/target,target/app,readonly \nginx:latesttmpfs挂载 一个tmpfs挂载不会被持久化到磁盘上无论是在Docker主机上还是在容器中。在容器的生命周期内容器可以使用它来存储非持久状态或敏感信息。下面的示例在Nginx容器的/app上创建一个tmpfs挂载 docker run -d -it --name tmptest --mount typetmpfs,destination/app \nginx:latestTMPFS挂载允许以下两个配置选项 选项说明tmpfs-sizempfs挂载大小以字节为单位。默认为无限制。tmpfs-mode用八进制表示的tmpfs文件格式 挂载方式的选取 卷是在Docker容器和服务中持久化数据的首选方式。卷的一些用例包括 在多个正在运行的容器之间共享数据。如果您没有显式地创建它那么卷将在第一次挂载到容器中时被创建。当容器停止或被移除时卷仍然存在。多个容器可以同时挂载同一个卷可以是读写的也可以是只读的。卷只有在显式删除时才会被删除。当Docker主机不能保证具有给定的目录或文件结构时。卷帮助您将Docker主机的配置与容器运行时解耦。当您希望将容器的数据存储在远程主机或云提供商上而不是本地时。当您需要将数据从一个Docker主机备份、恢复或迁移到另一个Docker主机时卷是更好的选择。您可以停止使用卷的容器然后备份卷的目录。当你的应用程序需要在Docker Desktop上的高性能I/O时。卷存储在Linux VM而不是主机中这意味着读写延迟更低吞吐量更高。当您的应用程序需要具有完全本机文件系统行为时。 通常在可能的情况下应该使用卷。绑定挂载适用于以下类型的用例 从主机到容器共享配置文件。这就是Docker在默认情况下为容器提供DNS解析的方式通过将/etc/resolv.conf从主机挂载到每个容器中。在Docker主机和容器上的开发环境之间共享源代码或构建工件。例如您可以将Maven目标/目录挂载到容器中并且每次在Docker主机上构建Maven项目时容器都可以访问重新构建的工件。当Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时。 tmpfs挂载的最佳选取原则 tmpfs挂载最适合于不希望数据在主机上或容器中持久化的情况。这可能是出于安全原因也可能是为了在应用程序需要写入大量非持久性状态数据时保护容器的性能。 挂载过程中文件和目录的默认处理行为 如果将空卷挂载到容器中存在文件或目录的目录中则这些文件或目录将被复制到卷中。类似地如果启动一个容器并指定一个不存在的卷则会为您创建一个空卷。这是预填充另一个容器需要的数据的好方法。如果将绑定挂载或非空卷挂载到容器中存在某些文件或目录的目录中则这些文件或目录将被挂载掩盖掩盖的文件不会被删除或更改但在挂载绑定挂载或卷时无法访问。 网络管理 容器网络是指容器相互连接和通信的能力或者与非docker工作负载进行通信的能力。容器在默认情况下启用了网络连接。容器没有关于它所连接的网络类型的信息或者它们的对等节点是否也是Docker工作负载。容器只能看到一个带有IP地址、网关、路由表、DNS服务和其他网络详细信息的网络接口。 用户自定义网络 您可以创建自定义的网络并将多个容器连接到同一个网络。一旦连接到用户定义的网络容器就可以使用容器IP地址或容器名称相互通信。下面的示例使用bridge网络驱动程序创建一个网络并在创建的网络中运行一个容器 docker network create -d bridge my-net docker run –networkmy-net -itd –namecontainer3 busybox除了用户定义的网络之外您还可以使用–network container:name|id标志格式将一个容器直接附加到另一个容器的网络中。 网络驱动程序 Docker网络子系统提供以下驱动程序 bridge默认的网络驱动程序。如果您没有指定驱动程序这就是您正在创建的网络类型。当应用程序在需要与同一主机上的其他容器通信的容器中运行时通常使用该驱动程序创建网络。host取消容器和Docker主机之间的网络隔离直接使用主机的网络。overlay将多个Docker守护进程连接在一起并使Swarm服务和容器能够跨节点通信。这种策略不需要做操作系统级别的路由。ipvlan提供对IPv4和IPv6寻址的完全控制macvlan允许您为容器分配一个MAC地址使其看起来像网络中的物理设备。Docker守护进程通过容器的MAC地址将流量路由到容器。在处理希望直接连接到物理网络的遗留应用程序时使用macvlan驱动程序有时是最佳选择而不是通过Docker主机的网络堆栈路由。none将容器与主机和其他容器完全隔离。 网络驱动的选取策略如下 默认桥接网络非常适合运行不需要特殊网络功能的容器。用户定义的桥接网络使同一Docker主机上的容器能够相互通信。用户定义的网络通常为属于公共项目或组件的多个容器定义一个隔离的网络。host驱动与容器共享主机的网络。当您使用这个驱动程序时容器的网络不会与主机隔离。当你需要在不同的Docker主机上运行的容器进行通信或者当多个应用程序使用Swarm服务一起工作时overlay驱动网络是最好的。当您从虚拟机设置迁移或需要容器看起来像网络上的物理主机每个容器都有唯一的MAC地址时macvlan网络是最好的。IPvlan类似于Macvlan但不为容器分配唯一的MAC地址。当可以分配给网络接口或端口的MAC地址数量受到限制时请考虑使用IPvlan。 Bridge网络驱动 桥接网络使用软件桥接允许连接到同一桥接网络的容器进行通信同时提供与未连接到该桥接网络的容器的隔离。Docker网桥驱动程序会自动在主机上安装规则这样不同网桥网络上的容器就不能直接相互通信。桥接网络适用于运行在同一Docker守护进程主机上的容器。当你启动Docker时一个默认的桥接网络也称为bridge会自动创建新启动的容器会连接到它除非另有指定。您还可以创建用户定义的自定义桥接网络。自定义网桥网络优于默认网桥网络。用户自定义桥接网络和默认桥接网络的区别如下 用户自定义网桥在容器之间提供自动DNS解析默认网桥网络上的容器只能通过IP地址相互访问在用户定义的桥接网络中容器可以通过名称或别名相互解析。用户定义桥提供更好的隔离所有没有指定–network的容器都连接到默认的桥接网络。用户定义的网络提供了一个限定范围的网络其中只有附加到该网络的容器能够进行通信。可以动态地从用户定义的网络中附加和分离容器在容器的生存期内您可以动态地将其与用户定义的网络连接起来或断开连接。要从默认桥接网络中删除容器需要停止容器并使用不同的网络选项重新创建它。每个用户自定义的网络可单独配置默认网桥也可以配置但所有使用默认网桥的容器都会受到影响而用户自定义的网桥可以单独配置。 Host网络驱动 如果您对容器使用Host网络模式则该容器的网络堆栈不会与Docker主机隔离容器共享主机的网络命名空间并且容器不会获得自己的IP地址分配。例如如果您运行一个绑定到端口80的容器并且您使用Host网络则容器的应用程序在主机IP地址的端口80上可用。Host模式网络可以用于以下用例 优化性能在容器需要处理大量端口额情况下 管理用户自定义网络 创建自定义网络。 docker network create my-net删除自定义网络。 docker network rm my-net连接到自定义网络 #运行容器时可以加入多个网络docker run–name my-nginx --network my-net --publish 8080:80 \nginx:latest#也可以将正在运行的容器加入网络 docker network connect my-net my-nginx断开连接 docker network disconnect my-net my-nginx发布端口 默认情况下当您使用docker create或docker run创建或运行容器时容器不会向外部世界公开其任何端口。使用–publish标志使端口对Docker以外的服务可用。这会在主机中创建一个防火墙规则将容器端口映射到Docker主机上指向外部世界的端口。如果您希望使一个容器可以被其他容器访问则不需要发布容器的端口。您可以通过将容器连接到相同的网络来启用容器间通信。 docker run -p 8080:80 nginxIP地址和主机名 默认情况下容器会为它连接的每个Docker网络获取一个IP地址。容器从网络的IP子网中接收IP地址。Docker守护进程为容器执行动态子网划分和IP地址分配。每个网络也有一个默认的子网掩码和网关。当容器启动时它只能使用–network标志连接到单个网络也可以使用docker network connect命令将正在运行的容器连接到其他网络。在这两种情况下都可以使用–ip标志来指定容器在特定网络上的IP地址。同样在Docker中容器的主机名默认是容器的ID。可以使用–hostname覆盖主机名。当使用docker network connect连接到现有网络时可以使用–alias标志为该网络上的容器指定一个额外的网络别名。