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

全能网站建设完全自学手册青岛网站建设铭盛信息

全能网站建设完全自学手册,青岛网站建设铭盛信息,大型网站搜索怎么做的,如何做微信网站目录 1、docker 的基础概念 2、怎样打包和运行一个应用程序#xff1f; 3、如何对 docker 中的应用程序进行修改#xff1f; 4、如何对创建的镜像进行共享#xff1f; 5、如何使用 volumes 名称对容器中的数据进行存储#xff1f;// 数据挂载 6、另一种挂载方式…目录 1、docker 的基础概念 2、怎样打包和运行一个应用程序 3、如何对 docker 中的应用程序进行修改 4、如何对创建的镜像进行共享 5、如何使用 volumes 名称对容器中的数据进行存储// 数据挂载 6、另一种挂载方式目录挂载 7、实现容器之间的相互通信 8、使用 Docker Compose 简化多个容器之间的共享操作 1、docker 的基础概念 什么是容器 官方解释是docker 容器是机器上的沙盒进程它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程所谓的容器化其实也只是对操作系统进行欺骗的一种语法糖。 什么是容器镜像 容器运行的依赖文件就是镜像通过镜像可以创建多个容器。 2、怎样打包和运行一个应用程序 1获取程序源文件 准备需要安装 git使用 git 拉取远程代码到本地。 下边程序是一个 docker 官方的示例 git clone https://github.com/docker/getting-started.git 2创建容器镜像 创建容器镜像需要用到 Dockerfile 文件。Dockerfile 只是一个基于文本的文件没有文件扩展名。Dockerfile 中包含 Docker 用来创建容器映像的指令脚本。 创建 Dockerfile 文件在下载的 getting-started 项目中创建空的 Dockerfile 文件注意该文件没有任何文件格式 填充 Dockerfile 文件内容如下关于 Dockerfile 文件的编写后续会有专门的介绍这里只需要知道创建容器镜像需要使用到 Dockerfile 文件即可 # syntaxdocker/dockerfile:1 FROM node:18-alpine WORKDIR /app COPY . . RUN yarn install --production CMD [node, src/index.js] EXPOSE 3000 在 Dockerfile 文件的当前目录下app 目录下通过 docker build 命令创建容器镜像 docker build -t getting-started . -t 表示镜像的 tags这里的标签名称为 getting-started. 表示 docker build 命令从当前文件夹下寻找 Dockerfile 文件 3启动运行容器         创建镜像成功后使用 docker images 命令就可以在系统中查看到创建的镜像了。查看镜像后使用 docker run 命令运行创建的镜像文件 docker run -dp 3000:3000 getting-started -d 表示在后台运行容器-p 表示创建容器和本机的端口映射端口映射是必须的不然无法对容器中的程序进行访问。// 有人也说容器是一个虚拟机这样想似乎能更好的解释端口映射 访问 http://localhost:3000/ 出现以下界面说明容器启动成功 3、如何对 docker 中的应用程序进行修改 如果我们修改了应用程序要使修改生效就需要重新创建镜像文件重复文章第二节中的过程。需要注意的是为避免端口冲突应该先停止正在运行的容器。以下是操作容器的一些命令 docker ps 可以获取到容器的id docker stop the-container-id 通过id停止一个容器 docker rm the-container-id 容器停止后删除一个容器 docker rm -f the-container-id -f 即force表示强制删除 4、如何对创建的镜像进行共享 1创建一个远程仓库 如果没有 Docker ID可以在 Docker Hub 上注册用户然后使用 Docker Hub 创建远程仓库。创建远程仓库的步骤在官方文档中有详细介绍文档链接地址在文章最后大致与 git 创建远程仓库然后推送代码的过程相似。  2把镜像推送到远程仓库 把镜像推送到远程仓库后其他人就可以下载到你的镜像了常用的命令如下 docker push YOUR-USER-NAME/getting-started:tagname // 推送镜像 docker tag getting-started YOUR-USER-NAME/getting-started //给镜像打标签 docker push YOUR-USER-NAME/getting-started // 拉取镜像5、如何使用 volumes 名称对容器中的数据进行存储// 数据挂载 每次启动容器时之前容器更新的数据都会被清除。这是因为每个容器都有自己“独立的空间”来创建/更新/删除文件。这些更改都不会在另一个容器中看到即使它们使用的是相同的镜像。// 容器是相互隔离的 解决上述问题的思路使用 volumes 对数据进行存储。 通过 volumes 可以将容器中的具体文件系统路径挂载到主机。如果容器中的一个目录被挂载那么在主机上也会看到该目录中的更改。如果我们在容器重新启动时挂载同一个目录我们将看到相同的文件。// docker 提供了两种挂载方式数据挂载和目录挂载 1使用 docker volume create 命令创建 volumetodo-db 为 volume 的名称 docker volume create todo-db 2使用 volume 名称进行挂载/etc/todos 路径下的所有更改都会同步到 volume 中使用同一个 volume 的其他容器也能够看到相同的信息 // 默认情况下todo 应用程序将其数据存储在 SQLite 数据库中的 /etc/todos/todo.db 文件中 docker run -dp 3000:3000 --mount typevolume,srctodo-db,target/etc/todos getting-started 那么当我们创建容器卷volume后容器中的文件具体保存在物理机的哪个地方呢使用 docker volume inspect 命令查看容器卷的详细信息 $ docker volume inspect todo-db [{CreatedAt: 2023-02-07T01:34:40Z,Driver: local,Labels: {},Mountpoint: /var/lib/docker/volumes/todo-db/_data,Name: todo-db,Options: {},Scope: local} ] Mountpoint 就是文件在磁盘上的具体存储路径自动生成的但是在大多数计算机上这个路径需要具有根访问权限才能从主机访问此目录。// windows 系统也是这个路径这个路径在 win 系统上不能直接访问因此会比较麻烦 6、另一种挂载方式目录挂载 目录挂载允许将主机文件系统中的一个目录共享到容器中。以下是目录挂载和容器卷挂载的区别 命名卷volume绑定挂载目录挂载主机存储位置Docker 选择自定义绑定示例 typevolume, srcmy-volume,target/usr/local/data typebind, src/path/to/data,target/usr/local/data 用容器内容填充新卷是否支持volume驱动程序是否示例在目录 getting-started/app 输入如下命令win注意使用的是 PowerShell 而不是 cmd 命令启用的黑窗口如果仍然报错可以使用编辑工具把以下命令编辑成一行 docker run -dp 3000:3000 -w /app --mount typebind,src$(pwd),target/app node:18-alpine sh -c yarn install yarn run dev -dp 3000:3000 端口映射-w /app 设置工作目录或命令运行的当前目录--mount typebind,src$(pwd),target/app 把主机的当前目录绑定到容器中的 /app 目录node:18-alpine 程序运行需要依赖的基础镜像在上文 DockerFile 中也有写sh -c yarn install yarn run dev 使用 sh 运行 shell使用 yarn install 安装依赖包使用 yarn run dev 启动一个服务dev 脚本定义在 getting-started\app\package.json 文件中它会启动 nodemonnodemon 是一个工具当程序有改动时nodemon 程序用来自动重启容器。当然我们也可以用第二节提到的步骤对程序进行打包然后重新启动。 容器启动后使用如下命令查看 docker 的运行日志 docker logs -f container-id 7、实现容器之间的相互通信 默认情况下docker 之间是相互独立的彼此之间相互隔离那么怎么样让相互隔离的两个容器进行通信呢// 比如部署应用程序的 docker 和部署数据库的 docker 之间进行通信 答案是在 docker 之间建立通信网络在同一个通信网络的不同容器之间可以进行相互通信。一般将容器放到一个网络中有两种方法1、在启动容器时进行分配2、连接到已有的容器的网络。下边将分别使用到这两种方式。// 每一节的案例都需要关闭之前启动的容器避免端口冲突 1创建一个通信网络 docker network create todo-app 2启动一个 mysql 容器并连接到 todo-app 网络win PowerShell 版 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 --network-alias 指定运行容器的别名使用别名替换掉具体的 ip更方便在网络中查找容器-v todo-mysql-data:/var/lib/mysql 该命令会自动创建容器卷 todo-mysql-data然后存储mysql中的数据库数据/var/lib/mysql 为数据库存储数据的路径为了查看数据库容器是否已经启动可以尝试进入容器进行查看// 密码是 secret脚本中有指定 docker ps // 查看正在运行中的容器 docker exec -it mysql-container-id mysql -u root -p 如果输入密码可进行登录说明数据库已经启动了尝试以下命令验证 mysql 正常 mysql SHOW DATABASES; mysql exit; 那么当 mysql 启动后怎样找到这个容器呢答案是使用一个  nicolaka/netshoot 的网络工具。首先我们通过 docker 来安装这个工具 docker run -it --network todo-app nicolaka/netshoot 安装完后就可以使用这个 DNS 工具了。//下边的 mysql 就是启动容器时指定的别名 dig mysql/容器id 然后就能看到 mysql 容器的相关网络信息 我们看到 mysql 容器的 ip 为 172.19.0.2todo-app 网络中的地址一般来说我们仅仅通过 mysql 别名就可以定位到这个地址了而不需要显示去指定它。 3启动应用程序容器并连接到 mysql 容器 todo 应用程序支持设置一些环境变量来指定 MySQL 连接设置 MYSQL_HOST - MySQL server 主机名称MYSQL_USER - 数据库连接用户MYSQL_PASSWORD - 数据库连接密码MYSQL_DB - 连接的 mysql 的具体数据库在 getting-started\app 目录下运行以下命令win PowerShell 版 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 的启动日志了 此时我们再打开程序http://localhost:3000/往项目中添加 items然后进入到数据库容器就可以查看到刚才添加的数据了 docker exec -it mysql-container-id mysql -p todos //进入数据库容器 select * from todo_items; // 查看表中数据 至此我们就实现了两个容器之间的相互通信。 8、使用 Docker Compose 简化多个容器之间的共享操作 Docker Compose 用于帮助定义和共享多容器中的应用程序。通过 Compose我们可以创建一个 YAML 文件来定义服务并通过一个命令就可以启动或停止所有服务。 1安装  Docker Compose 如果在 win 环境安装了 Docker Desktop那么默认情况下就已经安装了 Docker Compose如果是 linux 环境那么需要单独进行安装安装教程点击这里。安装完后可以查看该工具的版本 docker compose version 2编写 Compose file 文件 在 getting-started\app 目录下创建一个 docker-compose.yml 文件 然后在 docker-compose.yml 文件中填充以下内容// 文档的具体编写参照文末的文档这里只介绍大致步骤 services:app:image: node:18-alpinecommand: sh -c yarn install yarn run devports:- 3000:3000working_dir: /appvolumes:- ./:/appenvironment:MYSQL_HOST: mysqlMYSQL_USER: rootMYSQL_PASSWORD: secretMYSQL_DB: todosmysql:image: mysql:8.0volumes:- todo-mysql-data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: secretMYSQL_DATABASE: todosvolumes:todo-mysql-data: 3批量启动容器 在 getting-started\app 目录下执行以下命令-d 表示后台启动 docker compose up -d 然后你会看到如下输出信息 信息中显示容器卷和通信网络都被创建了默认情况下Docker Compose 会自动为应用程序堆栈创建一个网络这就是为什么我们不需要在 Compose 文件中定义一个网络的原因。 至此所有的容器就都成功启动了如果你安装了 Docker Desktop你将看到以下界面 4批量关闭和移除容器 使用以下命令可以批量关闭和移除容器 docker compose down 需要注意的是以上命令并不会删除创建的容器卷删除容器卷需要使用单独的命令来操作。 参考文档Overview | Docker Documentation
http://www.dnsts.com.cn/news/121837.html

