1、
https://baijiahao.baidu.com/s?id=1692361731135557712&wfr=spider&for=pc
Docker是一个被广泛使用的开源容器引擎,是一种操作系统级别的虚拟化技术,它以一种特殊进程的方式运行于宿主机上,它依赖于liunx内核特性:namespace(名字空间进行资源的隔离)和cgroups(限制、记录任务组所使用的物理资源),它也可以对应用程序进行打包。
2:docker安装
看上节
3:docker设计目标
3.1:提供一个简单的应用程序打包工具,可以将应用程序和它相关依赖的包都会打进去
3.2:开发人员和运维人员职责逻辑分离,开发人员只需要关心如何打包容器,运维人员只需要关心怎么去管理这些容器,不需要关心里面具体的配置
3.3:多环境保持一致性,不管测试环境正式环境,只需要部署docker镜像
4:docker基本组成
4.1:docker client 客户端
4.2:docker daemon docker守护进程
4.3:docker images 镜像
4.4:docker container 容器
4.5:docker registry 镜像仓库
5:容器和虚拟机的比较
6:镜像的概念
6.1:什么是镜像
它是一个分层存储的文件,是一个软件环境,一个镜像可以创建多个容器,一种标准化的交付,一个不包含liunx内核的精简的操作系统
6.2:在哪里下载镜像
https://hub.docker.com/explore是由docker公司维护的公共的注册中心,包含大量的容器镜像,docker工具默认从这个地址下载镜像
6.3:配置国内下载镜像地址
由于官方在国外,下载很慢,需要配置一个国内的下载地址
a:执行下面命令:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
b:执行完会生成/etc/docker/daemon.json文件,里面就是地址
c:配置完成后需要重启docker才会生效,执行命令
systemctl restart docker
7:镜像与容器的关联
一个镜像可包含多个容器,容器是在镜像的最上面加了一层读写层,镜像里面的文件改动时,它不会直接改动镜像,而是将要改动的文件拷贝到读写层,如果容器删除了,最上面的读写层也就删除了,改动也就丢失了,所以无论多少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作的,并不会修改镜像的源文件,这种方式提高了磁盘的利用率。如果想持久化这些改动,可以通过docker commit将容器保存成一个新镜像。
8:管理镜像常用命令
9:容器管理
9.1:创建容器命令的常用选项参数
9.2:创建容器时容器资源限制相关的的选项参数
示例1:
允许容器最多使用500M内存和100M的Swap,并禁用OOM Killer:
docker run -d --name nginx003 --memory ==”500M” --memory-swap=”600M” --oom-kill-disable nginx
示例2:
允许容器最多使用一半的CPU
docker run -d --name nginx003 --cpus=”1.5” nginx
示例3:
允许容器最多使用50%的CPU
docker run -d --name nginx003 --cpus=”0.5” nginx
9.3:容器管理常用命令
10:宿主机上的数据目录挂载到容器中
就是容器中使用宿主机上的目录,即使容器删除了,宿主机上的目录也不会被删除,docker提供了三种方式
方式1:volumes
保存数据的最佳方式,docker管理宿主文件系统的一部分,在/var/lib/docker/volumes中
方式2:bind mounts
将宿主机上的任意位置的文件或者目录挂载到容器中
方式3:tmpfs
挂载存储在主机系统的内存中,而不会写入主机文件系统,如果不希望将数据持久存储在任何位置,可以使用此方式,同时避免写入容器可写层提高性能。
11:docker中的几种网络模式
11.1:bridge
-net=bridge
默认网络,docker启动后创建一个docker0的网桥,默认创建的容器也是添加到这个网桥中。
11.2:host
-net=host
容器不会获得一个独立的network namespace,而是与宿主机共用一个,这就意味着容器不会有自已的网卡信息,而是使用宿主机的,容器除了网络,其它都是隔离的。
11.3:none
-net=none
获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置
11.4:container
-net=container:name/Id
与指定的容器使用用一个network namespace,具有同样的网络配置信息,两个容器除了网络,其它还是隔离的。
11.5:自定义网络
与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信。
12:dockerfile使用
dockerfile就是一个文件,里面包含了很多的指令,可以通过指令构建出我们想要的镜像来。
12.1:dockerfile格式
12.2:Build镜像
docker build [OPTIONS] PATH | URL | [flags]
OPTION主要二个
-t,--tag list #镜像名称
-f,--file string #指定dockerfile文件位置
13:镜像仓库HarBor简介
harbor是vmware公司开源的容器镜像仓库,他提供了用户图形界面,角色权限管理等,在我们镜像相当多的时候,可以放到一个中心进行管理,可以理解为我们maven的本地私服
可参考官方文档:https://vmware.github.io
14:容器监控相关
Prometheus
kubernetes
标签:容器,--,宿主机,网络,参数,常用命令,镜像,Docker,docker From: https://www.cnblogs.com/yaok430/p/16738002.html