• vagrant特性——基于docker开发环境(docker和vagrant的结合)-2-命令


    Docker Commands

    Docker provider公开了一些额外的vagrant命令,这些命令对于与Docker容器交互非常有用。这有助于你在vagrant之上的工作流程,这样你就可以在底层完全访问Docker。

    1.docker-exec

    userdeMBP:~ user$ vagrant docker-exec -h
    Usage: vagrant docker-exec [options] [name] -- <command> [args]
    
    Options:
    
            --[no-]detach                Run in the background 在后台运行
        -i, --[no-]interactive           Keep STDIN open even if not attached  即使没有连接,也要保持STDIN输入打开
        -t, --[no-]tty                   Allocate a pty 分配一个pty
        -u, --user USER                  User or UID  用户或其ID
            --[no-]prefix                Prefix output with machine names 带有机器名称的前缀输出
        -h, --help                       Print this help 打印帮助信息

    vagrant docker-exec命令可用于对当前正在运行的Docker容器运行一次性命令。如果容器没有运行,将返回一个错误。

    $ vagrant docker-exec app -- rake db:migrate

    上面例子将在app容器的上下文运行 rake db:migrate命令
    ⚠️请注意,“name”对应的是VM的名称,而不是Docker容器的名称。

    考虑以下Vagrantfile文件:

    Vagrant.configure(2) do |config|
      config.vm.provider "docker" do |d|
        d.image = "consul"
      end
    end

    这个Vagrantfile将启动官方Docker的consul镜像。然后,docker-exec进入到这个实例的相关vagrant命令是:

    $ vagrant docker-exec -it -- /bin/sh

    具体来说,该命令实际上是:

    $ vagrant docker-exec default -it -- /bin/sh

    因为“default”是第一个定义的VM的默认名称。在如下所示的多机vagrant设置中,“name”属性对应的是VM的名称(即web/consul),而不是容器的名称(nginx/consul):

    Vagrant.configure do |config|
      config.vm.define "web" do
        config.vm.provider "docker" do |d|
          d.image = "nginx"
        end
      end
    
      config.vm.define "consul" do
        config.vm.provider "docker" do |d|
          d.image = "consul"
        end
      end
    end

    下面的命令是无效的,因为nginx是镜像的名称:

    # Not valid
    $ vagrant docker-exec -it nginx -- /bin/sh

     因为VM的“name”是“web”,所以命令实际上应该是:

    $ vagrant docker-exec -it web -- /bin/sh

    因此,建议将VM命名为与容器相同的名称。在上面的例子中,进入consul容器的命令是:

    $ vagrant docker-exec -it consul -- /bin/sh


    2.docker-logs

    vagrant docker-logs命令可以用来查看正在运行的容器的日志。因为大多数Docker容器都是单进程的,所以它用于查看该进程的日志。此外,还可以对日志进行跟踪。

    3.docker-run

    vagrant docker-run命令可用于对Docker容器运行一次性命令。已启动的一次性Docker容器共享原始Docker容器的所有卷、链接等。

    ⚠️与docker-exec不同在于docker-run启动的容器也是一次性的,运行完命令后就会关闭

    一个例子如下:

    $ vagrant docker-run app -- rake db:migrate

    上面的例子将会在app容器的上下文中运行rake db:migrate命令

  • 相关阅读:
    C# Server.Transfer传值方式
    asp.net验证码生成
    pop协议指令
    Url Rewriting后的问题
    c# 一个通过oledb读取excel,csv的类
    jquery选择器全解
    覆盖与重载(override/overload) [C#]
    ASP.NET内置对象
    web开发敏捷之道应用rails进行敏捷web开发【读书笔记2】
    win7自动壁纸切换小工具AutoDesk一:初始化托盘
  • 原文地址:https://www.cnblogs.com/wanghui-garcia/p/10178314.html
Copyright © 2020-2023  润新知