Docker命令解读-二

来源:互联网 发布:虚幻4做的游戏好优化吗 编辑:程序博客网 时间:2024/06/05 04:21

title: Docker命令解读(二)
date: 2015-11-21 19:30:44
tags: docker

categories: Docker Commands

Docker命令解读系列文章将系统讲解Docker使用的命令,方便大家学习Docker的基本操作。在写这个系列文章的时候,主要参考了Docker官方的文档,有些内容是直接的翻译。原文档地址 Docker Docs
转载请注明出处

Docker可以以两种模式启动,一种是client,一种是daemon,两者共用一个二进制文件。启动daemon就要使用docker daemon命令,使用docker daemon --help命令可以查看它的可选参数。

Usage: docker daemon [OPTIONS]A self-sufficient runtime for linux containers.Options:  --api-cors-header=""                   Set CORS headers in the remote API  -b, --bridge=""                        Attach containers to a network bridge  --bip=""                               Specify network bridge IP  -D, --debug=false                      Enable debug mode  --default-gateway=""                   Container default gateway IPv4 address  --default-gateway-v6=""                Container default gateway IPv6 address  --cluster-store=""                     URL of the distributed storage backend  --cluster-advertise=""                 Address of the daemon instance on the cluster  --cluster-store-opt=map[]              Set cluster options  --dns=[]                               DNS server to use  --dns-opt=[]                           DNS options to use  --dns-search=[]                        DNS search domains to use  --default-ulimit=[]                    Set default ulimit settings for containers  --exec-opt=[]                          Set exec driver options  --exec-root="/var/run/docker"          Root of the Docker execdriver  --fixed-cidr=""                        IPv4 subnet for fixed IPs  --fixed-cidr-v6=""                     IPv6 subnet for fixed IPs  -G, --group="docker"                   Group for the unix socket  -g, --graph="/var/lib/docker"          Root of the Docker runtime  -H, --host=[]                          Daemon socket(s) to connect to  --help=false                           Print usage  --icc=true                             Enable inter-container communication  --insecure-registry=[]                 Enable insecure registry communication  --ip=0.0.0.0                           Default IP when binding container ports  --ip-forward=true                      Enable net.ipv4.ip_forward  --ip-masq=true                         Enable IP masquerading  --iptables=true                        Enable addition of iptables rules  --ipv6=false                           Enable IPv6 networking  -l, --log-level="info"                 Set the logging level  --label=[]                             Set key=value labels to the daemon  --log-driver="json-file"               Default driver for container logs  --log-opt=[]                           Log driver specific options  --mtu=0                                Set the containers network MTU  --disable-legacy-registry=false        Do not contact legacy registries  -p, --pidfile="/var/run/docker.pid"    Path to use for daemon PID file  --registry-mirror=[]                   Preferred Docker registry mirror  -s, --storage-driver=""                Storage driver to use  --selinux-enabled=false                Enable selinux support  --storage-opt=[]                       Set storage driver options  --tls=false                            Use TLS; implied by --tlsverify  --tlscacert="~/.docker/ca.pem"         Trust certs signed only by this CA  --tlscert="~/.docker/cert.pem"         Path to TLS certificate file  --tlskey="~/.docker/key.pem"           Path to TLS key file  --tlsverify=false                      Use TLS and verify the remote  --userland-proxy=true                  Use userland proxy for loopback traffic

docker daemon用来管理所有的容器,是Docker最核心的部件之一。可以使用docker daemon -D启动DEBUG模式

本章内容为:
* Daemon socket Options
* Daemon execdriver Options
* Daemon DNS Options
* Insecure Registries
* Legacy Registries

Daemon socket Options

Docker daemon可以通过三种类型的socket监听Docker Remote API请求,分别是unixtcpfd
默认情况下,Docker会在/var/run/docker.sock下创建一个unix套接字,这需要root权限或者将当前用户加入了group docker
如果需要远程的访问Docker daemon,就需要使用TCP套接字,但需要注意的是,默认情况下,对Docker daemon的访问是非加密的和没有认证的。为了保证安全,需要需要使用经过加密的HTTPS套接字或者使用加密的安全web代理(secure web proxy)。
你可以使用-H tcp://0.0.0.0:2375以在所有的网络端口上监听2375接口,或者使用类似-H tcp://192.168.59.63:2375在一个特定的网络接口上监听2375端口。2375接口使用非加密的连接,2376使用加密的连接。
Note:如果你要使用加密的HTTPS连接,记住只支持TLS1.0和更高的版本,不支持SSLv3和以下的版本。
可以使用多个-H标签来是Docker daemon监听多个套接字,下面的例子监听一个unix socket和两个tcp socket

docker daemon -H unix:///var/run/docker.sock -H tcp://192.168.59.106 -H tcp://10.10.10.2

docker client会通过DOCKET_HOST环境变量来设置自己的-H标签值。

daemon存储驱动器选项
Docker daemon支持多种分层的存储驱动器,包括aufsdevicemapperbtrfszfsoverlay
aufs是最先被支持的一个,但是它几乎不可能被加入Linux内核。aufs是唯一一个支持容器间共享可执行二进制文件的存储驱动器。

Docker ecexdriver options

Docker执行驱动器选项。目前Docker默认的执行驱动器实现是libcontainerDocker通过它与Linux内核的namespacecgroupsSELinux打交道。
你可以通过--exec-opt标识来配置libcontainer(native execdriver),这些选项都以native作为前缀。

Daemon DNS Options

顾名思义,这个标识用来给所有的容器配置DNS服务器,命令格式为:

docker daemon --dns 8.8.8.8

也可以通过docker daemon --dns-search example.com为容器设置DNS search domain

Insecure Registries

不安全的镜像服务。
Note:关于Docker镜像服务,有几个概念:
首先是Registry,它指一个提供Docker镜像服务的站点,我们翻译为服务
Repository:它指一个提供某种镜像的仓库,如“chy/ubuntu”,它下面包括了各个版本的ubuntu镜像,如ubuntu12.04 ubuntu14.04等。
它们之间的关系为:一个Registry包括多个Repository,一个Repository又包括多个镜像。

Docker可以使用安全的或不安全的私有镜像Registry,所谓安全指镜像Registry使用了TLS和CA证书。不安全的镜像Registry指或者没有使用TLS或者其证书Docker daemon无法识别。
默认情况下,Docker要求除本地镜像Registry以外的所有镜像服务都要是安全的,否则无法进行通信。要与不安全的镜像Registry进行通信,需要在启动Docker daemon时使用--insecure-registry标识。有如下两种方式:
--insecure-registry myregistry:5000告诉Docker daemonmyregistry:5000是不安全的;--insecure-registry 10.1.0.0/16告诉Docker daemon子网中的所有镜像Registry都是不安全的。
如果一个不安全的镜像Registry没有被标记为不安全,那么docker pulldocker pushdocker search命令会返回一个错误告诉用户或者使用安全的镜像Registry或者将其标记为不安全。
本地的镜像Registry默认被标记为不安全的,但这可能在未来的版本中改变。
使用了--insecure-registry标识,意味着与其通信是不加密的,这在运行一个本地的镜像Registry时很有用(省去一些额外开销)。但最好只用来进行测试,因为可能会产生安全问题。

Legacy Registry

旧版本的Registry,也就是使用V1协议的Registry,目前比较新的协议是V2。--disable-legacy-registry标识指定Docker daemon只能和使用了V2协议的Registry进行通信。这样,当执行pullpushlogin命令的时候将不会尝试和V1 Registry通信,但search命令依然可以在V1 Registry上使用。

0 0
原创粉丝点击