为什么使用容器

docker设计目标:
提供简单的应用打包工具
开发人员和运维人员职责逻辑分离
多环境保持一致性
轻量级 kubernetes设计目标:
集中管理所有容器
资源编排
资源调度
弹性伸缩
资源隔离

容器与虚拟机

虚拟机比容器多了一层完整的os系统
docker寄居于底层系统之上,能够节省资源开销.

docker的资源隔离和网络限制

1. namespace 实现了资源的隔离,分别是:
UTS,主机和域名隔离
IPC,消息队列,共享内存隔离
PID,进程隔离
Mount, 文件系统隔离
User,用户和用户组隔离 2. cgoups: 资源限制
进程资源限制
CPU使用限制
磁盘I/O限制 3. UFS: 联合文件系统.

安装docker

centos7.x :
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加Docker软件包源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装Docker CE
yum install -y docker-ce # 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
阿里云源:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#添加源 :
wget -O /etc/yum.repos.d/ali_docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 镜像加速源配置1 官方镜像:
[root@master yum.repos.d]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["hhttp://f1361db2.m.daocloud.io"]
} ----------------------------------------------------------------
镜像加速源配置2 阿里云镜像[稳定]:
[root@master yum.repos.d]# cat >/etc/docker/daemon.json<<eof
{
"registry-mirrors": ["https://ajvcw8qn.mirror.aliyuncs.com"]
}
eof
----------------------------------------------------------------
镜像加速源配置3 网易镜像:
#配置:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
} 加速配置与生效方法:
cat >/etc/docker/daemon.json<<EOF
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
#启动:
systemctl restart docker # 安装Docker CE
yum install -y docker-ce-18.03.1.ce-1.el7.centos #安装特定版本docker
yum list docker-ce --showduplicates | sort -r
列出后使用 yum install -y docker-ce-18.03.1.ce-1.el7.centos 安装指定版本即可 # 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker #镜像加速配置完后需要:
systemctl daemon-reload
systemctl restart docker ### 注意 4台服务器均要安装docker-ce 它作为k8s容器引擎是必备的.

镜像加速

##配置docker镜像加速
vi /etc/docker/daemon.json cat > /etc/docker/daemon.json <<eof
{
"registry-mirrors": ["https://v2ltjwbg.mirror.aliyuncs.com"]
}
eof #---------------------------------
{
"registry-mirrors": ["https://ajvcw8qn.mirror.aliyuncs.com"]
} 个人加速器获取地址:
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
#---------------------------------

镜像是什么

镜像是一个分层存储的文件
一个软件环境
一个镜像可以创建N个容器
一种标准化的交付
一个不包含Linux内核又是一个Linux操作系统. 一个Linux是由内核+文件组成的.
Linux提供内核,docker

docker默认镜像目录: /var/lib/docker/overlay2/

官方docker镜像仓库: hub.docker.com

创建一个容器:

#1. 创建容器需要考虑哪些?
1. 应用暴露
2. 主机名,ip
3. 数据是否持久化
4. 是否存在变量传入 #如何创建一个容器
docker run --name a-nginx -d -p 8080:80 nginx
将外部8080端口映射为容器内部nginx端口80

运行一个镜像后,它会在工作目录中创建一个读写层的目录,元数据信息,以及日志信息.

进入容器

docker exec -it a-nginx bash
docker exec -it b-nginx /bin/sh

删除容器

docker rm -f a-nginx

删除镜像

 docker rmi -f a-nginx

docker命令表

--privileged=true : 用于启动容器的权限参数.

docker run 时添加 --restart=always 作用:   启动docker的同时启动这个容器.
例子: docker run --name b-nginx -d -p 8082:80 --restart=always nginx
启动docker的同时,启动这个镜像 docker exec -it b-nginx /bin/sh

资源限制

-m --memory      #限制容器使用的内存
--memory-swap #允许交换分区到磁盘的内存
--memory-swappiness=<0-100> #容器使用swap的百分比,默认关闭-1
--oom-kill-disable #禁用oom
--cpus #可以使用cpu的数量[常用]
--cpuset-cpus #限制容器使用特定的cpu 如: 0-3 0,1
--cpu-shares #cpu共享(相对的权重)

资源限制示例:

#限制内存500MB 开启swap600MB 禁止被oom
docker run -d --name nginx01 --memory="500m" --memory-swap="600m" --oom-kill-disable nginx #限制CPU示例,最多可以使用1.5个cpu
docker run -d --name nginx02 --cpus="1.5" nginx #限制最多使用50%cpu
docker run -d --name nginx05 --cpus=".5" nginx

