什么是docker

l  使用最广泛的开源容器引擎

l  一种操作系统级的虚拟化技术

l  依赖于Linux内核特性:Namespace和Cgroups

l  一个简单的应用程序打包工具

docker的设计目标

l  提供简单的应用程序打包工具

l  开发人员和运维人员职责逻辑分离

l  多环境保持一致

docker基本组成

l  Docker Client:客户端

l  Docker Daemon:守护进程

l  Docker Images:镜像

l  Docker Container:容器

l  Docker Registry:镜像仓库

docker应用场景

l  应用程序打包和发布

l  应用程序隔离

l  持续集成

l  部署微服务

l  快速搭建测试环境

l  提供PaaS产品(平台即服务)

docker版本

²  社区版(Community Edition  简称CE)

²  企业版(Enterprise Edition 简称EE)

支持平台

Linux(centos,Debian,Fedora,Oracle,Linux,RHEL,ubuntu)

Mac

Windows

centos 7.x 安装docker

docker不支持centos6以及更老的版本

安装前基础优化

#安装基础软件
yum install -y lrzsz nmap tcpdump screen tree dos2unix nc iproute net-tools unzip wget vim bash-completion.noarch telnet ntp ntpdate lsof crul #更新补丁
echo -e "exclude=kernel*\nexclude=centos-release*" >>/etc/yum.conf
yum update -y #修改字符集
echo "LANG="zh_CN.UTF-8"" >/etc/locale.conf
source /etc/locale.conf #关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd –state #关闭selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0 # 时间同步
echo "#time sync by fage at 2017-1-12" >>/var/spool/cron/root && echo "*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1" >>/var/spool/cron/root && systemctl restart crond.service

 卸载旧版本docker

yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

使用阿里云源进行安装docker-ce并配置加速器

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
mkdir -p /etc/docker
cat >/etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker.service 

管理镜像常用命令

指令

描述

ls

列出镜像

build

构建镜像来着Dockerfile

history

查看镜像历史

inspect

显示一个或多个镜像详细信息

pull

从镜像仓库拉取镜像

push

推送一个镜像到镜像仓库

rm

移除一个或多个镜像

prune

移除为使用的镜像,没有标记或被任何容器引用的

tag

创建一个引用源镜像标记目标镜像

export

导出容器文件系统到tar归档文件

import

导入容器文件系统tar归档文件创建镜像

save

保存一个或多个镜像到一个tar归档文件

load

加载镜像来自tar或标准输入

创建容器常用选项

选项

描述

-i,-interactive

交互式

-t, -tty

分配一个伪终端

-d,-detach

运行容器到后台

-e,-env

设置环境变量

-p,-publish list

发布容器端口到主机

-P,-publish-all

发布容器所有EXPOSE的端口到宿主机随机端口

-name string

指定容器名称

-h,-hostname

设置容器主机名

-ip string

指定容器IP,只能用于自定义网络

-network

连接容器到一个网络

-mount mount

将文件系统附加到容器,挂载

-v,-volume list

绑定挂载一个卷

-restart string

容器退出时重启策略,默认:on,可选值:[always | on-failure]

容器资源限制

选项

描述

-m , -memory

容器可以使用的最大内存量

-memory-swap

允许交换到磁盘的内存量

-memory-swappiness=<0-100>

容器使用swap分区交换的百分比(0-100,默认为-1)

-oom-kill-disable

禁用OMM Killer,如果不禁用会杀掉宿主机使用内存最高的进程

-cpus

可以使用的CPU数量

-cpuset-cpus

限制容器使用特定的CPU核心,如(0-3,  0,1)

-cpu-shares

CPU共享(相对权重)

示例:

内存限额:

允许容器最多使用500M内存和100Mswap(禁用填写和内存一样),并禁用OMM Killer:

docker run -d --name nginx3 --memory="500m" --memory-swap="600m" --oom-killer-disable nginx

docker stats  web3            #动态查看资源使用情况

docker stats --no-stream web3  #静态方式查看资源使用情况

CPU限额:

允许容器最多使用一点五核的CPU:

docker run -d --name nginx4 --cpus="1.5" nginx

允许容器最多使用50%的CPU:

docker run -d --name ngixn5 --cpus=".5" nginx

管理镜像常用命令

选项

描述

ls

列出容器

inspect

查看一个或多个容器详细信息

exec

