最近使用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 nginx
I 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