【docker 笔记】容器与 docker 基础相关整理

文前说明

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。

1. 容器

  • 虚拟化技术目前分为 硬件虚拟化软件虚拟化。软件虚拟化又分为 应用虚拟化平台虚拟化。容器技术被称为容器虚拟化,属于 操作系统虚拟化,是属于平台虚拟化的一种。
  • 容器是对应用程序及其依赖关系的封装,和虚拟机一样拥有一个被隔离的操作系统实例,用来运行应用程序。
    • 容器的优点在于可以与主机的操作系统共享资源,容器具有可移植性,容器是轻量的。
    • 虚拟机需要一个虚拟机管理程序(hypervisor)来创建及运行虚拟机,控制访问底层操作及硬件权限,以及在必要时解析系统调用接口。每个虚拟机需要一个完整的操作系统,用来运行应用程序以及所需的程序库。
    • 主机的内核与容器共享,容器 只能运行与主机一样的内核。程序库可以被不同的应用程序同时使用,只需一份,不需复制。容器引擎负责启动和停止容器。容器中执行的进程与主机本身的进程等价,没有类似虚拟机管理程序执行所带来的损耗。
特性 容器技术 虚拟机技术
占用磁盘空间 小,甚至几十 KB 非常大,可达 GB
启动速度 快,几秒钟 慢,几分钟
运行形态 直接运行于宿主机内核上,不同容器共享一个 Linux 内核 运行于 hypervisor 上
并发性 一台宿主机可以启动成百上千个容器 最多几十个虚拟机
性能 接近宿主机本地进程 逊于宿主机
资源利用率
隔离性 安全隔离 安全隔离
迁移性 优秀 一般
内存代价 很小 较多
  • 容器生态系统包含 核心技术平台技术支持技术
    • 核心技术是让容器在主机上运行起来的技术,包含 容器规范容器 runtime容器管理工具容器定义工具
      • Open Container Initiative(OCI)开放容器基金会制定了开放的容器规范,使得不同组织和厂商的容器能够在不同的 runtime 上运行,保证的容器的可移植性和互操作性(目前规范有 runtime spec 和 image format spec)。
      • runtime 是容器运行的地方,需要跟操作系统 kernel 紧密协作,为容器提供运行环境。runtime 相当于 Java 虚拟机为 Java 程序提供运行环境,容器只能在 runtime 中运行。Docker 的默认 runtime 为 runc。
      • runc 的管理工具是 Docker Engine。包含后台 daemon 和 Cli 两部分。
      • 容器定义工具允许用户定义容器的内容和属性。
        • docker image 是 Docker 容器的模板,runtime 依据 docker image 创建容器。
        • dockerfile 是包含若干命令的文本文件,可以通过这些命令创建出 docker image。
        • 容器通过 image 创建,需要一个仓库统一存放 image,这个仓库叫做 Registry。
        • 容器有 runtime,可以运行在几乎所有的 Linux、MAC OS 和 Windows 上,但是也存在专门运行容器的操作系统,叫做 容器 OS。比常规 OS 体积更小,启动更快,运行容器效率更高。
      • 容器平台技术让容器作为集群在分布式环境中运行。包含 容器编排引擎容器管理平台基于容器的 PaaS
        • 基于容器的应用一般会采用微服务架构,以服务的形式运行在各自的容器中,通过 API 对外提供服务,通过容器编排(包括容器管理、调度、集群定义和服务发现等),容器被有机地组成微服务应用,实现业务需求。docker swarm 是 Docker 开发的容器编排引擎。
        • 容器管理平台是架构在容器编码引擎上的更为通用的平台。能够支持多种编排引擎,抽象了编码引擎的底层实现细节。Rancher 和 ContainerShip 是容器管理平台的典型代表。
        • 基于容器的 Paas 为微服务应用开发人员和公司提供了开发、部署和管理应用的平台,使用户不必关心底层基础设施而专注于应用的开发。Deis、Flynn 和 Dokku 是开源容器 Paas 的代表。
      • 容器支持技术包含有 容器网络服务发现监控数据管理日志管理安全性 等。
        • docker network 是 Docker 原生的网络解决方案。
        • 动态变化是微服务应用的一大特点,负载增加时,集群会自动创建容器,负载减小时,多余的容器会被销毁,根据主机资源使用情况,进行迁移,IP 和端口也会随之变化。服务发现会保存容器集群中所有微服务最新的信息,并对外提供 API,提供服务查询功能等。etcd、consul 和 zookeeper 是服务发现的典型解决方案。
        • docker ps/top/stats 是 Docker 原生的命令行监控工具。
        • 容器在不同主机之间迁移,需要保持持久化数据也能动态迁移。
        • 日志为问题排查和事件管理提供了重要依据。docker logs 是 Docker 原生的日志工具。
        • OpenSCAP 等容器安全工具,能够对容器镜像进行扫描,发现潜在的漏洞等。

