容器知识图谱
2021-02-21 21:51:25 22 举报
AI智能生成
docker
作者其他创作
大纲/内容
容器就是一个进程, 这个进程拥有一个Namespace,通过Namespace,
让进程有独立的文件系统,独立的进程,独立的网络等 .
应用程序作为该进程的子进程运行
让进程有独立的文件系统,独立的进程,独立的网络等 .
应用程序作为该进程的子进程运行
docker概念
image: 镜像文件, 用于生成容器实例
dockerfile: 用于生成image文件
repository: 用于存放image
docker原理
容器的本质一种进程隔离技术, 容器为进程提供了隔离环境
容器内的进行无法访问容器外的进程,
启动一个容器,该容器在主机上表现为一个进程, 容器内的
进程是容器进程的子进程
容器内的进行无法访问容器外的进程,
启动一个容器,该容器在主机上表现为一个进程, 容器内的
进程是容器进程的子进程
文件系统隔离, 类似于chroot 命令, 可以把某个目录设置为根目录
namespace隔离
文件系统隔离(Mount Namespace): 类似于chroot
进程通信隔离(IPC Namespace): 限制进程间的通信
进行隔离(PID Namespace)
用户隔离(user Namespace)
网络隔离(Network Namespace): 网络隔离
主机名隔离(UTS Namesapce)
cgroups
资源限制: 闲置任务可以使用的资源, 入CPU, 内存等
资源统计: 统计任务使用的资源情况
优先级分配
docker run -it --rm --cpu-period=100000 --cpu-quota=200000 centos /bin/bash
--cpu-period和 –cpu-quota 表示在每100毫秒的时间里,
运行进程使用的cpu时间最多为200毫秒(也就是要占用两个cpu)
--cpu-period和 –cpu-quota 表示在每100毫秒的时间里,
运行进程使用的cpu时间最多为200毫秒(也就是要占用两个cpu)
libcontainer
提供了简单的接口供用户调用
docker 并不直接使用Namespace和cgoups, 而是通过libcontainer提供的接口
dockerfile
FROM
RUN: 执行的命令, 可以有多个,
每执行一次都会生成新的镜像层级
一般用于安装程序
每执行一次都会生成新的镜像层级
一般用于安装程序
CMD: 容器启动后默认执行的命令, 只能有一个CMD .
如果docker run 命令指定了命令, 可以覆盖CMD命令
如果docker run 命令指定了命令, 可以覆盖CMD命令
ENTRYPOINT: 类似于CMD, 但是该命令的不会被覆盖,
docker run 后面的命令会变为ENTRYPOINT的参数
docker run 后面的命令会变为ENTRYPOINT的参数
COPY: 复制上下文中的文件到镜像中, 仅仅复制目录中的内容, 不包含目录本身
ADD: 是COPY的超集.
还可以解压, 或者是复制URL中的内容到镜像
还可以解压, 或者是复制URL中的内容到镜像
MAINTAINER: 作者
VOLUME: 挂载物理机的目录到容器的某个目录
还有其他挂载方式: docker run -v : 使用 -v实现挂载目录
还有其他挂载方式: docker run -v : 使用 -v实现挂载目录
ENV: 环境变量
EXPOSE: 可以使用的端口
WORKDIR: 工作目录, 基于centos的镜像的容器都是一样的目录结构
STOPSINGLE
LABEL
ARG
ONBUILD
SHELL
常用命令
构建镜像docker build -t jscp-app-002 .
运行容器docker run -d --name jscp-app-004 -p 7780:8080 jscp-app-004
查看容器日志docker logs --tail 300 -f jscp-app-003
查看容器docker ps
进入容器
docker exec -it 8dba003f33de /bin/bash
docker exec -it 8dba003f33de /bin/bash
K8S
0 条评论
下一页