centos 7 安装docker 常用指令
什么是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)
支持平台
l Linux(centos,Debian,Fedora,Oracle,Linux,RHEL,ubuntu)
l Mac
l 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 常用指令的更多相关文章
- Centos7 docker 常用指令
Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上 一.docker的安装及卸载 1.查看当前系统内核版本: [root@docker ~]# uname - ...
- CentOS 7 安装 Docker
CentOS 7 安装 Docker 这里介绍 ContOS 7 的安装 docker V1.2+,包括阿里云加速 docker 镜像下载的设置,这对提升使用 docker 体验至关重要.其他系统安装 ...
- Docker学习笔记之-在CentOS中安装Docker
上一节演示了如何 通过Xshell连接CentOS服务,链接:Docker学习笔记之-通过Xshell连接 CentOS服务 本节将演示 如何在CentOS中安装 Docker 第一步:更新系统包到最 ...
- 在RedHat/CentOS下安装Docker(不升级内核)
由于内核版本问题,最初仅Ubuntu可以较好的支持Docker.不过,由于RedHat系列OS(REHL.CentOS)是目前主流的Linux服务器操作系统,所以令RedHat系列OS支持Docker ...
- 简单介绍一下在CentOS上安装Docker。
简单介绍一下在CentOS上安装Docker. 前置条件: 64-bit 系统 kernel 3.10+ 1.检查内核版本,返回的值大于3.10即可. $ uname -r 2.使用 sudo 或 r ...
- Centos 下面安装 docker
试过了虚拟机VM ,今天尝试在虚拟机centos 中安装 docker ,入门是看的阮一峰的http://www.ruanyifeng.com/blog/2018/02/docker-tutorial ...
- docker学习之路-centos下安装docker
前言 我要在云服务器上做一个asp.net core的webapi应用,使用docker来部署应用,中间用到的任何组件包括nginx和sqlserver 2017都是用docker来装载运行,所以,这 ...
- Centos下安装Docker,并配置国内docker源
Centos下安装Docker 替换为国内的yum源(可选): mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.re ...
- docker基础——关于安装、常用指令以及镜像制作初体验
为什么使用docker docker就是一个轻量级的虚拟机,他解决的是服务迁移部署的时候环境配置问题.比如常见的web服务依赖于jdk.Tomcat.数据库等工具,迁移项目就需要在新的机器重新配置这些 ...
随机推荐
- 令人蛋疼的错误提示 0xcdcdcdcd ,0xdddddddd ,0xfeeefeee ,0xcccccccc ,0xabababab
原文地址:http://www.cnblogs.com/pcchinadreamfly/archive/2012/04/26/2471317.html参考地址:http://blog.csdn.net ...
- Lua 调用的 C 函数保存 state 的两种方式: Storing State in C Functions 笔记
http://yanbin.is-programmer.com/posts/94214.html Registery的Key 1. 整数Key用于Lua的引用机制,所以不要使用整数作为Key 2. 通 ...
- springboot @valid与@validated的参数校验使用总结
好久没在这平台写博客了,最近整理了这东西,先给出总结 // @Valid只能用在controller,@Validated可以用在其他被spring管理的类上 // @Valid可以加在成员变量上(本 ...
- JavaScript(es6)数组常用的方法
常用方法 1.forEach() var data = [1,2,3,4,5]; var sum = 0;//求和 data.forEach((item)=>{sum+=item}) //给原数 ...
- springcloudalibaba与nacos服务注册流程图
springboot + springcloud + springcloudalibaba + nacos 服务注册流程图: springboot ①WebApplicationContext ②st ...
- java安全编码指南之:Number操作
目录 简介 Number的范围 区分位运算和算数运算 注意不要使用0作为除数 兼容C++的无符号整数类型 NAN和INFINITY 不要使用float或者double作为循环的计数器 BigDecim ...
- CVE-2020-0796(永恒之黑)漏洞复现
声明:仅供学习与参考,请勿用于非法用途(后果自负) 一.影响范围(需关闭 Win10 防火墙): Windows 10 Version 1903 for 32-bit Systems Windows ...
- 【Flutter 实战】1.20版本更新及新增组件
老孟导读:Flutter 1.20 更新了 Slider.RangeSlider.日期选择器组件.时间选择器组件的样式,新增了交换组件:InteractiveViewer,下面详细介绍其用法. 滑块 ...
- html基础:DOM操作
DOM(Document Object Model 文档对象模型) 一个web页面被封装成一个dom对象,通过dom中的js对页面的标签进行操作 一.获取对象 浏览器页面上右键--检查--consol ...
- Solr专题(四)Solr安全设置
因为solr的admin界面默认只需要知道ip和端口就能直接访问,如果被别有用心的人盯上就很容易给你的系统带来重大的破坏,所以我们应该限制访问. 请注意本例使用的是Solr7. Solr集成了以下几 ...