Docker 详细文档
Docker 文档目录⒈ 简介... 21.1什么是容器?... 21.2 什么是Docker?... 31.3 Doceker的目标... 31.4 Docker 的使用场景... 3⒉ Docker 的基本组成... 32.1 Docker 客户端/守护进程... 32.2 Docker 镜像... 42.3 Doceker Contai...
Docker 文档
目录
6.1 docker的c/s 模式(客户端支持远程访问sercer). 14
10.2 使用open switch实现跨主机链接... 24
⒈ 简介
1.1什么是容器?
一种虚拟化的方案
操作系统级别的虚拟化
只能运行相同或相似内核的操作系统
依赖于Linux内核特性:Namespace 和Cgrops(control group)
1.2 什么是Docker?
将应用程序自动部署到容器
Go语言开源引擎
2013年初发布
基于Apache 2.0 开源授权协议发行
1.3 Doceker的目标
提供简单轻量的建模方式
职责的逻辑分离
快速高效的开发生命周期
鼓励使用面向服务的架构
1.4 Docker 的使用场景
使用Docker容器开发、测试、部署服务
创建隔离的运行环境
搭建测试环境
构建多用户的平台即服务(paas)基础设施
提供软件即服务(saas)应用程序
高性能、超大规模的宿主机部署
⒉ Docker 的基本组成
2.1 Docker 客户端/守护进程
C/S 架构
本地/远程
2.2 Docker 镜像
容器的基石
层叠的只读文件系统
联合加载
2.3 Doceker Container容器
通过镜像启动
启动和执行阶段
写时复制(copy on write)
2.4 Docker Registry 仓库
公有
私有
Docker Hub
⒊ Docker容器相关技术简介
3.1 Namespaces 命名空间
编程语言
封装———代码隔离
操作系统
系统资源的隔离
进程、网络、文件系统、资源…….
3.2 Control groups 控制组
用来资源分配
来源于google
提供的功能
资源限制
优先级设定
资源计量
资源控制
3.3 Docker容器的能力
文件系统隔离:每个容器都有自己的root文件系统
进程隔离:每个容器都运行在自己的进程环境中
网络隔离:容器间的虚拟网络接口和IP地址都是分开的
资源隔离和分组:使用cgroups将cpu和内存之类的资源独立分配给每个docker容器
⒉安装和部署
http://www.docker.org.cn/ 参考文档 Docker中文社区
2.1 在red-hat安装Docker
Docker目前可以在红帽企业版7(Red Hat Enterprise Linux 7)版本下面安装。
依赖性检查:
Docker需要一个64位系统的红帽系统,内核的版本必须大于3.10。可以用下面的命令来检查是否满足docker的要求。
$ uname -r 3.10.0-229.el7.x86_64
如果上述的依赖满足的话,还是推荐您全面地更新红帽系统,以保证内核相应的bug都得到修复。
目前红帽RHEL系统下面安装docker可以有两种方式:一种是使用curl获得docker的安装脚本进行安装,还有一种是使用yum包管理器来安装docker。
一、使用安装脚本安装。
备注:你可以按照同样的步骤在CentOS系统下面安装docker。
- 使用一个有sudo权限的帐号登录红帽系统。
- 更新现有的yum包。
$ sudo yum update
- 执行docker安装脚本。
$ curl -sSL https://get.docker.com/ | sh
- 启动docker服务。
$ sudo service docker start
- 确认docker安装成功。
- $ sudo docker run hello-world
二、使用yum包安装
1. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.yum makecache fast
3.yum -y install docker-ce
- 启动docker服务。
service docker start
- 确认docker是否安装成功。
docker run hello-world
2.2 在windows安装Docker
方法一、下载Docker for windows (需要运行Microsoft Hyper-V);Docker Community Edition(社区版)和Docker Enterprise Edition(企业版)Docker CE仅支持win10,而Docker EE仅支持WIN SERVER 2016.
方法二、下载Docker Toolbox(需要运行Oracle Virtual Box);Docker 给旧版本的WIN系统提供的是Docker Toolbox下载
Docker ToolBox共包含5个docker工具:
- Docker Machine:包含了docker-machine命令。
- 运行Docker命令所需要的引擎。
- Kitematic,Docker GUI界面。
- 事先为docker 命令行环境配置好的shell。
- Oracle公司的VM VirtualBox包。
因为Docker守候进程依赖于linux内核,所以无法直接在windows环境中直接运行Docker。解决方案就是使用docker-machine命令创建一个Docker虚拟机并附加到它上面。这个Docker虚拟机来为你的windows系统提供Docker服务。
这个Docker虚拟机专门为windows运行环境优化过,轻量级,完全在内存中运行,很小,下载不超过24M,5秒那可以启动。
安装完成后桌面会生成三个快捷方式,分别为:
(1) Docker Quickstart Terminal: 提供Docker的命令行操作
(2) Oracle VM VirtualBox: 虚拟机软件。
(3) Kitematic (Alpha):图形化的docker工具
4.Docker容器
4.1容器的基本操作
启动容器:
$ docker run IMAGE [COMMAND][ARG…]
RUN 在新容器在中执行命令
启动交互式容器:
$ docker run –I –t IMAGE /bin/bash
-I --interactive=ture | false 默认是false -------告诉守护进程始终打开标准输入 交互式
-t --tty=ture | false 默认是false -------打开命令终端
查看容器:
$ docker ps [-a][-l]
$ docker inspect (id/name) 查看容器详细信息
$ docker run --name自定义 –I – t ubutun /bin/bash ---- 自定义容器名称
$ docker start [-i] 容器名 -----重新启动
$ docker rm [容器名] -----删除一个停止的容器
3.2守护式容器
$ docker run -i –t IMAGE /bin/bash 退出时用 ctrl + P ctrl +Q;
$ docker attach (id/name) 重新进入退出时的容器
启动守护式容器
$ docker run –d 镜像名 [COMMAND][ARG…]
$ docker logs [-f][-t][-tail] 容器名
-f --follows=ture | false 默认为false ---跟踪日志变化并返回结果
-t --timestamps=true | false ---加上时间戳
--tail = “all” ---返回行数
在运行中的容器内启动新的进程
$ docker exex [-d][-it[-t]
$docker stop 容器名
$ docker kill 容器名
3.3部署静态网站
设置容器的端口映射
run [-P] [-p]
NGINX 部署流程
docker run --name web1 -p 8080 -i -t centos /bin/bash 创建docker
正常部署并启动tomcat
Ctrl p ctrl q 返回宿主机
[root@QiYong-APP-T01 ~]# docker port web1
8080/tcp -> 0.0.0.0:32769
显示宿主机的32769端口映射docker的8080端口
访问宿主机的32769端口正常显示页面
Docker top web1 显示docker的进程
Docker exec web1 nginx 启动容器相关服务
5.Docker镜像与仓库
5.1 查看和删除镜像
存储位置:/var/lib/docker
Docker info ----查看信息
列出镜像
删除镜像
5.2 获取和推送镜像
查找镜像
获取和推送镜像——拉取镜像
使用国内仓库镜像服务器
在dashboard中申请链接xxx
修改启动配置文件 Vi /etc/default/docker
添加DOCKER_OPTS=”.XXX”
重启
上传镜像到dockerhup中
Docker push image
5.3 构建镜像
手动构建镜像
实例:
1.运行一个docker容器并做修改
docker run -i -t --name test centos /bin/bash ---运行了一个test的容器
安装一个nginx 然后退出
[root@QiYong-APP-T01 ~]# docker ps –l 列出docker信息
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72a9de314e75 centos "/bin/bash" 2 minutes ago Up 2 minutes test
2.将容器转化为镜像作者齐勇镜像名image_test
docker commit -a qiyong test image_test
[root@QiYong-APP-T01 ~]# docker images 列出镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
image_test latest 9cf7917b729d 15 seconds ago 298MB
使用Dockerfile构建镜像
- 创建doclerfile文件
- 使用docker build 命令
创建一个目录创建dokerfile文件并将以上内容放入,使用build构建镜像
6.Docker客户端和守护进程
6.1 docker的c/s 模式(客户端支持远程访问sercer)
Remote API
链接方式
6.2守护进程的配置和操作
启动关闭重启守护进程
systemctl [commod] docker start stop restart
docker –d --以守护方式运行
以上选项在配置文件中配置
6.3 docker的远程访问
修改服务端启动配置文件
修改客户端
7.1 dockerfile指令
指令格式(两部分:注释 指令)
四种指令
FROM
MAINTAINER<NAME>--指定镜像的作者信息,包含镜像的所有者和联系信息
RUN ----指定镜像中运行的命令
RUN<COMMAND> (shell模式) RUN [“excutable”,”param1”,”param2”] (exec模式)
EXPOSE ----指定运行改镜像的容器使用的端口
其他指令
CMD <COMMAND> --- RUN类似 区别是容器运行过程中执行命令
ENTRYPOINT <COMMAND> --和CMD相像,区别是不会被run命令替换
ADD<src> ---将文件和目录复制到镜像中 包含了tar的解压功能
COPY <src> ---将文件和目录复制到镜像中
VOLUME [“/DATA”]
WORKDIR /PATH/TO/WORKDIR ----指定工作目录 默认使用绝对路径
ENV <key><value> --设置环境变量
USER daemon ----指定
ONBUILD [intruc] 创建触发器
7.2 dockerfile构建镜像过程
1.从基础镜像运行一个容器
2.执行一条指令,对容器进行修改
3.执行类似docker commit的操作,提交一个新的镜像层
4.再基于刚提交的镜像运行一个新容器
5.执行dockerfile的下一条指令,直至所有指令执行完毕
Docker history <images> 查看镜像构建过程
Dockerfile镜像缓存,再次构建更高效
8.1docker容器的网络基础
Brctl show --显示网桥信息
8.2 容器的互联
1)允许容器互联
默认(-icc=ture)情况下同一宿主机之间的容器没有网络限制,都是通过虚拟网桥进行链接的
容器在重启后ip地址会发生改变,这样我们就无法链接到指定的服务器了,这是我们不希望的,所以docker给我们提供了下面的选项:为容器间创建链接和别名,设置link选项后容器在重启时,系统会自动修改ip地址和别名的映射 具体可以 /etc/hosts 实验
2)拒绝容器的互联
-icc=false
Vi /etc/default/docker
添加:DOCKER_OPTS=” –icc=false”
3)允许特定的容器间链接
1.Vi /etc/default/docker
添加:DOCKER_OPTS=” --icc=false --iptables=true”
Webtest为别名
2.iptables –F 清空配置
3.重启docker docker restart
4.重启容器
5.进入容器查看 iptables –L
Docker链变成了第一位,而且设置link的两个容器之间是通的规则
8.3 docker容器与外部网络的链接
Ip_forward linux中的变量:决定了系统是否会转发流量 默认值 ture
查看命令 :systectl net4.conf.all.forwarding
Iptables(包过滤)
主要
Iptables -I DOCKER -s 10.3.3.3 –d 10.3.3.2 –p TCP --dport 80 –j DROP (阻止10.3.3.3 访问10.3.3.2)
9.docker容器的数据管理
9.1容器的数据卷
不能指定本地映射的路径
9.2 卷容器
--volumes-from 指定数据卷容器
Docker run –it --name dvt5 --volumes-from dvt4 ubutun /bin/bash
9.3 数据卷的备份和还原
10.跨主机链接
10.1 网桥实现跨主机链接
10.2 使用open switch实现跨主机链接
10.3 使用weave实现跨主机链接
Chmod +x /usr/bin/weave
Weace launch 启动
启动命令时 会在主机上创建一个weave的docker容器
Weave launch 192.168.59.103 分配一个ip(第二台也传入这个ip
)
用weave命令创建一个容器
C2=$(Weave run 192.168.1.2/24 -it centos /bin/bash)
Echo $c2 返回docker的id
Docker attrch $c2 进入容器
第二台一致的动作
更多推荐
所有评论(0)