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

烟台网站建设方案推广北京网站建设管庄

烟台网站建设方案推广,北京网站建设管庄,做网站西美花街,动态表情包制作软件app系列文章目录 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/780602/

相关文章:

  • 优酷 做视频网站还能成功吗光谷做网站推广哪家好
  • 培训学校网站建设方案网站开发方案设计
  • 网站开发分支结构外贸网站做推广
  • 海南省城乡建设厅网站首页济南网站建设百家号
  • wordpress 图片命名吗北京seo优化哪家公司好
  • 国税网站页面申报撤销怎么做网站空间如何买
  • 简单的购物网站模板跨境建站平台
  • 网站主机多大html网站地图生成
  • 可信赖的邵阳网站建设德清做网站
  • 上传文件网站根目录wordpress博客管理
  • 网站seo优缺点网站建设公司咨
  • 网站设计需要会什么建设网站的目的以及意义
  • 怎么样推广自己的网站wordpress register_form
  • 网站公司建站凤翔网站建设
  • 网站建设协低价格的网站建设公司
  • 研发网站建设报价深圳网站建设前十名
  • 宠物发布网站模板wordpress中文免费电商模板
  • 济南做网站创意服装品牌策划公司
  • 本地电脑做视频网站 外网连接不上软件商城源码
  • 足球直播网站怎么做crm系统介绍
  • 株洲网站建设联系方式东莞凤岗网站制作
  • 小纯洁网站开发如何注册域名
  • 网上做试卷的网站如何把刚做的网站被百度抓取到
  • 滕州网站建wordpress用户中心按钮不弹出
  • 清远新闻最新消息福建seo搜索引擎优化
  • 凡客建站网微信网站怎么做的
  • 网站建设费怎么写会计科目行业网站建设公司
  • 网站里的友情链接网站建设个人简历的网页
  • 佛山自助建站软件湖南seo优化推荐
  • 免费微信微网站模板下载不了优化人员配置