docker系列3--dockerd配置文件
dockerd启动配置
docker通信方式选择
- docker默认以sock文件方式提供接口,要开放tcp接口远程调用,需要修改配置文件:
- The Docker daemon can listen for Docker Engine API requests via three different types of Socket: unix, tcp, and fd.参考:https://docs.docker.com/engine/reference/commandline/dockerd/
- You can configure the Docker daemon to listen to multiple sockets at the same time using multiple -H options:
# listen using the default unix socket, and on 2 specific IP addresses on this host.
$ sudo dockerd -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2
配置文件daemon.json
- 使用配置文件:The daemon includes many configuration options, which you can pass as flags when starting Docker manually, or set in the daemon.json configuration file. The second method is recommended because those configuration changes persist when you restart Docker.
- 参考:Configure and troubleshoot the Docker daemon
- 参考文章:docker深入2-linux下的配置文件daemon.json使用示例 讲配置文件daemon.json的完整示例
- 如下运行的docker命令,可以用配置文件来配置:
$ dockerd -D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376
$ sudo nohup docker -d --log-level warn -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock > docker.log &
{
"debug": true,
"tls": true,
"tlscert": "/var/docker/server.pem",
"tlskey": "/var/docker/serverkey.pem",
"hosts": ["unix:///var/run/docker.sock","tcp://0.0.0.0:2375"]
}
- 选择配置文件启动
--config string Location of client config files (default "/home/james/.docker")
docker --config
docker启动方式
- 通过命令行启动docker,可能需要sudo:you can start Docker manually using the dockerd command. You may need to use sudo, depending on your operating system configuration.
- 可能会有权限不足的问题,如下
$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
E0307 06:52:52.025652 53165 container_manager.go:492] list containers[[running]] error: Get http://unix.sock/containers/json?filters=%7B%22status%22%3A%5B%22running%22%5D%7D: dial unix /var/run/docker.sock: connect: permission denied.
- 查看发现/var/run/docker.sock应该是属于docker用户组的,如果是root:root就会有错:
$ ll /var/run/docker.sock
srw-rw----. 1 root docker 0 Mar 6 17:22 /var/run/docker.sock
- 参考:docker技术注意点,添加用户组
- 可以在docker启动时指定用户组:
sudo gpasswd -a ${USER} docker
$ dockerd -h | grep sock
--containerd Path to containerd socket
-G, --group=docker Group for the unix socket
-H, --host=[] Daemon socket(s) to connect to
$ dockerd -G dockerroot --raw-logs
docker启动问题
- 在系统上yum安装了docker,手动启动了dockerd守护进程,但是发现运行时刻不能启动容器。有如下错误:msg="Create container failed with error: shim error: docker-runc not installed on system"
- 尝试链接docker-runc-current文件,但是没有解决问题。该方法参考:重装docker后本身的容器启动失败
- 在stackoverflow上看的如下问题:docker-runc not installed on system,其中提到dockerd的systemd启动文件The service file located at /usr/lib/systemd/system/docker.service ,这应该是yum安装的时候自动安装的启动文件。
--add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
--default-runtime=docker-runc \
--exec-opt native.cgroupdriver=systemd \
--userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
- 使用systemctl来启动docker,这应该是推荐的启动方式:$ sudo systemctl start docker.service
- 启动后,可以启动容器。但是自定义部分没有使用daemon.json的配置。
- 故参考《docker日志设置》里一篇对damon.json的解析,在daemon.json里添加如下配置,再手动启动,即可解决问题。
$ cat /etc/docker/daemon.json
{
"log-level":"warn",
"hosts": ["unix:///var/run/docker.sock","tcp://0.0.0.0:2375"],
"runtimes": {
"docker-runc": {
"path": "/usr/libexec/docker/docker-runc-current"
}
},
"add-runtime": "docker-runc=/usr/libexec/docker/docker-runc-current",
"default-runtime": "docker-runc"
}
docker -d --log-level warn -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
docker启动选项
- 选择启动使用的根目录,默认是/var/lib/docker:
--data-root string Root directory of persistent Docker state (default "/var/lib/docker")
--pidfile string Path to use for daemon PID file (default "/var/run/docker.pid")
-H, --host list Daemon socket(s) to connect to (default [])
./dockerd --config-file daemon.json --raw-logs --log-level warn --data-root ./data/ --pidfile ./docker.pid -H tcp://0.0.0.0:2376 -H unix:///home/bin/docker/docker-17.12.1/docker/docker.sock
docker升级
- docker升级操作,先安装新版docker
- 迁移镜像
- 停止老版docker,删除数据,容器和镜像
- 启动新版docker
- 容器原则上不存数据,故容器不需要迁移。仅需要迁移镜像。这里我们的镜像不多,一个个倒出倒入把。
- 运行发现命令行可以运行容器,但是代码报错:
msg="Handler for POST /containers/create returned error: mkdir /mnt/resource/data/docker/overlay2/4e32760280d0f8a6beefb2823a5c0534a11234e80165feae6bd4e5e7c0076d4c-init/merged/dev/shm: invalid argument"
- 参考问题:Cannt run or build Docker images on CentOS 7 发现应该是storage-driver的问题。本地使用的存储引擎通过docker info查看:
$ docker info
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 39
Server Version: 17.12.1-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
$ uname -r
3.10.0-327.13.1.el7.x86_64
- 同时参考: Docker之几种storage-driver比较,介绍OverlayFS在Linux3.18版本中被并入内核。本机是3.10的可能不符合。
- 修改配置文件使用:
{
"log-level": "warn",
"hosts": ["unix:///var/run/docker.sock","tcp://0.0.0.0:2375"],
"storage-driver": "devicemapper"
}
安装docker
- 安装docker可以采用yum安装,软件包安装,或者直接使用二进制可执行文件。但是直接使用二进制可执行文件可能会有各种依赖问题,yum安装是最方便的方式。
yum安装docker遇到的问题
- 本来以为用yum安装是万无一失的,但是还是出现了以下错误:容器可以创建但是无法运行,不映射端口可以运行,映射端口就报错。说找不到docker-proxy。yum安装的也确实没有docker-proxy
Failed in starting container: API error (404): driver failed programming external connectivity on endpoint 1.ac_18_0_yztest-c_0-0-2_13_0_151a31de3de2cead (ea11474a0a341c7500d931e72b7d5f207c1be2d1d51158444aa101122dfad2b7): exec: "docker-proxy": executable file not found in $PATH.
$ docker run -d -p 9000:9000 --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer
4dc93965c584be10704ee5b0d0a1c14a1eabb1e2082a98095992065bd65dbf7b
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint sleepy_boyd (99fda3a8fba386e88ef362b8f8059ea3d55fa734b353d6e6cdba6c345e5b9a34): Bind for 0.0.0.0:9000 failed: port is already allocated.
- 通过将新版本的docker-proxy二进制文件放到/usr/bin目录下,可以解决网络问题。
docker系列3--dockerd配置文件的更多相关文章
- Docker系列之MySQL安装教程
Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...
- Docker系列-(3) Docker-compose使用与负载均衡
上一篇文章介绍了docker镜像的制作与发布,本文主要介绍实际docker工程部署中经常用到的docker-compose工具,以及docker的网络配置和负载均衡. Docker-compose介绍 ...
- Docker系列-(2) 镜像制作与发布
上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布. 镜像文件结构 Docker镜像的本质是一系列文件的集合,这些文件依次叠加,形成了最后的镜像文件,类似于下图 ...
- Docker系列之实战:3.安装MariaDB
环境 [root@centos181001 ~]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) [root@centos1 ...
- Docker系列——Grafana+Prometheus+Node-exporter服务器监控平台(一)
在最近的博文中,都是介绍监控平台的搭建,其实并不难,主要是需要自己动手操作,实践一番就会了. 有天在想,云上的服务器,是不是也可以搭建一个监控平台,所以就捣鼓了一下,不过遗憾的是,使用阿里云开源的插件 ...
- Docker系列——Grafana+Prometheus+Node-exporter微信推送(三)
在之前博文中,已经成功的实现了邮件推送.目前主流的办公终端,就是企业微信.钉钉.飞书.今天来分享下微信推送,我们具体来看. 企业微信 在配置企业微信推送时,需要有微信企业,具体如何注册.使用,另外百度 ...
- Docker系列——Grafana+Prometheus+Node-exporter钉钉推送(四)
近期搭建的服务器监控平台,来进行一个总结.主要分为监控平台的搭建.告警中心的配置以及消息的推送.推送的话,支持多种终端.具体详细可查看之前的博文,在这里罗列下,方便查看. Docker系列--Graf ...
- Spring3系列4-多个配置文件的整合
Spring3系列4-多个配置文件的整合 在大型的Spring3项目中,所有的Bean配置在一个配置文件中不易管理,也不利于团队开发,通常在开发过程中,我们会按照功能模块的不同,或者开发人员的不同,将 ...
- 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍
docker出来也有很多年了,但用到的公司其实并不是很多,docker对传统开发是一个革命性的,几乎颠覆了之前我们传统的开发方法和部署模式,而大多 公司保守起见或不到万不得已基本上不会去变更现有模式. ...
- Docker系列06—基于容器制作镜像并上传到Docker Registry
本文收录在容器技术学习系列文章总目录 1.制作镜像 1.1 镜像的生成途径 基于容器制作 dockerfile,docker build 本篇主要详细讲解基于容器制作镜像:基于dockerfile 制 ...
随机推荐
- 问题分析——Maven打包后发版,静态资源找不到
一.背景 Xxl-Job-Admin(开源分布式调度中心)项目在本地运行正常,Jenkins发版到测试环境,发版成功后,打开管理页面,页面css.js找不到. 怀疑是Maven没有把静态资源打包进去导 ...
- 在 Java 应用程序中加一些 Groovy 进来
如果您一直在阅读这个系列,那么您应该已经看到有各种各样使用 Groovy 的有趣方式,Groovy 的主要优势之一就是它的生产力.Groovy 代码通常要比 Java 代码更容易编写,而且编写起来也更 ...
- 002-01-RestTemplate-配置使用说明
一.概述 Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写 ...
- EasyUI实现图片的上传后与其他文本框的提交以及DataGrid中图片的展示
图片即文件,在jsp中文件上传很简单,一个type为file的input,一个form指定enctype为multipart/form-data,通过post提交到后台利用apache的commons ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_12-课程预览功能开发-需求分析
5 课程预览功能开发 5.1 需求分析 课程预览功能将使用cms系统提供的页面预览功能,业务流程如下: 1.用户进入课程管理页面,点击课程预览,请求到课程管理服务 2.课程管理服务远程调用cms添加页 ...
- iReport报表生成html,pdf,xls,word工具类
package com.report; import java.io.ByteArrayOutputStream;import java.io.File;import java.io.InputStr ...
- SpringBoot集成Spring MVC视图
SpringBoot在springmvc的视图解析器方面就默认集成了ContentNegotiatingViewResolver和BeanNameViewResolver,在视图引擎上就已经集成自动配 ...
- 123457123456#0#-----com.twoapp.HuaXueGame01--前拼后广--儿童滑雪大冒险游戏jiemei
com.twoapp.HuaXueGame01--前拼后广--儿童滑雪大冒险游戏jiemei
- JavaScript this指向问题
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定,this最终指向调用它的对象. 1.函数调用模式: 当一个函数并非一个对象的属性时,那么它就是被当做函数来调用的.在此种模式下, ...
- 关于类似QQ的展开和折叠效果的实现
介绍: 1.两级折叠与展开: 实现原理如下: 1>通过表视图的组的头视图和单元格实现; 2>通过改变cell的高度实现; 3>通过cell实现; 实现 UITableView 的ce ...