【问题标题】:docker-compose build and updocker-compose 构建和构建
【发布时间】:2019-05-10 13:41:12
【问题描述】:

我不是高级用户,所以请多多包涵。

我正在我的机器上使用 docker-compose -f mydocker-compose-file.yml ... 构建一个 docker 映像。

然后将映像推送到远程 docker 注册表。

然后我从远程服务器拉下这张图片。

运行这个图像;我必须将mydocker-compose-file.yml 从我的机器复制到远程服务器,然后运行docker-compose -f mydocker-compose-file.yml up -d

我发现这非常低效,因为我需要相同的 YAML 文件来运行 docker 映像(应该吗?)。

有没有办法在没有来自远程机器的这个文件的情况下启动容器?

【问题讨论】:

    标签: docker deployment docker-compose


    【解决方案1】:

    compose 1.24 以及 docker 18.09 版本开始(您至少需要远程主机上的客户端版本),您可以通过 SSH 将 docker 命令运行到远程主机。

    # all docker commands in this shell will not talk to the remote host
    export DOCKER_HOST=ssh://user@host
    # you can verify that with docker info to see which engine you're talking to
    docker info
    # and now run your docker-compose up command locally to start/stop containers
    docker-compose up -d
    

    在以前的版本中,您可以配置 TLS 证书以允许特定客户端通过网络连接连接到 docker API。见these docs for more details

    注意,如果您有主机卷,变量和路径将扩展至您的笔记本电脑目录,但主机挂载将发生在这些目录可能不存在的远程服务器上。这是切换到命名卷的好情况。

    【讨论】:

      【解决方案2】:

      您可以使用 Docker Compose 执行的所有操作,都可以使用普通的 docker 命令执行。

      根据您与远程服务器交互的准确程度,您的工具可能具有执行此操作的本地方式。我熟悉的一个具体例子是Ansible docker_container module。如果您已经在使用 Ansible、Chef 或 Salt 之类的工具,您可能可以使用此类工具来执行与 docker-compose.yml 文件相同的操作。

      但除此之外,docker-compose.yml 文件之间或多或少会直接转换

      version: '3'
      services:
        foo:
          image: me/foo:20190510.01
          ports: ['8080:8080']
      

      和命令行

      docker run -d --name foo -p 8080:8080 me/foo:20190510.01
      

      我的经验是docker run 命令很快变得笨拙,你想将它们记录在一个文件中;一旦它们在一个文件中,你就会开始希望它们采用更结构化的格式,即使你需要一个辅助工具来运行它们;这使您回到复制docker-compose.yml 文件。我认为这很正常。 (有些东西需要告诉服务器要运行什么。)

      【讨论】:

      • 我了解这部分,但是当我使用该文件构建映像时,不/不应该拥有运行容器所需的所有东西吗?我认为我的理解有一个流程,但我认为,您使用一组指令(您在 .yml 中声明)构建图像,从那时起您应该只需要执行 docker run -d 。但好像不是这样的?
      • 无法在镜像中设置端口映射、主机卷挂载等设置;他们必须在docker run 命令行上运行,或者由启动容器的任何其他工具设置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      相关资源
      最近更新 更多