2. Docker

  • Docker 是基于 Go 语言实现的开源容器项目。
  • Docker 是一个构建、发布、运行分布式应用的平台,Docker Engine(运行环境 + 打包工具)、Docker Hub(API + 生态系统)两部分组成。底层是各种 OS 和云计算基础设施,上层则是各种应用程序和管理工具,每层之间都是通过 API 通信。
  • Docker 的核心组件包括 Docker 客户端Docker 服务器Docker 镜像Docker 容器Registry
  • Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。
  • 客户端和服务器可以运行在同一个主机上,客户端也可以通过 Socket 或者 RestAPI 与远程的服务器通信。

Docker 客户端

  • 最常用的 Docker 客户端是 docker 命令。
  • 非 root 用户安装 Docker 后直接使用 Docker 命令提示下面的信息。
    • 第一种情况是因为 Docker 服务没有启动,可以通过 service docker start 命令启动 Docker 服务。
    • 第二种情况是因为没有使用 sudo docker 方式输入 docker 命令。
      • 因为 /var/run/docker.sock 所属 Docker 组具有 setuid 权限,非 root 用户使用 setuid 权限需要申请,按以下步骤进行。
        • 一般情况下安装 Docker 完成,会自动创建 docker 组(也可手动创建 sudo groupadd docker)。
        • 将非 root 用户加入 docker 组。sudo gpasswd -a${USER} docker
        • 重启 Docker 服务。sudo service docker restart
        • 切换当前会话到新 group 或者重启 X 会话。newgrp - docker 或者 pkill X
/usr/bin/docker-current: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
[root@localhost ~]# ls -al /var/run/docker.sock 
srw-rw----. 1 root root 0 4月  21 21:43 /var/run/docker.sock
  • 使用 docker version 查看 Docker 版本,由两个部分组成,客户端(Client)和服务器(Server),也就是 docker Cli 和 docker daemon。
[root@localhost ~]# docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      b2f74b2/1.13.1
 Built:           Tue Mar 12 10:27:24 2019
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      b2f74b2/1.13.1
 Built:           Tue Mar 12 10:27:24 2019
 OS/Arch:         linux/amd64
 Experimental:    false

Docker 服务器

  • docker daemon 是服务器组件,以 Linux 后台服务的方式运行,是一个守护进程,是整个 Docker 的核心引擎。
    • docker daemon 运行在主机上,负责创建、运行、监控容器,构建、存储镜像。
    • 默认配置下,Docker daemon 只能响应来自本地主机的客户端请求。如果要允许远程请求,需要在配置文件中打开 TCP 监听。
[root@localhost ~]# service docker status
Redirecting to /bin/systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2019-04-21 15:38:59 CST; 11min ago
     Docs: http://docs.docker.com
 Main PID: 12919 (dockerd-current)
    Tasks: 21
   CGroup: /system.slice/docker.service
           ├─12919 /usr/bin/dockerd-current --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-curr...
           └─12925 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shi...
  • 通过 docker info 命令可以查看 Docker 服务器信息。
