首页 > 技术文章 > Docker吐血总结

ggmm20141012 2019-09-11 10:39 原文

安装啥的我就不说了 自己百度就行,本人是mac一路傻瓜安装。
 
docker与vm相比的优势:
1 启动快,秒级别 vm为分钟级
2 需要资源少,是轻量级的,docker容器直接与内核进行交互 vm则是通过Hypervisor(VMM)与内核进行交互
docker是MB级别 vm为GB级别
3 能创建上千个容器,vm只能创建几十个
4 高可用性 --通过docker的快速部署实现高可用
5 节约时间 --开发、测试、部署的时间都大大减少
6 DockerFile中记录容器的构建过程,可在集群中实现快速分发和快速部署
 
一、docker运行机制包括的三个核心组件:docker CLI、REST API和docker daemon(守护进程)
 
二、docker的架构主要包括三部分:Client(客户端)、DOCKER_HOST(docker主机,主要指docker daemon守护进程)和Registry(注册中心,实质就是docker镜像仓库)
 
三、docker的底层技术(了解):Namespaces(名称空间,可以隔离容器)、Control groups(控制组,可以控制资源)、Union
file systems(联合文件系统)、Container format(容器格式)
 
四、Dockerfile:一般分为四个部分-基础镜像信息、维护者信息、镜像操作指令和容器启动时的执行指令
 
Dockerfile的常用指令:FROM、MAINTAINER、RUN、CMD、EXPOSE、EVN、ADD、COPY、ENTERPOINT、WORKDIR
COPY和ADD的区别:COPY不能复制远程URL路径文件,也不能解压文件,而ADD命令可以。EVN是设置环境变量的
 
五、Docker常用命令(包括客户端、网络管理、集群、节点、服务、数据卷 一些基本的ls啥的就不写了、太多):
docker images                 列出镜像
 
docker images -a                列出所有镜像,包括不使用的
 
docker search 镜像名               搜索镜像
 
docker pull 镜像名                拉取镜像
 
docker push 镜像名                向仓库推送镜像
 
docker build 镜像名                  构建镜像
 
docker rmi 镜像名                    删除镜像
 
docker run --name=容器名 镜像名           创建并启动容器
 
docker ps                   列出容器
 
docker ps -a                  列出所有容器,包括停止的
 
docker exec 容器名               执行容器
 
docker stop 容器名               停止容器
 
docker start 容器名                 启动容器
 
docker rm 容器名                    删除容器
 
docker tag 原镜像名 新镜像名           重命名镜像
 
docker login                   登录docker hub或本地镜像的指令 本地镜像加上本地的ip
 
docker logout                 退出docker hub或本地镜像连接的指令
 
docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry:2
                       启动Docker Registry 5000啥的都是不固定的
docker inspect                 查看详细信息的指令
 
ifconfig                    查看本地配置信息,可以查看例如本机IP地址
 
docker plugin                  用于管理插件
 
docker stack                   用于管理docker堆栈
 
docker system                 用于管理docker
 
docker secret                  用于管理docker机密
 
docker container                  操作容器的指令
 
docker network                  操作docker网络的指令
 
docker network create --driver 网络名...     创建自定义网络
 
docker run --network=网络名 ...         使用固定网络启动容器
 
docker network connect 网络名 容器名        为容器添加网络方式 //通过有相同的网络,使容器实现相互通信
 
docker network disconnect 网络名 容器名      断开指定的容器使用的网络
 
ping -w 4+IP                   测试容器通信 //先用docker attach 容器名 进入容器后 再使用此命令测试连接shi
 
docker network rm 网络名             移除网络
 
docker swarm                  操作swarm集群的指令
 
docker swarm init --advertise-addr ip地址      创建Docker Swarm集群 在该IP地址下创建 为管理节点
 
docker swarm join --token ... ip地址       把工作节点添加到管理节点下 -在工作节点所在的docker中操作 ...为创建管理节点后展示的token那部分
 
