12、Docker & Kubernetes学习笔记

Docker是一个开源的应用容器引擎,基于Go语言实现,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,性能开销极低。解决了软件跨环境迁移问题。

沙箱机制就是将 代码限定在特定的运行范围中

容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统(一台硬件上可以安装多个不同操作系统的虚机,但一台硬件上运行的容器,其镜像用到硬件的操作系统,所以容器必须与硬件操作系统保持一致,比如linux机器上只能运行linux相关的容器,不能运行windows相关的容器)。










镜像(Image):Docker 镜像就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。默认情况下从docker hub(https://hub.docker.com/)上下载docker镜像太慢。一般都会配置镜像加速器。
镜像、容器、仓库的概念可以类比代码、进程、github。
在这里插入图片描述










Docker服务相关命令
启动Docker systemctl start docker
停止Docker systemctl stop docker
重启Docker systemctl restart docker
查看状态 systemctl status docker
开机启动 systemctl enable docker

Docker镜像相关命令
查看所有本地镜像 docker images
查看所用镜像id docker images –q
远程查找镜像 docker search 镜像名称
远程拉取镜像 docker pull 镜像名称
删除指定本地镜像 docker rmi 镜像id
删除所有本地镜像 docker rmi docker images -q (docker images -q命令是查询所有本地镜像的id)(`是tab键上面那个键)

Docker容器相关命令
容器名称 使用镜像
创建并启动容器 docker run 参数 如docker run -it --name c1 redis:5.0 /bin/bash
查看正在运行的容器 docker ps
查看所有容器 docker ps -a
进入容器 docker exec 参数 如docker exec -it c2 /bin/bash
启动容器 docker start 容器名称
停止容器 docker stop 容器名称
删除容器 docker rm 容器名称或id (如果容器是运行状态则删除失败,需要停止容器才能删除0
删除所有容器 docker rm docker ps -aq (docker ps -aq命令是查询所有容器的id))
查看容器信息 docker inspect 容器名称

docker run参数说明
-i:保持容器运行,通常与 -t 同时使用。没有客户端连接也会一直运行不回自动关闭。
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
-d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
-it 创建的容器一般称为交互式容器,创建后立马进入容器,exit退出后立马关闭容器。
-id 创建的容器一般称为守护式容器 ,创建后不会进入容器,需要使用命令进入。使用exit退出后不会关闭容器。
–name:为创建的容器命名。










Docker容器删除后,在容器中产生的数据就不在了;Docker容器与外部机器不能直接交换文件;容器之间也需要数据交换。这三个需求就用到数据卷。
一个数据卷可以被多个容器挂载。一个容器也可以挂载多个数据卷。

启动容器时使用-v参数设置数据卷(目录必须是绝对路径,目录不存在会自动创建,可以挂载多个数据卷)
docker run … –v 宿主机目录(文件):容器内目录(文件) …
如:
挂载单个数据卷:docker run -it --name=c1 -v /data/docker:/root/data_container centos:7 /bin/bash
挂载多个数据卷:docker run -it --name=c2 -v /data/docker2:/root/data2 -v /data/docker3:/root/data3 centos:7 /bin/bash

配置数据卷容器:docker run -it --name=c3 -v /volume centos:7
容器c1挂载到c3容器上:docker run -it --name=c1 --volumes-from c3 centos:7
容器c2挂载到c3容器上:docker run -it --name=c2 --volumes-from c3 centos:7










Docker 镜像本质是一个分层文件系统。

Docker镜像是由特殊的文件系统叠加而成的,最底端是bootfs,使用宿主机的bootfs。 第二层是 root文件系统rootfs,称为base image,然后再往上3层4层可以叠加其他的镜像文件。统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。

Docker 中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个个G?Centos的iso镜像文件包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs,只有rootfs和其他镜像层。
Docker 中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70多MB?由于docker中镜像是分层的,tomcat虽然只有70多MB,但他需要依赖于父镜像和基础镜像,所有整个对外暴露的tomcat镜像大小500多MB。

Dockerfile是用来构建Docker镜像的文件,就说一个文本文件,是由一系列命令和参数构成的脚本。简单来说,Dockerfile是镜像的源码,用于制作docker镜像。










服务编排就是按照一定的业务规则批量管理容器,主要针对微服务架构中包含多个个微服务且每个微服务会部署多个实例,如果每个微服务都要手动启停,维护的工作量过大的问题。

Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务的构建,启动和停止。使用步骤:利用 Dockerfile 定义运行环境镜像;然后使用 docker-compose.yml 定义组成应用的各服务;然后运行 docker-compose up 启动应用。










Kubernetes 是容器和集群管理的标准

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值