什么是容器?
1.操作系统的架构:
进程可见,相互通信
共享一份文件系统
2.容器的架构:
资源视图隔离 - namespace
控制资源的使用率 - cgroup
独立的文件系统 - chroot
容器,是一个视图隔离、资源可限制、独立文件系统的进程集合。
- 视图隔离–如能看见部分进程,独立主机名等等;
- 控制资源使用率―如2G内存大小,CPU使用个数等等;
什么是镜像?
运行容器所需要的所有文件集合称为镜像。
dockerfile-描述镜像的构建步骤
构建步骤所产生出系统文件的变化-changeset
- 类似disk snapshot
- 提高分发效率,减少磁盘压力(基于镜像创建镜像)
如何构建镜像?
Dockerfile构建镜像是以基础镜像为基础的,Dockerfile是一个文本文件,内容是用户编写的一些docker指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
类型 | 命令 |
---|---|
基础镜像信息 | FROM |
维护者信息 | MAINTAINER |
镜像操作指令 | RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等 |
容器启动时执行指令 | CMD、ENTRYPOINT |
创建nginx镜像的dockerfile:
#在centos上安装nginx
FROM centos
#标明著作人的名称和邮箱
MAINTAINER your
#测试一下网络环境
RUN ping -c 1 www.baidu.com
#安装nginx必要的一些软件
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
#把nginx安装包复制到/usr/src/目录下
ADD nginx-1.15.8.tar.gz /usr/src/
#切换到/usr/src/nginx-1.15.8编译并且安装nginx
RUN cd /usr/src/nginx-1.15.8 \
&& mkdir /usr/local/nginx \
&& ./configure --prefix=/usr/local/nginx && make && make install \
&& ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ \
&& nginx
#删除安装nginx安装目录
RUN rm -rf /usr/src/nginx-nginx-1.15.8
#对外暴露80端口
EXPOSE 80
#启动nginx
CMD ["nginx", "-g", "daemon off;"]
如何运行容器?
①基于dockerfile文件构建镜像,push到镜像仓库;
②从 docker registry下载镜像― docker pull backup:1.25
③查看本地镜像列表– docker images
③选择相应的镜像并运行– docker run [-d]—name demo backup:1.25 top
小节
容器–和系统其他部分隔离开的进程集合
镜像–容器所需要的所有文件集合–Build once, Run anywhere
容器运行时的生命周期
单进程模型
1.lnit进程生命周期=容器生命周期
2.运行期间可运行exec执行运维操作
数据持久化
1.独立于容器的生命周期
2.数据卷- docker volume vs bind
- 第一种方法是通过bind直接将主机的目录挂载到容器中。这种方法相对简单,但会带来操作和维护成本,因为它依赖于主机的目录,需要对所有主机统一管理。
- 第二种方法是将目录管理留给运行中的引擎。