在运行容器中执行命令

commit

创建一个新镜像来自一个容器

cp

拷贝文件/文件到一个容器

logs

获取容器日志

port

列出或致电容器端口映射

top

显示一个容器运行的进行

stats

显示容器资源使用统计

stop/start

停止/启动一个或多个容器

rm

删除一个或多个容器

update

更新容器使用资源,仅限于资源更新,即时生效

管理应用程序数据

1、 将数据从宿主机挂载到容器中的三种放

2、 Volume

3、 Bind Mounts

l  volumes:Docker管理宿主机文件系统的一部分(/var/lib/volumes),保存数据的最近方式,持久化挂载

l  bind mounts:将宿主机上的任意位置的文件或者目录挂载到容器中,动态绑定挂载

l  tmpfs:挂载存储在主机系统的内存中,而不会写入主机的文件系统,如果不希望将数据持久存储在任何位置,可以使用tmpfs,同时避免写入容器可写层提高性能

Volume方式挂载

管理卷:

docker volume create nginx-vol    #创建数据卷,不创建的话指定路径去挂载会自动创建

docker volume ls                          #查看所有的数据卷

docker volume inspect nginx-vol  #查看数据卷的详细信息

挂载方式

docker run -d --restart=always --name nginx01 -p 88:80 --mount src=nginx_vol,dst=/usr/share/nginx/html nginx

数据卷是可以共享的,其他镜像可以容器可以共享使用,如果更改数据卷的内容,容器内也实时的更改,如果容器挂了,进不去也起不来了,可以重新起一个容器,使用原来的数据卷进行挂载,秒级启动还原,但是数据卷丢失了就都丢失了

Bind Mounts

docker run -d --restart=always --name nginx01 -p 88:80 --mount type=bind,src=/mnt/,dst=/usr/share/nginx/html nginx

Volume特点:

l  多个运行容器直接共享数据

l  当容器停止或被移除时,该卷依然存在

l  多个容器可以同时挂载相同的卷

l  当明确删除卷时,卷才会被删除

l  将容器的数据存在远程主机或者其他存储上

l  将数据从一台Docker主机迁移到另外一条时,先停止容器,然后备份数据卷目录(/var/lib/docker/volumes/)

Bind Mounts 特点:

l  从主机共享配置文件到容器,默认情况下,挂载主机/etc/resolv.conf到每个容器,提供DNS解析

l  在Docker主机上的开发环境和容器之间共享源代码,例如:可以将Meven target目录挂载到容器中,每次在Docker主机上构建Maven项目时,容器都可以访问构建的项目包。

l  当docker主机的文件或目录结构与容器所需的绑定挂载一致时

容器网络

1、 网络模式

2、 容器网络访问原理

bridge  桥接方式

-net=bridge

默认网络,docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中

host   使用宿主机的网络 

-net=host

容器不会获得一个独立的network namespace,而是与主机共用一个,这意味容器不会有自己的网卡信息,而是使用宿主机的,容器除了网络,其他都是隔离的

none  

-net=none

获取的network namespace,但不为容器进行任何网络配置,需要手动配置

container  

-net=container:Name/ID

与 指定的容器使用同一个network namespace,具有同样的网络配置,两个容器除了网络,其他都是隔离的

后面新建的容器使用之前建立好的容器网络

docker run -itd --restart=always --name bs -p 99:80 busybox

docker run -d --restart=always --name nginx01 --net container:bs nginx

自定义网络

与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或主机名容器之间网络通信

docker network create bs-test

然后启动容器的时候使用先创建的这个网络命名空间即可

docker run -it --name bs4 --net bs-test busybox

容器网络访问原理

docker设置容器使用固定IP

docker network create --subnet=172.172.0.0/24 docker-br0         # 创建网络

docker network ls |grep myNetwork

docker run -itd --name centos --network myNetwork --ip 172.18.0.2 centos bash   # 启动容器并加入自定义网络

docker inspect centos | grep IPAddress | tail -1    # 查看容器IP

