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() 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命令

vagrant特性——基于docker开发环境(docker和vagrant的结合)-2-命令的更多相关文章

  1. vagrant特性——基于docker开发环境(docker和vagrant的结合)-0-简介

    原文https://www.hashicorp.com/blog/feature-preview-docker-based-development-environments Feature Previ ...

  2. vagrant打造自己的开发环境

    vagrant打造自己的开发环境 缘由: 在网上看到斌哥,爽神都写了关于vagrant的博客,都在说很强大,所以很好奇这玩意怎么个强大,然后也就自己来一发玩玩看看. 真实缘由: 说实话是电脑配置太低, ...

  3. 使用Vagrant搭建本地python开发环境

    使用Vagrant搭建本地python开发环境 关于vagrant:Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境,它使用Oracle的开源VirtualBox虚拟化系统也可以使 ...

  4. Windows使用Vagrant&VirtualBox搭建虚拟开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具 , 我们可以通过 Vagrant 封装一个 Linux 的开发环境 , 分发给团队成员 ; 成员可以在自己喜欢的桌面系统 Mac/Windows/Li ...

  5. vagrant特性——基于docker开发环境(docker和vagrant的结合)-1-基本使用

    Docker vagrant提供了使用Docker作为provider(其他的provider有virtualBox.VMware\hyper-V等)的开箱即用支持.这允许你的开发环境由Docker容 ...

  6. vagrant特性——基于docker开发环境(docker和vagrant的结合)-3-boxes和配置

    Docker Boxes Docker provider不需要vagrant box.因此其config.vm.box设置是完全可选的.但是,仍然可以使用并指定一个box来提供默认值.由于一个带着bo ...

  7. windows环境 springboot+docker开发环境搭建与hello word

    1,下载安装 docker toolbox 下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ docker t ...

  8. 企业应用架构研究系列十九:Docker开发环境

    软件行业流行这样一个说法,由于Docker 技术的成熟和该技术被广大厂商的普遍应用,成就了微服务领域的快速成长,衍生了云原生技术和公有云的进一步推广.我个人认为Dockers 技术.微服务技术.云原生 ...

  9. Hadoop伪分布配置与基于Eclipse开发环境搭建

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

随机推荐

  1. oracle数据库无法导出空表的问题解决(开始于oracle11g)

    --设置系统参数 alter system set deferred_segment_creation=false; Select 'alter table '||table_name||' allo ...

  2. [小技巧]Filezilla无法确定拖放操作目标,由于shell未正确安装__解决办法

    重装系统及相关软件之后,用filezilla拖拽ftp上的文件到桌面的时候,提示"无法确定拖放操作目标......" 解决办法很简单,执行如下几步就OK了 ①在CMD中,进入Fil ...

  3. 华中农业大学第五届程序设计大赛网络同步赛-A

    Problem A: Little Red Riding Hood Time Limit: 1 Sec  Memory Limit: 1280 MBSubmit: 860  Solved: 133[S ...

  4. CSS-网站导航栏标题之间的分隔符

    在一个网页上,尤其是导航栏文字与文字之间,大多数情况下都会有分隔符,也就是文字之间的一个小竖线,这个小小的分隔符,每个网站都有不同的样式,常用的写法就是用标签的边框,这个写法也比较简单,用起来也方便, ...

  5. 【代码笔记】iOS-长条label

    一,效果图. 二,代码. ViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup ...

  6. 【代码笔记】iOS-TableViewOfTwoSecton

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  7. angularjs1.X获取前一天日期

    $scope.getDate = new Date(); //可以当前日期 $scope.nowDate = $filter("date")($scope.getDate, &qu ...

  8. 关于form表单提交到Servlet的时候出现tomcat启动错误的解决方法

    1.遇到的问题 今天在写jsp代码的时候通过form表单提交到Servlet的时候出现的tomcat启动错误,琢磨了半天,终于找到了解决方法. 解决问题的关键就在于xml配置的路径和servlet中默 ...

  9. Python+Selenium笔记(五):生成测试报告

    #HTMLTestRunner代码修改参考 微微微笑 的说明,下面是链接,这个已经说的很详细了 https://www.cnblogs.com/miniren/p/5301081.html (一) 前 ...

  10. Centos 7 安装GNOME桌面环境

    第一步:列出可安装的桌面环境 [root@local ~]# yum grouplist 第二步:安装GNOME及相应桌面管理工具 [root@local ~]# yum group info &qu ...