0 docker安装
docker仓库 https://hub.docker.com/_/redis
https://docs.docker.com/engine/install/centos/
1、Dockerfile命令
(1)EXPOSE
https://www.jianshu.com/p/5b58218bab9a
(2)CMD
https://yeasy.gitbook.io/docker_practice/image/dockerfile/cmd
https://yeasy.gitbook.io/docker_practice/image/dockerfile/entrypoint
2、编写优美的Dockerfile
https://blog.fundebug.com/2017/05/15/write-excellent-dockerfile/
3、K8S
https://www.kubernetes.org.cn/kubernetes-pod 基本组件介绍
https://kubernetes.io/zh/docs/concepts/configuration/configmap/ 挂载配置文件/ 环境变量
https://hustyichi.github.io/2018/07/31/kubernetes-introduction/
https://developer.aliyun.com/article/573791
k8s就像一个领航员,把各种集装箱(container)有条不紊地组装起来,着重提供如下功能:
1.快速部署功能:定义对应的charts,可以方便把大型的应用部署上去。
2.智能的缩扩容机制:部署时候会自动去考虑容器应该部署在哪个服务器上,以及副本的数量可以自定义。
3.自愈功能:某个节点的服务崩溃了,可以自动迁移到另外一个服务器节点来恢复来实现高可用。
4.智能的负载均衡:利用Ingress,可以实现流量通过域名访问进来时候,进行流量的分流到不同服务器上。
5.智能的滚动升降级:升级或者降级时候,会逐个替换,当自定义数量的服务升级OK后,才会进行其他的升级以及真正销毁旧的服务。
不过后面还能不支持docker?docker已经不是容器领域的绝对大哥。。。https://zhuanlan.zhihu.com/p/333367514
4、docker 1号进程
https://shareinto.github.io/2019/01/30/docker-init(1)/
docker 是监听1号进程,如果1号进程死亡,则docker死亡。
1号进程就是
CMD [ "sh", "-c", "service nginx start"] 主进程实际上是 sh
CMD ["nginx", "-g", "daemon off;"] 直接执行 nginx 可执行文件,并且要求以前台形式运行
5、私有仓库
私有仓库是通过前缀和path进行区分。
6、删除镜像
Untagged 和 Deleted
删除行为分为两类,一类是 Untagged
,另一类是 Deleted
。镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签。
因此当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged
的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete
行为就不会发生。所以并非所有的 docker image rm
都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。
当该镜像所有的标签都被取消了,该镜像很可能会失去了存在的意义,因此会触发删除行为。镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变得非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。这种情况,依旧不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。
除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。之前讲过,容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。因此该镜像如果被这个容器所依赖的,那么删除必然会导致故障。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像。
7、加快容器pull速度
https://segmentfault.com/a/1190000023117518
8、docker compose
https://juejin.cn/post/6844904046025768974
compose和K8S一样是用于管理部署多容器。
Docker :
Docker是一种容器技术,可以让您对应用程序进行容器化。Docker是使用其他技术的核心。
Docker Compose:
允许配置和启动多个docker容器。当你想要启动多个docker容器并且不想使用docker run分别启动每个Docker容器时,可以使用Docker compose启动。
Docker Swarm:
Docker swarm用于在多个主机上运行和连接容器。Docker swarm是一个容器集群管理和编排工具。它管理在多个主机上运行的容器,并执行缩放,在崩溃时启动新容器,网络容器……
Docker swarm是生产环境中的docker。它是嵌入在Docker引擎中的本机docker编排工具。名为stack file的docker swarm文件与docker compose文件非常相似。
Kubernetes:
由Google开发的容器编排工具。Kubernetes的目标与Docker swarm的目标非常相似。
Docker Cloud:
一种付费的企业级docker服务,允许您在云服务器或本地服务器上构建和运行容器。它提供了一个Web UI和一个中央控制面板来运行和管理容器,同时在用户友好的Web界面中提供所有docker功能。
9、docker命令
docker cp 复制容器内的文件