[Docker系列·13] 使用fig启动容器

fig的使用非常简单,只需要配置fig.yml并在同目录下执行fig up -d即可启动容器。

配置fig.yml

node:
  image: feuyeux/ubuntu-node
  ports:
    - "8080:8080"
  links:
    - redis:node-redis
  mem_limit: 2g
  hostname: fig-node

redis:
  image: feuyeux/redis
  hostname: fig-redis

配置中的两个镜像的创建,请参考本系列前面的文章:

启动容器

lu.hl@localhost:/opt/docker-room/fig-001$ fig up -d
Creating fig001_redis_1...
Creating fig001_node_1...

检测容器

可以使用fig自己的命令检测:

lu.hl@localhost:/opt/docker-room/fig-001$ fig ps
     Name                   Command               State               Ports
----------------------------------------------------------------------------------------
fig001_node_1    nodejs ./index.js                Up      22/tcp, 0.0.0.0:8080->8080/tcp
fig001_redis_1   redis-server /etc/redis/re ...   Up      22/tcp, 6379/tcp

也可以使用docker命令检测:

lu.hl@localhost:/opt/docker-room/fig-001$ d ps
CONTAINER ID        IMAGE                        COMMAND                CREATED             STATUS              PORTS                            NAMES
c7f112d912b8        feuyeux/ubuntu-node:latest   "nodejs ./index.js"    28 minutes ago      Up 28 minutes       22/tcp, 0.0.0.0:8080->8080/tcp   fig001_node_1
394c9648c33a        feuyeux/redis:latest         "redis-server /etc/r   28 minutes ago      Up 28 minutes       22/tcp, 6379/tcp                 fig001_node_1/fig001_redis_1,fig001_node_1/node-redis,fig001_node_1/redis_1,fig001_redis_1

在另外一台主机访问docker的host,测试结果如下:

虽然使用fig简单,但小白还是有写坑要踩。这里列举如下。

1.DOCKER_HOST

当系统没有指定DOCKER_HOST参数时,执行fig命令会遇到如下错误。

Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

解决的办法是export该参数到当前终端或.bashrc

export DOCKER_HOST=tcp://localhost:4243
fig ps

2.DOCKER_OPTS

Ubuntu默认安装的docker没有启动tcp监听,因此这个约定俗成的端口4243也是要设置的。 可以在启动docker时加参数,但如果是执行sudo service docker start的话,还是要设置一下DOCKER_OPTS:

配置/etc/default/docker

DOCKER_OPTS="-api-enable-cors=true -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --dns 8.8.8.8 --dns 8.8.4.4"
  • -api-enable-cors:这个参数的意义是允许ajax跨域资源共享。
  • tcp://0.0.0.0:4243:这个参数的意义是让docker监听所有4243端口的tcp请求(当然http是基于tcp之上的,remote api也是走这个端口) -

其他启动相关的配置参见:/etc/init/docker.conf

3.cgroup_enable

Ubuntu默认是不允许使用cgroup做内存等资源的调配的,如果你在docker的配置文件Dockerfile或者fig的配置文件fig.yml中设置了容器的启动内存,会遇到如下警告:

WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.

解决的办法是设置grub参数:

配置/etc/default/grub

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

然后执行sudo update-grub,重启系统生效。

坑还不止于此,这是我踩过的。关于docker和fig的砖今天先抛到这里。

时间: 2024-08-31 03:52:37

[Docker系列·13] 使用fig启动容器的相关文章

Docker系列之(一):10分钟玩转Docker(转)

1.前言 进入云计算的时代,各大云提供商AWS,阿里云纷纷推出针对Docker的服务,现在Docker是十分火爆,那么Docker到底是什麽,让我们来体验一下. 2.Docker是什麽 Docker是一个开源的应用容器引擎,可以把应用以及依赖包放到一个可移植的容器中,然后发布到任何流行的 Linux 系统上,通过这种方式实现虚拟化. 提到虚拟化,大家应该十分熟悉了,有VMware,Xen,KVM等等很多.那么,Docker和VM有什么不同呢,我们用官网的一张图来说明一下.   可以看出,Dock

