千家信息网

怎么用docker创建app

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,本篇内容主要讲解"怎么用docker创建app",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用docker创建app"吧!docker-app 将do
千家信息网最后更新 2024年11月11日怎么用docker创建app

本篇内容主要讲解"怎么用docker创建app",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用docker创建app"吧!

docker-app 将docker容器编排为一个bundle,命名为 application 应用程序。希望将一组docker容器打包为一个应用程序进行分发。

启用app插件

app 是一个体验特性,默认不会启用,最低版本为 19.03 ,因此首先要确保docker引擎不低于此版本。

编辑 ~/.docker/config.json ,增加:

{  "experimental": "enabled",  "debug": true}

检查:

docker...app*        Docker Application (Docker Inc., v0.8.0)builder     Manage buildsbuildx*     Build with BuildKit (Docker Inc., v0.3.1-tp-docker)checkpoint  Manage checkpoints...

标记 * 的指令为体验特性指令。

# docker app versionVersion:               v0.8.0Git commit:            7eea32bBuilt:                 Wed Nov 13 07:28:05 2019OS/Arch:               linux/amd64Experimental:          offRenderers:             noneInvocation Base Image: docker/cnab-app-base:v0.8.0

创建app

在当前工作目录初始化一个docker应用程序。

# docker app init myapp# tree ..└── myapp.dockerapp    ├── docker-compose.yml    ├── metadata.yml    └── parameters.yml1 directory, 3 files

默认地,会在工作目录创建一个项目目录,其中包含了三个文件:

docker-compose.yml 服务的编排文件metadata.yml 项目的基本配置文件parameters.yml 服务compose引用的变量

创建单文件项目:众做周知,分发一个目录比分发单个文件要麻烦的多,因此docker-app 支持将应用程序的项目文件整合为一个独立的文件。

# docker app init demo --single-file# ll-rw-r--r--. 1 root root 508 Dec  2 07:13 demo.dockerapp

项目文件并不是创建后就不可更改了,你随时可以将目录格式的应用转换为单文件:

docker app merge myapp

反过来讲单文件项目转换为目录格式:

docker app split myapp

编辑服务

vi myapp.dockerapp/docker-compose.yml

version: "3.6"services: {  "nginx": {    "image": "nginx"  }}

安装app

  • app 需要在swarm环境中运行,最简单的测试环境就是在一个单机环境执行:docker swarm init --advertise-addr=你的IP地址

# docker app install myapp# docker service lsID                  NAME                MODE                REPLICAS            IMAGE               PORTSi2ceu8f82bsh        myapp_nginx         replicated          1/1                 nginx:latest# docker app lsINSTALLATION APPLICATION   LAST ACTION RESULT  CREATED   MODIFIED  REFERENCEmyapp        myapp (0.1.0) install     success 6 seconds 4 seconds

查看服务

使用render 子命令可以查看docker应用的服务编排:

# docker app render myappversion: "3.6"services:  nginx:    deploy:      replicas: 2    image: nginx

如果myapp 项目文件不在当前目录,和镜像一样,docker引擎会首先去中央仓库拉取。

使用参数

修改parameters.json 文件:

"DEPLOY_REPLICAS": 5

修改docker-compose引用该变量:

version: "3.6"services: {  "nginx": {    "image": "nginx",    "deploy": {      "replicas": "${DEPLOY_REPLICAS}"    }  }}

查看服务:

# docker app render myappversion: "3.6"services:  nginx:    deploy:      replicas: 5    image: nginx

多级变量:参数配置文件是yaml格式,很容易想到 -- 可以使用多级参数名,这样就可以对不同的变量进行分组。

deploy:  replicas: 2

对应的compose中:

"replicas": "${deploy.replicas}"
  • image 中不允许使用变量。

更新app

  • upgrade 只能更新变量里的值。

  • upgrade 不会重新加载app的配置文件,只能通过 --set-s 传入变量的键值。

执行更新:

# docker app upgrade myapp -s DEPLOY_REPLICAS=2Updating service myapp_nginx (id: t9n7hcic2ek42qhn35kyfh3lj)Application "myapp" upgraded on context "default"# docker service lsID                  NAME                MODE                REPLICAS            IMAGE               PORTSud4sms7cx9yx        myapp_nginx         replicated          2/2                 nginx:latest

删除应用

docker app uninstall myapp

发布应用

docker login 192.168.33.10:5000docker app push myapp
  • login成功

  • 修改了metadata中的name: 192.168.33.10:5000/library/myapp

  • 已经配置了insecure-registries.

但是失败了:

# docker app push myapp192.168.33.10:5000/library/myapp:0.1.0-invocfixing up "192.168.33.10:5000/library/myapp:0.1.0" for push: failed to resolve "192.168.33.10:5000/library/myapp:0.1.0-invoc", push the image to the registry before pushing the bundle: failed to do request: Head https://192.168.33.10:5000/v2/library/myapp/manifests/0.1.0-invoc: http: server gave HTTP response to HTTPS client
  • 看起来还是找https,insecure-registries 没有效果。

尝试不修改metadata中的name,在命令行中使用tag参数:

# docker app push myapp -t 192.168.33.10:5000/library/myapp192.168.33.10:5000/library/myapp:latest-invocfixing up "192.168.33.10:5000/library/myapp:latest" for push: failed to resolve "192.168.33.10:5000/library/myapp:latest-invoc", push the image to the registry before pushing the bundle: failed to do request: Head https://192.168.33.10:5000/v2/library/myapp/manifests/latest-invoc: http: server gave HTTP response to HTTPS client

- 可以在docker images中看到指定tag的镜像,但是push还是失败

使用https协议的仓库,仍然失败。

对于私服,暂时没办法解决,官网文档不多。

常用推送到中央仓库,通过:

docker app push myapp -t pollyduan/myapp

红蓝日志闪烁,看起来正常了。但结局还是残酷的:

fixing up "docker.io/pollyduan/myapp:latest" for push: failed commit on ref "manifest-sha256:f5dc44557f1d666381791c3d01300d64899ba7b74dc26f4d681bd1827caf61ca": no response

登录hub.docker.com查看,镜像存在了。

到此,相信大家对"怎么用docker创建app"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

文件 应用 变量 目录 项目 服务 参数 应用程序 程序 配置 仓库 格式 环境 还是 镜像 更新 中央 内容 命令 容器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 基岩版服务器如何开启实验模式 服务器上的数据连接不上 数据库创建表非空 主键 spring多数据库事务 常用的关系型数据库开发平台 kis数据库未启动 服务器安全狗那里改端口 暨南大学计算机网络技术 大连纳税人管理服务器地址 服务器计划任务管理 苹果笔记本怎么才能找到服务器 湖南好优选网络技术有限公司 适配器 数据库连接 哪个部门负责管理域名服务器 我的世界基岩版开云服务器 想找软件开发的简职 中国碳核算数据库的数据要钱吗 数据库系统如何选型 无锡可视化智慧学校软件开发 芜湖管理软件开发公司 line服务器无响应怎么回事 万得数据库在哪查网络零售 IT指的是数据库技术 上海回收服务器 海南中国移动dns服务器云主机 魔兽世界风暴之眼服务器角色 强大的数据库备份工具 山东学业水平网络技术题库 河南软件开发者有哪些网站 u8服务器管理怎么删除
0