[root@localhost ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.13.1
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins: 
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: runc docker-runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version:  (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: df5c38a9167e87f53a9894d77c0950e178a745e7 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
 seccomp
  WARNING: You're not using the default seccomp profile
  Profile: /etc/docker/seccomp.json
 selinux
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 2
Total Memory: 3.683 GiB
Name: localhost.localdomain
ID: C7UM:TFRF:I5DQ:3VED:GNY5:HGR7:666X:INRQ:GEFN:KFOV:REGQ:3XTN
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)

Docker 镜像

  • 可将 Docker 镜像看成只读模板,通过它可以创建 Docker 容器。
  • Docker 镜像是 Docker 系统中的构建模块,是启动一个 Docker 容器的基础。
  • Docker 镜像采用分层结构构建,最底层是 bootfs,是一个引导文件系统,容器启动后会自动卸载 bootfs。bootfs 之上是 rootfs,roofs 是 Docker 容器在启动时内部可见的文件系统,是 " / " 目录。
  • 与容器相对应,镜像是一个运行环境的静态体现,相对于传统的 ISO 镜像,Docker 镜像轻量化很多,只是一个可定制的 rootfs。
  • Docker 镜像通常是通过 dockerfile 创建,dockerfile 提供了镜像内容的定制,同时也体现了层级关系的建立。Docker 镜像也可以通过 docker commit 命令来手动将修改后的内容生成镜像。
    • dockerfile 将镜像内容和创建步骤描述在一个文本文件中,通过执行 docker build 命令可以构建出 Docker 镜像。

Docker 容器

  • Docker 容器是 Docker 镜像的运行实例。可以通过 Cli 或者 API 启动、停止、移动或者删除容器。对于应用软件而言,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。
  • 容器以镜像为基础,同时又为镜像提供一个标准的和隔离的执行环境。容器彼此都是相互隔离、互不可见的。
  • 可以把容器看做是一个简易版的 Linux 系统(包括 root 用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子。

Docker 仓库

  • Registry 是存放 Docker 镜像的仓库,Registry 分私有和公有两种。
  • Docker Hub(https://hub.docker.com)是默认的 Registry,由 Docker 公司维护。
  • docker pull 命令可以从 Registry 下载镜像。
  • docker run 命令则是先下载镜像(如果本地没有),再启动容器。
  • 当用户创建了自己的镜像后,可以通过 docker push 命令将它上传到指定的公有或者私有仓库。

2.1 安装

  • Centos 可以通过 yum install docker 命令进行 Docker 安装。
  • 通过 docker pull hello-world 官方提供的最小镜像,可以验证 Docker 是否安装成功。
[root@localhost ~]# docker pull hello-world
Using default tag: latest
Trying to pull repository docker.io/library/hello-world ... 
latest: Pulling from docker.io/library/hello-world
1b930d010525: Pull complete 
Digest: sha256:92695bc579f31df7a63da6922075d0666e565ceccad16b59c3374d2cf4e8e50e
Status: Downloaded newer image for docker.io/hello-world:latest
[root@localhost ~]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/hello-world   latest              fce289e99eb9        3 months ago        1.84 kB
[root@localhost ~]# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
  • 运行容器 service docker start 并设置为开机启动 systemctl enable docker

2.2 项目参数

  • 可以在 /etc/docker/daemon.json 文件中配置 Docker 的项目参数。
    • 一般情况配置文件 daemon.json 中配置的项目参数,在启动参数中同样适用。
    • 配置文件中已经有某个配置项,则无法在启动参数中增加,否则会出现冲突的错误。
    • 当需要对 Docker 服务进行调整配置时,不用修改主文件 docker.service 的参数,通过 daemon.json 配置文件管理,更为安全与合理。
{
 "api-cors-header": "", 
 "authorization-plugins": [],
 "bip": "",
 "bridge": "",
 "cgroup-parent": "",
 "cluster-store": "",
 "cluster-store-opts": {},
 "cluster-advertise": "",
 "default-shm-size": "64M",
 "shutdown-timeout": 15,
 "debug": true,
 "default-gateway": "",
 "default-gateway-v6": "",
 "default-runtime": "runc",
 "default-ulimits": {},
 "disable-legacy-registry": false,
 "dns": ["192.168.1.1"],
 "dns-opts": [],
 "dns-search": [],
 "exec-opts": [],
 "exec-root": "",
 "fixed-cidr": "",
 "fixed-cidr-v6": "",
 "graph": "/var/lib/docker",
 "data-root": "/var/lib/docker",
 "group": "",
 "hosts": [],
 "icc": false,
 "insecure-registries": [],
 "ip": "0.0.0.0",
 "iptables": false,
 "init": false,
 "init-path": "/usr/libexec/docker-init",
 "ipv6": false,
 "ip-forward": false,
 "ip-masq": false,
 "labels": ["nodeName=node-121"],
 "live-restore": true,
 "log-driver": "",
 "log-level": "",
 "log-opts": {},
 "max-concurrent-downloads": 3,
 "max-concurrent-uploads": 5,
 "mtu": 0,
 "oom-score-adjust": -500,
 "pidfile": "",
 "raw-logs": false,
 "registry-mirrors": ["xxxx"],
 "runtimes": {
        "cc-runtime": {
            "path": "/usr/bin/cc-runtime"
        },
        "custom": {
            "path": "/usr/local/bin/my-runc-replacement",
            "runtimeArgs": [
                "--debug"
            ]
        }
 },
 "node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],
 "selinux-enabled": false,
 "storage-driver": "",
 "storage-opts": [],
 "swarm-default-advertise-addr": "",
 "tls": true,
 "tlscacert": "",
 "tlscert": "",
 "tlskey": "",
 "tlsverify": true,
 "userland-proxy": false,
 "userns-remap": ""
 }
项目参数 说明
api-cors-header CORS 头部域,默认不允许 CORS,要允许任意的跨域访问,可以指定为 " * "。
authorization-plugin 载入认证的插件。
bip 让动态创建的 docker0 网桥采用给定的 CIDR 地址。
bridge 将容器挂载到一个已存在的网桥上。指定为 " none " 时则禁用容器的网络,与 bip 选项互斥。
cgroup-parent 指定 cgroup 的父组,默认 fs cgroup 驱动为 /docker,systemd cgroup 驱动为 system.slice。
cluster-store 构成集群(如 Swarm)时,集群键值数据库服务地址。
cluster-store-opts 构成集群时,键值数据库的配置选项。
cluster-advertise 构成集群时,自身的被访问地址,可以为 host:port 或 interface:port。
default-shm-size 设置默认共享内存的大小。
shutdown-timeout 设置关闭的超时时限。
debug 启用 debug 模式,默认 false。
default-gateway 容器的 IPv4 网关地址,必须在网桥的子网段内。
default-gateway-v6 容器的 IPv6 网关地址。
default-runtime OCI 联盟(The Open Container Initiative)默认运行时环境,默认为 runc。
default-ulimits 默认的 ulimit 值。
disable-legacy-registry 是否允许访问旧版本的镜像仓库服务器。
dns 指定容器使用的 DNS 服务器地址,可从 /etc/resolv.conf 文件中查询。
dns-opts DNS 选项。
dns-search DNS 搜索域。当设定搜索域为 .example.com 时,在搜索一个名为 host 的 主机时,DNS 不仅搜索 host,还会搜索 host.example.com。如果不设置,Docker 会默认用主机上的 /etc/resolv.conf 来配置容器。
exec-opts 运行时的执行选项。
exec-root 容器执行状态文件的根路径,默认为 /var/run/docker
fixed-cidr 限定分配 IPv4 地址范围。
fixed-cidr-v6 限定分配 IPv6 地址范围。
graph Docker 运行时的根路径,默认为 /var/lib/docker。已废弃,使用 data-root 代替,这个主要看 Docker 的版本。
data-root Docker 运行时使用的根路径,默认 /var/lib/docker
group 分配给 unix 套接字的组,默认为 docker。仅指 /var/run/docker.sock
hosts 指定命令对应 Docker daemon 的监听接口,可以为 unix 套接字(unix:///path/to/socket),文件句柄(fd://socketfd)或 tcp 套接字(tcp://[host[:port]]),默认为 unix:///var/run/docker.sock。
icc 是否启用容器之间以及跟 daemon 所在主机的通信。默认为 true。
insecure-registries 允许访问给定的非安全仓库服务。
ip 绑定容器端口时候的默认 IP 地址。缺省为 0.0.0.0。
iptables 是否允许 Docker 添加 iptables 规则。缺省为 true。
init 容器执行初始化,来转发信号或控制(reap)进程。
init-path /usr/libexec/docker-init,docker-init 文件的路径。
ipv6 是否启用 IPv6 支持,默认关闭。
ip-forward 是否检查启动在 Docker 主机上的启用 IP 转发服务,默认开启。关闭该选项将不对系统转发能力进行任何检查修改。进入容器后可以使用 sysctl -a | grep net.ipv4.ip_forward 查看。
ip-masq 是否进行地址伪装,用于容器访问外部网络,默认开启。
labels 添加指定的键值对标注,docker 主机的标签。
live-restore 允许在 Docker daemon 停机期间保持容器活动。
log-driver 指定日志后端驱动,默认为 json-file。(可选 json-file、syslog、journald、gelf、fluentd、awslogs、splunk、etwlogs、gcplogs、none)
log-level 指定日志输出级别。(可选 debug、info、warn、error、fatal)
log-opts 日志后端的选项。
max-concurrent-downloads 每次 pull 的最大并发下载量。
max-concurrent-uploads 每次 push 的最大并发上载量。
mtu 指定容器网络的 mtu。
oom-score-adjust 内存溢出被杀死的优先级(-1000~1000),默认 -500。
pidfile 指定 daemon 的 PID 文件路径。缺省为 /var/run/docker.pid
raw-logs 输出原始未加色彩的日志信息。
registry-mirrors 指定 docker pull 时使用的注册服务器镜像地址。增加后在 docker info 中可查看。
runtimes 用于运行容器的可用 OCI 运行时列表。
node-generic-resources 对外公布的资源节点。
selinux-enabled 是否启用 SELinux 支持。缺省值为 false。SELinux 目前尚不支持 overlay 存储驱动。
storage-driver 指定使用给定的存储后端。
storage-opts 驱动后端选项。
swarm-default-advertise-addr swarm 对外地址。
tls 是否对 Docker daemon 启用 TLS 安全机制,默认为 false。
tlscacert TLS CA 签名的可信证书文件路径。默认 ~/.docker/ca.pem
tlscert TLS 可信证书文件路径。默认 ~/.docker/cert.pem
tlskey TLS 密钥文件路径。默认 ~/.docker/key.pem
tlsverify 启用 TLS 校验,默认为 false。
userland-proxy 是否使用用户态代理来实现容器之间和出容器的回环通信,默认为 true。
userns-remap 指定容器的用户命名空间,默认是创建新的 UID 和 GID 映射到容器内进程。(可选 default、uid:gid、user:group、user、uid)
  • 一些 docker 配置选项可以在不重启 daemon 的时候修改并生效,直接 kill -HUP PID_OF_DAEMON 就行。
    • debug
    • cluster-store
    • cluster-store-opts
    • cluster-advertise
    • labels
    • live-restore
    • max-concurrent-downloads
    • max-concurrent-uploads
    • default-runtime
    • runtimes
  • 如果设置 bip 不生效,可以删除网桥再重建。
[root@localhost ~]# sudo service docker stop
[root@localhost ~]# sudo ip link set dev docker0 down
[root@localhost ~]# sudo brctl delbr docker0
[root@localhost ~]# sudo service docker restart

2.3 后台进程参数

参数 说明
--api-cors-header= 开放远程 API 调用的 CORS 头信息。这个接口开关对进行二次开发的上层应用提供了支持。
-b, --bridge= 挂载以存在的网桥设备到 Docker 容器里。注意,使用 none 可以停用容器里的网络。
--bip= 使用 CIDR 地址设定网桥的 IP。此参数和 -b 不能一起使用。
-D, --debug=false 开启 Debug 模式。如 docker -d -D。
-d, --daemon=false 开启 Daemon 模式。
--default-gateway= 容器默认网关 IPv4 地址。
--default-gateway-v6= 容器默认网关 IPv6 地址。
--default-ulimit=[] 容器设置默认 ulimits。
--dns=[] 强制容器使用 DNS 服务器。例如:docker -d --dns 8.8.8.8。
--dns-search=[] 强制容器使用指定的 DNS 搜索域名。例如:docker -d --dns-search example.com。
-e, --exec-driver=native 强制容器使用指定的运行时驱动。例如:docker -d -e lxc。
--exec-opt=[] 设置执行驱动选项。
--exec-root=/var/run/docker 配置 Docker 执行驱动的根目录。
--fixed-cidr= IPv4 子网设置掩码(ex:10.20.0.0.0/16),这个子网必须嵌套于网桥子网内(由 -b 或者 --bip 定义)。
--fixed-cidr-v6= IPv6 子网设置掩码。
-G, --group=docker 在后台运行模式下,赋予指定的 group 到相应的 unix socket 上。当参数 --group 赋予空字符串时,将去除组信息。
-g, --graph=/var/lib/docker 配置 Docker 运行时根目录。
-H, --host=[] 在后台模式下指定 socket 绑定,可以绑定一个或多个 tcp://host:port,unix:///path/to/socket,fd://* 或 fd://socketfd 例如:docker -H tcp://0.0.0.0:2375 ps。
-h, --help=false 帮助。
--icc=true 启用内联容器的通信。
--insecure-registry=[] 对于特定注册启用非安全通信(对于 HTTPS 没有证书校验,启用 HTTP 启用 fallback)。
--ip=0.0.0.0 容器绑定 IP 时使用的默认 IP 地址。
--ip-forward=true 启用容器的 net.ipv4.ip_forward。
--ip-masq=true 对于网桥的 IP 段启用 ip 伪装。
--iptables=true 启用 Docker 容器自定义的 iptable 规则。
--ipv6=false 启用 IPv6 网络。
-l, --log-level=info 设置日志级别。
--label=[] 为守护进程设置标签。
--log-driver=json-file 默认容器驱动日志。
--log-opt=map[] 设置日志驱动选项。
--mtu=0 设置容器网络的 MTU 值,如果没有这个参数,选用默认 route MTU,如果没有默认 route,就设置常量值 1500。
-p, --pidfile=/var/run/docker.pid 后台进程 PID 文件路径。
--registry-mirror=[] 指定优先使用的 Docker registry 镜像。
-s, --storage-driver= 强制容器运行时使用指定的存储驱动。例如:指定使用 devicemapper,docker -d -s devicemapper。
--selinux-enabled=false 启用 SELinux 支持。
--storage-opt=[] 配置存储驱动的参数。
--tls=false 启用 TLS 默认开关。
--tlscacert=~/.docker/ca.pem 通过 CA 认证过的 certificate 文件路径。
--tlscert=~/.docker/cert.pem TLS 的 certificate 文件路径。
--tlskey=~/.docker/key.pem TLS 的 key 文件路径。
--tlsverify=false 使用 TLS 并做后台进程与客户端通讯的验证。
--userland-proxy=true 回路使用用户代理。
-v, --version=false 显示版本信息。

你可能感兴趣的:(【docker 笔记】容器与 docker 基础相关整理)