千家信息网

怎么用docker创建app

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"怎么用docker创建app",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用docker创建app"吧!docker-app 将do
千家信息网最后更新 2026年11月01日怎么用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安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 互联网 科技公司 互联网医疗科技 碳银互联网科技有限公司 伴你行互联网科技有限公司 互联网科技公司有哪些 中正互联网科技招聘 海南购全球互联网科技 成都仁贤领冠互联网科技有限公司 贵州叶脉互联网科技有限公司所属行业 互联网科技创新服务 成都铂石互联网科技做什么的 千方科技属于互联网企业吗 消费医药和互联网科技 华中科技大学互联网的牛人 全球科技与互联网公司市值变化 普陀区互联网教育科技管理办法 悟空问答互联网科技 安徽零酒互联网科技有限公司 现代科技的标志之一的互联网 深圳市人人互联网科技有限公司 为想互联网科技怎么样 互联网科技保险 腾讯阿里互联网科技 互联网未来科技 中国互联网科技发展 互联网科技革命 济南小医互联网科技有限公司招聘 杭州融税互联网科技有限公司 互联网领先科技成果宣传视频
0