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.数据库等工具,迁移项目就需要在新的机器重新配置这些 ...
随机推荐
- Istio 的配置分析
Istio 的配置分析 目录 Istio 的配置分析 Analyzer 的消息格式 ConflictingMeshGatewayVirtualServiceHosts 问题解决 举例 Conflict ...
- 12_进程,线程,协程,IO多路复用的区别
1.进程 1.进程可以使用计算机多核 2.进程是资源分配的单位 3.进程的创建要比线程消耗更多的资源效率很低 4.进程空间独立,数据安全性跟好操作有专门的进程间通信方式 5.一个进程可以包含多个线程, ...
- 19_Python算法
1.冒泡算法 list = [1, 5, 2, 6, 9, 3, 4, 0] print(len(list)) # conunt = 1 while conunt < len(list): fo ...
- nginx模型概念和配置文件结构
一. nginx模型概念: Nginx会按需同时运行多个进程: 一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程( ...
- 哪些方法可以绕过PowerShell Execution Policy?
哪些方法可以绕过PowerShell Execution Policy? 转: https://blog.csdn.net/qq_27446553/article/details/50577296
- 再不迁移到Material Design Components 就out啦
翻译自国外文档加自己理解 原文 我们最近宣布了 Material Design Components(MDC)1.1.0 ,这是一个库更新,为您的 Android 应用程序带来了 Material T ...
- 对vue的初步学习
vue: vue:一个mvvm框架(库),和angular类似 比较容易上手 指令以v=xxx 一片html代码配合接送,在new一个vue实例 适合:移动端,小巧 vue基本雏形 v-model 一 ...
- 知识全聚集 .Net Core 技术突破 | 如何实现一个模块化方案一
简介 模块化的介绍一共2篇 这一篇我们实现一个功能非常简单的StartupModules模块化. 第二篇我们来实现一个ABP的模块化效果. 思考 其实来简单想一下模块化的实验思路,写个接口=>模 ...
- 阿里云docker部署mysql
看完我的上一个博客之后,对centos系统应该有一定的了解,话不多说,接下来我们来在docker容器中部署mysql. 1.下载mysql镜像,因为本人用的5.7版本,你也可以下载最新版,都是可以的 ...
- openstack 介绍
penstack介绍(1) 一.云计算的前世今生 所有的新事物都不是突然冒出来的,都有前世和今生.云计算也是IT技术不断发展的产物. 要理解云计算,需要对IT系统架构的发展过程有所认识. 请看下 ...