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

网站建设费用分析优化落实新十条措施

网站建设费用分析,优化落实新十条措施,网站扩展名,网站模板 免费系列文章目录 Docker 概述 Docker getting started 文章目录系列文章目录前言一、容器及镜像的概念二、容器化一个应用三、更新应用四、分享应用五、持久化数据存储volume mount 和 bind mount比较Container volumesbind mounts六、跨多容器的应用七、Docker 其它八、Docker 图…系列文章目录 Docker 概述 Docker getting started 文章目录系列文章目录前言一、容器及镜像的概念二、容器化一个应用三、更新应用四、分享应用五、持久化数据存储volume mount 和 bind mount比较Container volumesbind mounts六、跨多容器的应用七、Docker 其它八、Docker 图形化界面显示总结前言 本文主要包含以下内容 将一个应用放在容器中运行介绍持久化数据存储方式Docker图形化界面显示方法 一、容器及镜像的概念 容器 镜像的可运行实例。通过Docker API or CLI可以创建、启动、停止、移动或删除容器。可在本地、虚拟机、云上运行。便捷(可在任意OS上运行)。与其他容器隔离运行独立的软件、二进制文件、配置。 镜像 提供隔离的、定制化的文件系统也包含配置信息、环境变量等。 二、容器化一个应用 git clone https://github.com/docker/getting-started.git建立Dockerfile 用于指示Docker如何创建镜像 Dockerfile # syntaxdocker/dockerfile:1FROM node:18-alpine WORKDIR /app COPY . . RUN yarn install --production CMD [node, src/index.js] EXPOSE 3000建立容器镜像 docker build -t getting-started .docker build命令通过通过 Dockerfile 建立容器镜像。在此过程中Docker下载了许多“layer”。因为是从node:18-alpine开始的又因本地中没有此镜像需要先下载。 下载完成后指令从Docker中拷贝到应用中并通过yarn安装依赖。CMD指令指定从此镜像启动容器时要运行的默认命令。 最后-t表示给镜像打个标签如getting-started 最后的.表示从当前目录找查Dockerfile文件 启动一个应用容器 docker run -dp 3000:3000 getting-started-d detached模式 -p在主机端口3000与容器端口3000之间创建端口映射没有端口映射将无法访问应用 访问应用 http://localhost:3000通过Docker Dashboard可查看运行中的容器 三、更新应用 上章容器化了一个todo应用。本章将更新应用和容器镜像。stop and remove容器。 src/static/js/app.js 修改 ...- p classNametext-centerNo items yet! Add one above!/p p classNametext-centerYou have no todo items yet! Add one above!/p...docker build docker build -t getting-started .停止移除容器 # 查看运行中的容器 docker ps # 停止容器 docker stop the-container-id # 移除容器 docker rm the-container-id # 停止并移除容器 docker rm -f the-container-idstart the updated app container docker run -dp 3000:3000 getting-started四、分享应用 # 登陆Docker Hub docker login -u YOUR-USER-NAME # 添加tag docker tag getting-started YOUR-USER-NAME/getting-started # push docker push YOUR-USER-NAME/getting-started五、持久化数据存储 容器从镜像的“层”中获取该容器的文件系统即便是从统一镜像实例的两个容器也是隔离的两个容器之间的更改不互通。 # 运行容器并执行命令 bash ...... docker run -d ubuntu bash -c shuf -i 1-10000 -n 1 -o /data.txt tail -f /dev/null # 查看运行中的容器 -a 查看所有容器 docker ps # 在容器中执行命令 docker exec container-id cat /data.txt # 然后再run另一个容器次容器中则无data.txt文件volume mount 和 bind mount比较 Named volumesBind mounts共享文件存放在主机的位置由Docker选择用户决定mount示例 (using --mount)typevolume,srcmy-volume,target/usr/local/datatypebind,src/path/to/data,target/usr/local/data用容器内容填充新卷YN支持卷驱动程序YN Container volumes Volumes可将容器中的某一文件系统路经连接至本地主机上。如果在容器总挂载了该目录其变更也在宿主机上可见。如果我们跨容器重新启动装载相同的目录我们将看到相同的文件。 # create volume docker volume create filename # 在run一个镜像时加上volumevolume文件所在的目录就成了volume目录 docker run -dp 3000:3000 --mount typevolume,srctodo-db,target/etc/todos getting-started # rm上面的容器后再用相同的命令即可实现在多个容器中共享数据# docker volume filename 的存放位置 docker volume inspect todo-db [{CreatedAt: 2022-09-26T02:18:36Z,Driver: local,Labels: {},Mountpoint: /var/lib/docker/volumes/todo-db/_data,Name: todo-db,Options: {},Scope: local} ]bind mounts docker run -it --mount typebind,src$(pwd),target/src ubuntu bashsrc为host的目录target为容器的目录 运行此条命令后 host的$(pwd)目录和 容器的/src目录实时同步 在容器中运行宿主机中正在开发的应用 docker run -dp 3000:3000 \-w /app --mount typebind,src$(pwd),target/app \node:18-alpine \sh -c yarn install yarn run devdp 3000:3000 分离模式指定host和容器的端口映射(用于访问app网页)-w /app 设置命令行的工作目录--mount typebind, src$(pwd), target/app bind mount 宿主机目录(“$(pwd)”)和容器目录(/app)node:18-alpine 使用的镜像sh -c yarn install yarn run dev 容器启动后运行的命令。使用sh(node:18-alpine没有bash) 运行 yarn install 安装包然后运行 yarn run dev 启动 该软件。如果查看下 package.jsondev脚本启动了nodemon docker logs -f container-id nodemon src/index.js [nodemon] 2.0.20 [nodemon] to restart at any time, enter rs [nodemon] watching dir(s): *.* [nodemon] starting node src/index.js Using sqlite database at /etc/todos/todo.db Listening on port 3000六、跨多容器的应用 APP放在一个容器中MySQL放在另一个容器中 默认情况下容器与其它容器、进程是隔离的。多个容器之间可通过网络进行通讯同一个网络下的容器才可进行通讯。 创建网络 docker network create app name todo-app启动MySQL容器并将其附着在网络上 docker run -d \--network todo-app --network-alias mysql \-v todo-mysql-data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORDsecret \-e MYSQL_DATABASEtodos \mysql:8.0验证2是否成功 docker exec -it mysql-container-id mysql -u root -pmysql SHOW DATABASES; --------------------| Database |--------------------| information_schema || mysql || performance_schema || sys || todos |--------------------5 rows in set (0.00 sec) mysql exit连接MySQL 启动一个新的容器连接到同一个network 此处用到的image为 nicolaka/netshoot docker run -it --netword netword-file imagenamedP dP dP 88 88 88 88d888b. .d8888b. d8888P .d8888b. 88d888b. .d8888b. .d8888b. d8888P 88 88 88ooood8 88 Y8ooooo. 88 88 88 88 88 88 88 88 88 88. ... 88 88 88 88 88. .88 88. .88 88 dP dP 88888P dP 88888P dP dP 88888P 88888P dP Welcome to Netshoot! (github.com/nicolaka/netshoot) 找到 hostname为 mysql的IP dig mysql; DiG 9.18.11 mysql ;; global options: cmd ;; Got answer: ;; -HEADER- opcode: QUERY, status: NOERROR, id: 38459 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION: ;mysql. IN A;; ANSWER SECTION: mysql. 600 IN A 172.18.0.2;; Query time: 3 msec ;; SERVER: 127.0.0.11#53(127.0.0.11) (UDP) ;; WHEN: Tue Feb 14 13:52:52 UTC 2023 ;; MSG SIZE rcvd: 44 其中mysql不仅仅是一个有效的hostnameDocker还会把他解析成IP地址即--network-alias mysql与该IP有映射关系。 也就是说应用只需要连接到hostname为 mysql 的容器即可实现容器间通讯。 将APP连接到MySQL 在/app目录下 docker run -dp 3000:3000 \-w /app -v $(pwd):/app \--network todo-app \-e MYSQL_HOSTmysql \-e MYSQL_USERroot \-e MYSQL_PASSWORDsecret \-e MYSQL_DBtodos \node:18-alpine \sh -c yarn install yarn run dev查看进度 docker logs -f container-id 查看数据库 docker exec -it mysql-container-id mysql -p todosmysql select * from todo_items; ------------------------------------------------------- | id | name | completed | ------------------------------------------------------- | f207cb07-c947-4d37-aef0-4b0dc50044d5 | abc | 0 | | d1e7dc53-fb06-4001-96a5-a5dc142e90ba | dev | 1 | | 8279b8a3-383b-4be4-bd4b-002a1111b44e | sdf | 0 | ------------------------------------------------------- 3 rows in set (0.01 sec) 七、Docker 其它 检查是否安装了Docker 组件 docker compose versionDocker 组件可帮助快速构建跨容器的应用配置好后只需一条命令即可其多多容器应用。 其它 # 扫描docker 镜像的漏洞 docker scan image-name# 查看镜像的layers docker image history image-name# 通过Layer caching加速镜像的构建等八、Docker 图形化界面显示 把docker镜像看做一台没配显示器的电脑程序可以运行但是没地方显示。 而linux目前的主流图像界面服务X11又支持客户端/服务端Client/Server的工作模式。 只要在容器启动的时候将『unix:端口』或『主机名:端口』共享给dockerdocker就可以通过端口找到显示输出的地方和linux系统共用显示。 # 安装x11界面服务 apt-get install x11-xserver-utils # 为所有用户开放权限 xhost # 在启动容器 docker run -it \-v /tmp/.x11-unix:/tmp/.x11-unix \-e DISPLAYunix$DISPLAY -e GDK_SCALE \-e GDK_DPI_SCALE --nethost ubuntu /bin/bash然后安装个小程序测试是否成功 # apt-get update apt-get install xarclock xarclock总结 #mermaid-svg-sQUfy7FXVrz2Sh3G {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sQUfy7FXVrz2Sh3G .error-icon{fill:#552222;}#mermaid-svg-sQUfy7FXVrz2Sh3G .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sQUfy7FXVrz2Sh3G .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-sQUfy7FXVrz2Sh3G .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sQUfy7FXVrz2Sh3G .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sQUfy7FXVrz2Sh3G .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sQUfy7FXVrz2Sh3G .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sQUfy7FXVrz2Sh3G .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sQUfy7FXVrz2Sh3G .marker.cross{stroke:#333333;}#mermaid-svg-sQUfy7FXVrz2Sh3G svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sQUfy7FXVrz2Sh3G .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-sQUfy7FXVrz2Sh3G .cluster-label text{fill:#333;}#mermaid-svg-sQUfy7FXVrz2Sh3G .cluster-label span{color:#333;}#mermaid-svg-sQUfy7FXVrz2Sh3G .label text,#mermaid-svg-sQUfy7FXVrz2Sh3G span{fill:#333;color:#333;}#mermaid-svg-sQUfy7FXVrz2Sh3G .node rect,#mermaid-svg-sQUfy7FXVrz2Sh3G .node circle,#mermaid-svg-sQUfy7FXVrz2Sh3G .node ellipse,#mermaid-svg-sQUfy7FXVrz2Sh3G .node polygon,#mermaid-svg-sQUfy7FXVrz2Sh3G .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sQUfy7FXVrz2Sh3G .node .label{text-align:center;}#mermaid-svg-sQUfy7FXVrz2Sh3G .node.clickable{cursor:pointer;}#mermaid-svg-sQUfy7FXVrz2Sh3G .arrowheadPath{fill:#333333;}#mermaid-svg-sQUfy7FXVrz2Sh3G .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-sQUfy7FXVrz2Sh3G .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-sQUfy7FXVrz2Sh3G .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-sQUfy7FXVrz2Sh3G .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-sQUfy7FXVrz2Sh3G .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-sQUfy7FXVrz2Sh3G .cluster text{fill:#333;}#mermaid-svg-sQUfy7FXVrz2Sh3G .cluster span{color:#333;}#mermaid-svg-sQUfy7FXVrz2Sh3G div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-sQUfy7FXVrz2Sh3G :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}buildrunstart, stop, rmregistryimage容器#mermaid-svg-ASkBHMhtwt5ZxTZQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .error-icon{fill:#552222;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .marker.cross{stroke:#333333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .cluster-label text{fill:#333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .cluster-label span{color:#333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .label text,#mermaid-svg-ASkBHMhtwt5ZxTZQ span{fill:#333;color:#333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .node rect,#mermaid-svg-ASkBHMhtwt5ZxTZQ .node circle,#mermaid-svg-ASkBHMhtwt5ZxTZQ .node ellipse,#mermaid-svg-ASkBHMhtwt5ZxTZQ .node polygon,#mermaid-svg-ASkBHMhtwt5ZxTZQ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .node .label{text-align:center;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .node.clickable{cursor:pointer;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .arrowheadPath{fill:#333333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .cluster text{fill:#333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ .cluster span{color:#333;}#mermaid-svg-ASkBHMhtwt5ZxTZQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ASkBHMhtwt5ZxTZQ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}本地电脑volume, bind容器容器容器network容器
http://www.w-s-a.com/news/256618/