相关文章:

  • 住房和城乡建设部网站第九批文山网站建设联系电话
  • 网站建设选哪个公司朋友说做网站什么的怎么赚钱
  • 网站模版制作jsp网站怎么做邮箱验证码
  • 网站空间2G一年多少钱宝安网站制作培训
  • 网站开发图片加载过慢如何优化做我的世界壁纸网站
  • 网站建设 需求调研有那些网站做平面设计订单
  • 网站开发工作流程每天稳定赚50以上的手游
  • 网站规划的基本内容不包括市场营销案例分析
  • 工厂的网站在哪里做的wordpress手机验证码登录
  • 网站建设合作签约报道开车网址来一个
  • 学做各种糕点的网站邯郸房产网签查询系统
  • 网站建设一般报价多少个人接单做网站的平台
  • 鞍山新款网站制作哪家好百度免费发布信息网站
  • 建设网站 证件富蕴县建设局网站
  • 镇江网站建设活动方案xampp下安装wordpress
  • 做关于星空的网站什么是网络营销最基本最重要的工具
  • 网站域名的分类seo网站关键词优化
  • 给个网站急急急202怎么用html做网站
  • 友链交换网站平面设计创意说明
  • 织梦微电影分享网站织梦整站源码网页用什么软件制作
  • 工业网站开发商西安企业网站设计制作
  • 标识设计公司网站开发一个网站做公司内部用
  • wordpress改企业网站网站后台上传图片做难吗
  • 如何备份网站程序吗网站建设全包广州
  • 优化大师使用心得沈阳seo团队
  • 满屏网站做多大尺寸快要到期的域名网站
  • 建立网站的步骤是什么安卓是哪里开发的
  • 怎么做交易网站青蛙网站建设
  • 长春网站建长春做网站天津建设工程信息网几点更新
  • 做结婚请柬网站有那些wordpress 畅言