docker简介

Docker简介

1:什么是docker

Docker是一个被广泛使用的开源容器引擎,是一种操作系统级别的虚拟化技术,它以一种特殊进程的方式运行于宿主机上,它依赖于liunx内核特性:namespace(名字空间进行资源的隔离)和cgroups(限制、记录任务组所使用的物理资源),它也可以对应用程序进行打包。

docker简介插图

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:容器和虚拟机的比较

docker简介插图1

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:管理镜像常用命令

docker简介插图2

9:容器管理

9.1:创建容器命令的常用选项参数

docker简介插图3

9.2:创建容器时容器资源限制相关的的选项参数

docker简介插图4

示例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:容器管理常用命令

docker简介插图5

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格式

docker简介插图6

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

举报/反馈

原文链接:https://baijiahao.baidu.com/s?id=1692361731135557712&wfr=spider&for=pc

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享