11.docker的cs模式
//客户端和守护进程的模式运行
守护进程运行在宿主机上(server端)启动后一直在后台运行,负责实现docker的各种功能
daocker的使用者不会直接和守护进程交互,通过客户端即daocker的命令行接口交互(或者remote API)
//如何连接
unix:///var/run/docker/sock
tcp://host:port
fd://socketfd
11.守护进程的配置和操作
#查看docker守护进程的运行状态
ps -ef|grep docker
sudo status docker
#启动停止和重启docker守护进程
sudo service docker start
sudo service docker stop
sudo service docker restart
#启动项
docker -d [options]
运行相关
docker服务器链接相关
remotAPI相关
存粗相关
registry相关
网络设置相关
https://docs.docker.com/reference/commandline/cli
#启动配置文件
sudo vim /etc/default/docker
12.docker 远程访问
准备
第二台安装docker的服务器
docker version
修改docker守护进程启动项,区别服务器
"Label name=docker_server_2" //
docker info 查看 //区别服务器
"H tcp://0.0.0.0:2375 " //服务器改成 使之可以被找到
curl http://10.211.55.5:2375/info //可以查看服务器的信息
docker-H tcp://10.211.55.5:2375/info //用客户端访问
export DOCKER_HOST="TCP://10.211.55.5:2675" //添加环境变量 就不需要麻烦
保证clientAPI 与serverAPI一致
13dockerfile指令
#Comment
INSTRUCTION argument
FROM指令 基础镜像,必须是非注释的第一条
FROM <image>
FROM <image>:<tag>
MAINTAINER <name> 指出作者信息
包含所有者和联系信息
RUN指令 指定当前镜像中运行的命令,每一个RUN指令都会在之前的镜像上新建一层
RUN <command> (shell模式)
/bin/sh -c command 在这下面执行
eg. RUN echo hello
RUN ["executable","param1","param2"] (exec 模式)
eg. RUN ["/bin/bash","-c","echo hello"]
EXPOSE<port>[<port>]指令 指定运行改镜像的容器使用的端口
使用容器是还是需要自己映射端口
CMD 指定容器运行时运行的命令
CMD <command> (shell模式)
CMD ["executable","param1","param2"] (exec 模式)
ENTERYPOINT 不会被覆盖
ADD<src><dest> 有解压作用
COPY<src><dest>
VOLUME["/data"]
WORKDIR
ENV<key><value>
USER deamon
ONBUILD[instruction]
14.dockerfile 构建镜像的过程
从基础镜像运行一个容器
执行一条指令,对容器作出修改
执行docker commit 的操作,提交一个新的镜像层
在基于刚提交的镜像运行一个新的容器
在执行dockerfile的下一条指令
......
结束
用docker build -t="路径" 执行dockerfile 文件
构建缓存
docker build --no-cache 不缓存
查看构建过程
docker history 镜像名
15.容器的网络链接基础
docker0设备 使用ifconfig,可以查看
docker守护进程通过docker0给容器提供网络链接
是一个 虚拟网桥
可以设置ip地址
是一个隐藏的虚拟网卡
如果想要查看 需要先安装网桥管理工具
sudo apt-get install bridge-utils
sudo brctl show //查看网桥设备
16.容器的互联
默认
允许所有的容器相互链接
--icc=true
可以通过ip地址链接 不可靠
--link=[containername:bie_name] //可以用别名访问 可靠
拒绝容器键互联
配置 --icc=false
允许特定容器间的链接
配置--iptables=true
--link
17.docker与外部网络链接
ip_forward==true
允许流量转发
iptables
与linux内核集成的包过滤防火墙
表
链
规则
允许端口映射访问
限制ip访问容器
18.数据管理
数据卷
是经过特殊设定的目录,可以绕过联合文件系统,为一个或多个容器提供访问
设计目的是数据的永久化
为容器添加数据卷
sudo docker run -v ~/container_data:/data -it ubuntu /bin/bash
启动 包含数据卷 本机目录 在容器目录 的容器
为数据卷添加访问权限
sudo docker run -v ~/datavolume:/data:ro -it ubuntu /bin/bash
只读权限
可以在dockerfile里面 VOLUME创建数据卷(不能绑定只能创建 无法共享)
数据卷容器
命名的容器挂载了数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器叫做
docker run --volumes-from [container name] -v $(pwd):/backup ubuntu
挂载 已经挂载了数据卷容器的名字 挂载的位置
只传递了数据卷的信息
备份还原
docker run --volumes-from [container name] -v ~/backup: --name dvt10 tar...
19.docker跨主机的链接
使用网桥
配置简单,不依赖第三方软件
需要小心划分ip地址
不容易管理
兼容性不佳
使用 Open vSwitch
使用 weave 一个开源项目