最近使用docker比較頻繁,所以也難免碰到一些坑,在這里記錄一下,給自己寫個筆記
1.docker 1.13.0版本不支持docker stack deploy -c 多個 -c的yml文件合並
如果發現多個-c不起作用,可以看一下docker的版本是否太久,1.18.0之后是可以的
2.docker stack deploy 后 stack rm stackName后再次啟動可能會提示network已經存在,
有時docker 不會刪除原有network
3.docker stack deploy 啟動時有時會提示network不存在,啟動失敗,
需要再次執行docker stack deploy命令
4.提示invaild mount config error等,多半是因為在docker-compose.yml文件中包含volumes ,且里面存在從未知路徑掛載的命令
可以在yml文件的底部用volume掛載,而不是在service中使用未知路徑,
5. fail to gateway ..ip is in use,一般是network中存在原有ip地址的network未刪掉
我們可以使用 docker network prune 刪除未執行的network,或者直接刪除對應的network
6. docker-compose up時 nginx提示 Error starting userland proxy: listen tcp 0.0.0.0:8001: bind: address already in use,並且network沒有8001,
因為nginx出現異常,需要 刪掉nginx 然后重新啟動
Instead of
sudo systemctl restart nginxI had to use:
sudo pkill -f nginx sudo systemctl start nginx
---------------- 命令注釋----------------------
重要! stack rm 后 需要執行stack docker network prune 刪除未使用的network
多次使用 stack 命令 (stack rm + stack stack deploy ) 重啟服務時 , stack rm 后 network 可能會未完全刪除,下次使用 stack deploy -c xxx.yml 啟動時會發現部分服務報錯,提示"failed to allocate gateway (10.0.0.1): Address already in use" 這時需要執行stack docker network prune 刪除未使用的network.
docker swarm 命令
(Manager節點執行)初始化集群docker swarm init
(Manager節點執行) 查看加入worker節點時,需要在worker節點執行的命令docker swarm join-token worker
docker stack 命令
啟用集群式服務.
(在docker-compose.yml目錄下執行) sudo docker stack deploy -c docker-compose.yml -c docker-compose.override.yml BI
** 使用docker stack deploy -c docker-compose.yml時yml文件中的build指令無效,需要先執行 docker-compose build 命令! **
移除BI 服務集群 docker stack rm BI
當刪除集群時,yml中build的鏡像需要手動刪除
docker service 服務命令
查看運行中的服務列表 docker service ls
查看某個服務(BI_app-download)的運行狀態 docker service ps BI_app-download
查看某個服務(BI_app-download)的日志記錄 docker service logs BI_app-download
創建所需鏡像
(在docker-compose.yml目錄下執行) docker-compose build
docker-compose.yml中含有deploy屬性(stack deploy 啟動需要)時,docker會提示警告,但不影響鏡像生成.
生成的鏡像名稱為docker_foldername格式
如: build app-download 文件夾下的 Dockerfile文件時,生成的鏡像名稱為 "docker_app-download"
刪除鏡像 docker rmi imageid
如果修改重新生成鏡像,需要刪除集群-->刪除鏡像-->修改更新項-->docker-compose build-->docker stack deploy
docker load image 時提示空間不夠
systemctl/systemd/docker.service 下修改 -grph =/var掛載新的目錄, 然后分別重啟服務 system restart daemon-reload ,restart docker service
docker file 使用dockerfile 配置容器時區
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