Docker 文件系统以及启动容器的文件系统变化

本文主要介绍一下 Docker 基础的东西,先介绍一下我的实现环境: 1. windows 10 正式版 1. Docker Toolbox 1. Docker version 1.8.2 1. 官方镜像 ubuntu:latest 这里我们主要只说 aufs/containers/graph 这三个目录. 1. 先进入 Docker 文件系统目录 ll /var/lib/docker #其中目录是这样的 /var/lib/docker -> /mnt/sda1/var/lib/docker/

两种方式创建docker镜像的启动容器时区别介绍(总结篇)_docker

Docker是建立在Linux内核基础上的,在目前的主流Linux系统中,都已经原生支持了Docker且使用体验也最好,当然,在Windows平台和MacOS系统中也支持Docker,只是需要使用类似Boot2Docker等虚拟化工具来提供Linux支持. 下面重点给大家介绍基于两种创建docker镜像的启动容器时区别,感兴趣的朋友可以跟着小编一起学习! 1.凡是用docker commit生成的镜像启动的时候可以加载一个启动自己应用的脚本,例如: docker run -d -P tomcat

docker启动容器的时候携带"--restart=always"参数后如何删除容器

问题描述 docker启动容器的时候携带"--restart=always"参数后如何删除容器 我尝试过docker rm -f但删掉后又会出现一个新容器.有什么办法能够彻底停止呢. 解决方案 http://www.simapple.com/339.html

Docker 从13.0 升级到 14.1后,无法加载原来的容器

问题描述 Docker从13.0升级到14.1后,无法加载原来的容器.[root@localhost~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEgpdbgpmaster0b69fa63c7a43monthsago905.3MBcentosgpmaster7ac20e7e8d014monthsago478.1MBcentoscentos668edf809afe74monthsago212.7MBcentoscentos787e5b6b3

CoreOS Fest 系列之第一篇:容器江湖

本文讲的是CoreOS Fest 系列之第一篇:容器江湖,[编者的话] 这是总结 CoreOS Fest 大会的三篇文章之一,主要介绍了 CoreOS 公司与 Docker 公司之争,新成立的 appc 规范委员会, Tectonic 平台, Kubernetes 项目. 最近在旧金山, Linux 容器已经显得非常有「钱」景,看起来每个人都想从这个有几十亿美金规模的新市场中分得一杯羹.多家创业公司和云主机公司已经或者即将召开有关容器的大会,包括 4 月 17 日召开的 Container Ca

《自己动手写Docker》书摘之五: 增加容器资源限制

增加容器资源限制 上一节中,我们已经可以通过命令行mydocker run -ti的方式创建并启动容器,这一节我们将通过Cgroup对容器的资源进行控制. 这一节中我们将实现通过mydocker run -ti -m 100m -cpuset 1 -cpushare 512 /bin/sh的方式控制容器容器的内存和CPU配置. 定义Cgroups的数据结构 上一章中我们介绍了Cgroups包含的三个概念:  cgroup hierarchy中的节点,用于管理进程和subsystem的控制的关系.

Docker 1.13 编排能力进化

经过了近6个月的磨砺,Docker 1.13在2017年1月发布,它标志着 Docker 内置编排能力的进一步成熟.本文将介绍Docker在编排方面的新进展. 简介 去年6月,Docker宣布在1.12版的引擎中内置编排能力,也就是 Swarm Mode,在容器之上引入了服务(service)的概念,也实验性的推出了应用栈(stack)来支持多服务应用的部署管理.但是 Docker 1.12 版本,服务的开发和操作缺乏类似Docker Compose工具的支持,而且由于Docker Compos

[Docker系列-1] 搭建docker环境

1.Docker安装 1.1.下载Docker Toolbox 最新的版本使用官方的Docker Toolbox进行安装,Docker Toolbox是用来支持在Mac和Windows平台使用Docker的集成套件:以套件的形式提供,极大地方便了用户获取整套Docker工具: Docker Client Docker Machine Docker Compose (Mac only) Docker Kitematic VirtualBox 正如Docker Compose最终代替了Fig,Doc