centos 7 安装docker 常用指令的更多相关文章

  1. Centos7 docker 常用指令

    Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上 一.docker的安装及卸载 1.查看当前系统内核版本: [root@docker ~]# uname - ...

  2. CentOS 7 安装 Docker

    CentOS 7 安装 Docker 这里介绍 ContOS 7 的安装 docker V1.2+,包括阿里云加速 docker 镜像下载的设置,这对提升使用 docker 体验至关重要.其他系统安装 ...

  3. Docker学习笔记之-在CentOS中安装Docker

    上一节演示了如何 通过Xshell连接CentOS服务,链接:Docker学习笔记之-通过Xshell连接 CentOS服务 本节将演示 如何在CentOS中安装 Docker 第一步:更新系统包到最 ...

  4. 在RedHat/CentOS下安装Docker(不升级内核)

    由于内核版本问题,最初仅Ubuntu可以较好的支持Docker.不过,由于RedHat系列OS(REHL.CentOS)是目前主流的Linux服务器操作系统,所以令RedHat系列OS支持Docker ...

  5. 简单介绍一下在CentOS上安装Docker。

    简单介绍一下在CentOS上安装Docker. 前置条件: 64-bit 系统 kernel 3.10+ 1.检查内核版本,返回的值大于3.10即可. $ uname -r 2.使用 sudo 或 r ...

  6. Centos 下面安装 docker

    试过了虚拟机VM ,今天尝试在虚拟机centos 中安装 docker ,入门是看的阮一峰的http://www.ruanyifeng.com/blog/2018/02/docker-tutorial ...

  7. docker学习之路-centos下安装docker

    前言 我要在云服务器上做一个asp.net core的webapi应用,使用docker来部署应用,中间用到的任何组件包括nginx和sqlserver 2017都是用docker来装载运行,所以,这 ...

  8. Centos下安装Docker,并配置国内docker源

    Centos下安装Docker 替换为国内的yum源(可选): mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.re ...

  9. docker基础——关于安装、常用指令以及镜像制作初体验

    为什么使用docker docker就是一个轻量级的虚拟机,他解决的是服务迁移部署的时候环境配置问题.比如常见的web服务依赖于jdk.Tomcat.数据库等工具,迁移项目就需要在新的机器重新配置这些 ...

随机推荐

  1. 令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab

    原文地址:http://www.cnblogs.com/pcchinadreamfly/archive/2012/04/26/2471317.html参考地址:http://blog.csdn.net ...

  2. Lua 调用的 C 函数保存 state 的两种方式: Storing State in C Functions 笔记

    http://yanbin.is-programmer.com/posts/94214.html Registery的Key 1. 整数Key用于Lua的引用机制,所以不要使用整数作为Key 2. 通 ...

  3. springboot @valid与@validated的参数校验使用总结

    好久没在这平台写博客了,最近整理了这东西,先给出总结 // @Valid只能用在controller,@Validated可以用在其他被spring管理的类上 // @Valid可以加在成员变量上(本 ...

  4. JavaScript(es6)数组常用的方法

    常用方法 1.forEach() var data = [1,2,3,4,5]; var sum = 0;//求和 data.forEach((item)=>{sum+=item}) //给原数 ...

  5. springcloudalibaba与nacos服务注册流程图

    springboot + springcloud + springcloudalibaba + nacos 服务注册流程图: springboot ①WebApplicationContext ②st ...

  6. java安全编码指南之:Number操作

    目录 简介 Number的范围 区分位运算和算数运算 注意不要使用0作为除数 兼容C++的无符号整数类型 NAN和INFINITY 不要使用float或者double作为循环的计数器 BigDecim ...

  7. CVE-2020-0796(永恒之黑)漏洞复现

    声明:仅供学习与参考,请勿用于非法用途(后果自负) 一.影响范围(需关闭 Win10 防火墙): Windows 10 Version 1903 for 32-bit Systems Windows ...

  8. 【Flutter 实战】1.20版本更新及新增组件

    老孟导读:Flutter 1.20 更新了 Slider.RangeSlider.日期选择器组件.时间选择器组件的样式,新增了交换组件:InteractiveViewer,下面详细介绍其用法. 滑块 ...

  9. html基础:DOM操作

    DOM(Document Object Model 文档对象模型) 一个web页面被封装成一个dom对象,通过dom中的js对页面的标签进行操作 一.获取对象 浏览器页面上右键--检查--consol ...

  10. Solr专题(四)Solr安全设置

     因为solr的admin界面默认只需要知道ip和端口就能直接访问,如果被别有用心的人盯上就很容易给你的系统带来重大的破坏,所以我们应该限制访问. 请注意本例使用的是Solr7. Solr集成了以下几 ...