[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
配置中的兩個映象的建立,請參考本系列前面的文章:
- [[Docker系列·10] 搭建Redis伺服器](http://www.atatech.org/articles/21551)
- [[Docker系列·3] 搭建基於Docker的NodeJS伺服器](http://www.atatech.org/articles/20875)
啟動容器
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的磚今天先拋到這裡。
相關文章
- Docker重啟保持容器自動啟動Docker
- Docker容器的自啟動Docker
- Spring容器系列-啟動原理Spring
- docker中怎麼啟動容器Docker
- Docker(十七)-修改Docker容器啟動配置引數Docker
- Docker框架的使用系列教程(四)容器的使用Docker框架
- Docker 容器基本操作[Docker 系列-2]Docker
- Shell指令碼控制docker容器啟動順序指令碼Docker
- Docker框架使用系列教程(五)容器間的連結Docker框架
- docker-swarm容器固定到node節點啟動DockerSwarm
- 如何在Docker容器啟動時自動執行指令碼Docker指令碼
- [Docker 系列]docker 學習六,資料卷容器Docker
- [Docker 系列]docker 學習 五,容器資料卷Docker
- Docker容器啟動時初始化Mysql資料庫DockerMySql資料庫
- Docker-容器使用Docker
- 使用 docker-sync 解決 docker for Mac 啟動的虛擬容器程式執行緩慢的問題DockerMac
- docker學習3:Docker容器使用Docker
- 啟動docker容器時報錯:iptables: No chain/target/match by that name.DockerAI
- docker-compose 啟動容器後秒退問題小記Docker
- Docker容器無法啟動,裡面的配置檔案如何修改Docker
- 啟動zabbix容器
- (四)Docker安裝使用容器Docker
- 使用docker執行CentOS容器DockerCentOS
- docker建立容器後如何使用Docker
- 使用iptables管控docker容器Docker
- Docker容器如何保證第二次開啟時自動開啟?Docker
- 啟動/刪除Docker容器時出現問題 - 如何修復Docker
- 解決docker安裝minio容器時,minio容器啟動幾秒後自動退出的一種方法Docker
- 如何修改docker容器的重啟策略(重啟模式)?Docker模式
- Docker自動補全容器名Docker
- Docker開發篇 | 01-Docker安裝最新版本ubuntu並啟動容器DockerUbuntu
- 重啟docker服務後,容器啟動報錯:Error response from daemon: id already in useDockerError
- Docker 入門系列二:容器的資料卷Docker
- 使用容器Docker進行開發Docker
- Docker--容器和映象的使用Docker
- 使用 Docker Compose 管理多個容器Docker
- 使用docker-compose管理freeswitch容器Docker
- docker 容器的使用與檢視Docker
- 如何在Docker容器中使用ArthasDocker