Maison  >  Article  >  développement back-end  >  Comment exécuter des volumes de montage Docker à l'aide du SDK Docker Engine et de Golang

Comment exécuter des volumes de montage Docker à l'aide du SDK Docker Engine et de Golang

PHPz
PHPzavant
2024-02-09 15:24:08914parcourir

如何使用 Docker 引擎 SDK 和 Golang 运行 docker 安装卷

L'éditeur php Xigua vous présentera aujourd'hui comment utiliser le SDK du moteur Docker et Golang pour exécuter le volume d'installation de Docker. Docker est une plate-forme de conteneurisation populaire et le SDK Docker Engine est une bibliothèque d'API permettant d'interagir avec Docker Engine. Golang est un langage de programmation puissant qui peut être utilisé conjointement avec le SDK Docker Engine pour obtenir une gestion des conteneurs plus flexible. Cet article présentera en détail comment utiliser le SDK du moteur Docker et Golang pour créer, gérer et exécuter des volumes d'installation Docker, vous permettant ainsi de mieux utiliser Docker pour le développement et le déploiement d'applications. commençons!

Contenu de la question

Je consulte la documentation du SDK du moteur Docker (https://docs.docker.com/engine/api/sdk/) relative à l'exécution de Docker avec Golang Je souhaite exécuter un conteneur (bien documenté) mais je ne trouve pas comment monter un volume lors de l'exécution du conteneur.

Mon idée est d'utiliser le SDK Docker pour exécuter la commande équivalente : docker 运行 -v $PWD:/tmp myimage Mais la bibliothèque Golang os exec n'est pas exécutée.

Est-ce possible ?

Solution de contournement

La section exemples contient la plupart de ce dont vous avez besoin :

https://docs.docker.com/engine/api/sdk/examples/#run-a-container

C’est important de se rappeler docker run ... C’est un peu des deux

  1. Créer un conteneur
  2. Démarrer un conteneur

Abréviation de docker run -v docker run --mount type=bind,source="$(pwd)"/target,target=/app

    resp, err := cli.containercreate(ctx, &container.config{
        image: "alpine",
        cmd:   []string{"echo", "hello world",},
      },
      &container.hostconfig{
        mounts: []mount.mount{
          {
             type: mount.typebind,
             source: "/local/dir",
             target: "/app",
          },
        },
     },
     nil,
     "",
   )

Si vous ne voulez qu'un seul fichier

    resp, err := cli.ContainerCreate(ctx, &container.Config{
        Image: "alpine",
        Cmd:   []string{"echo", "hello world",},
      },
      &container.HostConfig{
        Binds: []string{
          "/local/dir/file.txt:/app/file.txt",
        },
      },
      nil,
      "",
   )

Connexe :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer