22.Docker的C/S模式:
1)使用客户端与DockerServer通信的方式有2中:
1.命令行
2.Remote API。 是RESTful风格的API
参考:https://docs.docker.com/reference/api/docker_remote_api/
2)docker客户端与服务端的通信方式:socket
unix:///var/run/docker.sock 默认 的
tcp://host:port
fd://socketfd
eg:使用linux的sock连接:nc -U /var/run/docker.sock GET /info HTTP/1.1
23.Docker守护进程的配置和操作
1.查看守护进程:
ps -ef | grep docker
sudo status docker
2.启动、停止docker 的守护进程(修改了守护进程的配置的时候使用)
sudo service docker stop
sudo service docker start
sudo service docker restart
启动项的选择:
docker -d
-D,—debug=false
-e,—exec-driver=“native”
-g,—graph=“/var/lib/docker” 写入文件的地址
—icc=true
-l —log-level=“info”
—label=[]
-p,—pidfile=“/var/run/docker.pid”
客户端与服务端连接时的选项:
-G ,—group=“docker”
-H,—host=[]. Sokcet 的链接
—tls=false
—tlscacert=“/home/sven/.docker/ca.pem“
—tlscert=“/home/sven/.docker/cert.pem”
—tlskey=“/home/sven/.docker/key.pem”
—tlsverify=false
RemotAPI 相关的选项
—api-enable-cors=false
存储相关的选项:
-s,—storage-driver=“”
—selinux-enabled=false
—storage-opt=[]
Registry仓库连接的选项:
—insecure-registry=[]
—registry-mirror=[]
网络相关的配置:
-b,—bridge=“”
—bip=“”
—fixed-cidr=“”
—fixed=cidr-v6=“”
-dns=[]
-dns-search=[]
网络设置相关:
—ip=0.0.0.0
—ip-forward=true
—ip-masq=true
—iptables=true
—ipv6=false
—mtu=0
24.docker的启动配置文件:
/etc/default/docker
25.docker的远程访问:
docker 服务端默认端口为:2375
26.Dockerfile指令格式:
注释:#Comment
指令:INSTRUCTION argument 这里的指定名是大写的
FROM <image>
FROM <image>:<tag>
这里指定的镜像名必须是一个存在的镜像(基础镜像)。必须是第一条
MAINTAINER<name>
指定镜像的作者信息,包含镜像的所有者和联系信息
RUN:<command> (shell模式)
RUN:[“executable”,”param1”,”param2”] (exec模式)
指定当前镜像中运行的命令
在shell模式下:/bin/sh -c command. eg: RUN echo hello
在exec模式下:RUN[“/bin/bash”,”-c”,”echo hello”]
EXPOSE<port>[<port>…]
指定运行该镜像的容器使用端口。可以使用多个端口
例如:
#First Dockerfile
FROM centos
MAINTAINER firsDockerfile
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80
这时候并不会打开这个端口。 而是使用在运行容器的时候指定饿那个端口
CMD:
CMD [“executable”,”param1”,”param2”] exec模式。
表示在镜像构建的时候运行的。
CMD command param1 ,param2 (shell模式) 容器运行的时候执行的指令
如果指定了CMD指令。那么会覆盖构建事指定的指令
eg:CMD ["nginx","-g","daemon off;”] 表示容器启动时以前台的方式运行nginx
ENTERYPOINT:
这2个指令用来指定容器在运行时运行的命令
区别:前者的run 指令的参数会覆盖Dockerfile CMD 的指令
后者的run 指令的参数不会覆盖Dockerfile CMD 的指令
给予他们这样的特性 一般组合使用。使用ENTERYPOINT 指定需要运行的命令,使用CMD指定运行需要的参数
ADD <src> …<dest>
ADD [“<src>” …”<dest>”] 适用于文件路径中有空格的情况
COPY<src> …<dest>
COPY [“<src>” …”<dest>”] 适用于文件路径中有空格额情况
src:本地路径的相对路径
dest:镜像中的绝对路径
将文件复制到使用Dockerfile构建的镜像中,都支持来源地址和目标地址,地址可以是本地地址也可以是其他网络来源地址
区别:ADD 中包含了类似于tar的解压功能呢
如果只是简单的copy 使用COPY
VOLUME:
这3个指令用来设置路径,用于向容器添加卷,可以绕过联合加载文件
WORKIDIR:
/path/to/workdir. 指定工作路径 一般使用绝对路径
ENV: 环境变量指令
USER:用户指令。指定那个用户来运行容器,不指定默认使用root用户
这3个指令用来指定容器在构建和运行时的参数
ONBUILD:
触发器指令,当一个镜像被其他镜像作为基础镜像时执行,会在构建过程中插入指令
不会在基础镜像上构建。而是在下一次才使用ONBUILD
Dockerfile构建过程:
使用中间层调试docker构建的错误
构建缓存:
不实用缓存:docker build -no—cache
27.查看镜像构建的过程:
docker history [image]
28.docker的网络连接:
使用ifconfig 可以查询到docker0的网络连接设备。这里的docker0
网桥是数据链路层的设备 是以MaK地址作为划分的 特点:
可以设置IP地址
相当于拥有一个隐藏的虚拟网卡
docker0的地址划分:
IP172.17.42.1 子网掩码:255.255.0.0
MAC:02:42:ac:11:00:00到02:42:ac:11:ff:ff
总共提供了65534个地址
查看linux 中网桥的信息:sudo brctl show
修改docker0到任意的网段:
sudo ifconfig docker0 192.168.200.1 net mask 255.255.255.0
自定义虚拟网桥:
sudo brctl adder br0
sudo ifconfig br0 192.168.100.1 netmask 255.255.255.0
更改docker 守护进程的启动配置:
/etc/default/docker 中添加DOCKER_OPS值
-b=br0