docker node                  操作集群节点指令
 
docker service                 操作节点服务的指令
 
docker service create --name 服务名 镜像名 指令        在节点上创建服务的指令
 
docker service inspect 服务名           查看指定服务的详情
 
docker service ps 服务名              查看指定服务在集群节点上的分配和运行情况
 
docker service scale 服务名=数量         更改服务副本数量的指令
 
docker service rm 服务名             删除服务
 
... + --publish 端口号 镜像名            访问服务要暴露端口号
 
docker volume                   操作数据卷指令
 
docker volume create 卷名            创建数据卷
 
docker volume ls                  查看数据卷 其他的查看也可以加ls
 
docker volume inspect 卷名           查看数据卷详情
 
docker volume rm 卷名               删除数据卷
 
docker run -itd --name 容器名 --mount source=卷名,target=挂在目录地址 镜像名
                         启动容器并挂在数据卷方式1 itd一起用就好了 分别为:保留界面 新开终端 后台执行的意思
 
docker run -itd --name 容器名 -v 卷名:挂载目录地址 镜像名
                         启动容器并挂在数据卷方式2
 
 
六、docker镜像管理工具(2个):Docker Hub、Docker Registry
 
七、将本地镜像推送到Docker Hub的注意点或步骤:
1 镜像名称必须符合DockerID/repository的形式规范
2 登录Docker Hub
3 推送镜像
4 设置Docker Hub为私有镜像 在Docker Hub的settings下设置make private
 
八、Docker Registry本地私有仓库搭建步骤
1 启动Docker Registry
2 重命名镜像 格式为:仓库IP:端口号/repository
3 推送镜像
 
九、Docker Registry本地私有仓库配置
1 查看Docker Registry私有仓库搭建地址
2 生成自签名证书
3 生成用户名和密码
4 启动Docker Registry本地镜像仓库服务
5 配置Docker Registry访问接口
 
十、验证Docker Registry本地私有仓库配置测试步骤
1 Docker Registry私有仓库使用登记
2 准备镜像文件
3 推送镜像
4 登录Docker Registry镜像仓库
5 再次推送镜像
6 结果验证
 
十一、docker三种网络:
1 bridge:可以实现与宿主机通信从而实现互联网通信功能
2 host:属于无网络,不能与外界网络通信
3 none:属于无网络,不能与外界网络通信
 
十二、自定义网络的种类:
1 桥接网络:保证容器的安全性,基于某种网络的驱动去创建新的这种网络,实现容器隔离
2 Swarm集群中的覆盖网络
3 定义网络插件
 
十三、使用bridge网络管理和使用自定义网络管理对于容器间通信的区别
1 使用默认的brigde网络万里的容器可以使用ip进行通信,但是不可以通过容器名称进行通信
2 使用自定义的网络管理的容器则同时可以使用ip和容器名称进行通信
 
十四、构建Docker Swarm集群的条件
1 多台机器切系统相同并且安装了docker
2 每个机器的ip地址固定
3 节点间使用相应的协议
 
十五、Docker数据管理
Docker镜像是通过读取Dockerfile文件中的指令构建的,Dockerfile中的每条指令都会创建一个镜像层,并且每层镜像都是只读的,这一系列的镜像层就构成了Docker镜像,镜像层是叠加的
 
十六、Docker容器与镜像的主要区别
Docker容器与镜像的主要区别是顶部的容器层,而所有对容器中数据的添加、修改等操作都会被存储在容器层中,当容器被删除时,容器层也会被删除,其中存储的
数据会被一并删除,而下面的镜像层却保持不变。但一般不会将数据写到容器层,会使用数据外部挂载机制
 
十七、Docker数据挂载机制的三种方式
1 数据卷(volumes)
2 bind mounts(绑定挂载)
3 tmpfs mounts(tmpfs挂载)
 
十八、说明
本文档是我从各个docker书籍,博客上总结的,作为自己复习用的,如果总结的不到位,望理解~
 

推荐阅读