相关文章:

  • 做网站PAAS系统外链是什么意思
  • 网页设计专业设计课程googleseo排名公司
  • 网站百度百科那些免费网站可以做国外贸易
  • 做视频的网站有哪些南京计算机培训机构哪个最好
  • ppt做视频 模板下载网站商业街网站建设方案
  • 佛山网站定制开发星光影视园网站建设案例
  • wordpress子站点商务网页设计与制作微课版答案
  • 山东省住房城乡和建设厅网站软件开发主要几个步骤
  • 可以接项目做的网站网站源码php
  • 杭州广众建设工程有限公司网站网页游戏人气排行榜
  • 上海网站开发建设最简单的网站代码
  • 东莞做网站建设免费网站建设案例
  • 莱州建设局网站wordpress的主题下载地址
  • 二级网站域名长沙企业关键词优化服务质量
  • 在家有电脑怎么做网站wordpress 入门主题
  • 什邡建设局网站sem推广是什么意思
  • 西安分类信息网站网站敏感关键词
  • 黑彩网站怎么做建设网站费用分析
  • 网站关键词选取的步骤和方法小程序商城哪家好排行榜
  • 儿童产品网站建设网站建设优化排名推广
  • 做网站的硬件无锡招标网官方网站
  • 做推送好用的网站合肥网站推广培训
  • 网站开发团队简介贵阳双龙区建设局网站
  • 新乡做网站公司哪家好wordpress侧边栏文件
  • 小白建站怎么撤销网站备案
  • 哪个网站做调查问卷赚钱短视频制作神器
  • 上海企业响应式网站建设推荐汕头网络优化排名
  • 怎么建立公司网站平台怎么将网站做成公司官网
  • 培训学校网站怎样快速建设网站模板
  • 建设电子商务网站论文云服务器安装wordpress