docker基础使用和资源限制的更多相关文章

  1. Docker基础内容之资源限制

    内存限制 --memory:内存限定,格式是数字加单位,单位可以为 B.K.M.G.最小为 4M. --memory-swap:交换分区大小限定 CPU限制 --cpus:表示分配给容器可用的cpu资 ...

  2. 学习资源 Docker从入门到实践 pdf ,docker基础总结导图

    学习资源 Docker从入门到实践 pdf ,docker基础总结导图 Docker从入门到实践 pdf 云盘地址:https://pan.baidu.com/s/1vYyxlW8SSFSsMuKaI ...

  3. [Docker基础]如何清除不用的资源

    Docker - How to cleanup resources 有时你可能需要清理Docker中不用的资源,特别是在学习Docker过程中创建的镜像.容器.网络.存储卷等. delete volu ...

  4. Docker基础入门及示例

    Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...

  5. Docker 基础 : 镜像

    目录 获取镜像 查看镜像信息 搜索镜像 删除镜像 创建镜像 导出和导入镜像 上传镜像 总结 镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的 ...

  6. Docker 基础技术之 Linux cgroups 详解

    PS:欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 推荐大家到公众号阅读,那里阅读体验更好,也沉淀了很多篇干货. 前面两篇 ...

  7. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

  8. docker基础内容讲解

    一.初识docker 1.1 LXC介绍 LXC为LinuX Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提 ...

  9. Docker 基础概念科普 和 常用操作介绍

    Docker 基础概念 Docker是什么?         Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之 ...

  10. 【补充】docker基础学习

    docker 基础知识 之前写了一篇docker未授权访问的文章,现在来补充一下docker基础知识,以便更好的学习docker上的漏洞. docker是一款轻量级的虚拟化的产品,它属于层级化的架构. ...

随机推荐

  1. sass的用法重温

    Sass使用变量,变量以$开头 $bgcolor:#f40; background-color:$bgcolor; 如果变量需要嵌套在字符串当中,就需要写在#{}之中 $direction:left; ...

  2. em/px/rem/vh/vw的区别

    一.介绍 传统的项目开发中,我们只会用到px.%.em这几个单位,它可以适用于大部分的项目开发,且拥有比较良好的兼容性 从CSS3开始,浏览器对计量单位的支持又提升到了另外一个境界,新增了rem.vh ...

  3. 力扣451(java)-根据字符出现频率排序(中等)

    题目: 给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 .一个字符出现的 频率 是它出现在字符串中的次数. 返回 已排序的字符串 .如果有多个答案,返回其中任何一个. 示例 1: 输入 ...

  4. 力扣233(java)-数字1的个数(困难)

    题目: 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数. 示例 1: 输入:n = 13输出:6示例 2: 输入:n = 0输出:0 提示: 0 <= n <= ...

  5. 一个好的网站logo设计长这样

    ​简介:一个好的网站logo,不仅让用户一眼知道网站品牌传递的信息,还能提高网站专业度和丰富度,增加SEO搜索排名.今天分享下如何设计一款实用的网站logo.阿里云智能logo设计,在线免费体验log ...

  6. 云效故障定位研究论文被ICSE 2021 SEIP track收录

    近期,由阿里云云效团队联合复旦大学CodeWisdom研究团队.阿里技术风险部安全生产团队,合作完成的论文<MicroHECL: High-Efficient Root Cause Locali ...

  7. Flink 1.13,面向流批一体的运行时与 DataStream API 优化

    简介: 在 1.13 中,针对流批一体的目标,Flink 优化了大规模作业调度以及批执行模式下网络 Shuffle 的性能,以及在 DataStream API 方面完善有限流作业的退出语义. 本文由 ...

  8. [FAQ] curl SSL_connect: SSL_ERROR_SYSCALL / wget Unable to establish SSL connection

    当客户端访问 https 网站时遇到这些错误提示,通常问题出在服务器,而不是客户端. 因为你换一个 https 网站进行请求,可以验证这一点. 通过浏览器访问正常,大多数浏览器通过重试较低的 TLS ...

  9. [Go] 浅谈 gorm 执行 AutoMigrate 的两种时机

    第一种就是直接在操作 model 的逻辑中,执行 db.AutoMigrate,模型没有更新时不会有 schema 相关的 sql 被执行. 第二种就是单独定义一个属于 main 包的 go 文件,专 ...

  10. dotnet 使用 ConfigureAwait.Fody 库设置默认的 await 同步上下文切换配置

    在 dotnet 里面,使用 await 进行异步逻辑,默认是会尝试切换回调用 await 的线程同步上下文.这个机制对于大多数的上层应用来说都是符合逻辑且方便的逻辑,例如对于带 UI 线程的 WPF ...