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.数据库等工具,迁移项目就需要在新的机器重新配置这些 ...
随机推荐
- Google Kick Start 2020 Round B T4 Wandering Robot
题意 一个\(n \times m\)的矩形空间,起点是\((1,1)\),终点是\((n,m)\). 假设当前位于\((x,y)\): 如果当前位于最后一行,那么下一步只能走向\((x,y+1)\) ...
- java基础(swing+jsp+mybatis配置)
JAVA SE GUI编程(swing) # 组件 描述 1 JFrame 一个普通的窗口(绝大多数 Swing 图形界面程序使用 JFrame 作为顶层容器) 2 JDialog 对话框 常用的中间 ...
- Oracle的dbms_random.value(min,max)函数包括边界值吗?数据是如何分布的?
事先申明下,我的DB环境是Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production,不保证在其它版本下也 ...
- 【NOIP2012模拟8.7】奶牛编号
Description Input Output Solution 对于这道题,我们先设0放x个,1放k个k个 设当前剩下x'个0和k'个1,则对于剩下的位置,我们可以把它抽象成将x'个0插入到x'+ ...
- Solr专题(四)Solr安全设置
因为solr的admin界面默认只需要知道ip和端口就能直接访问,如果被别有用心的人盯上就很容易给你的系统带来重大的破坏,所以我们应该限制访问. 请注意本例使用的是Solr7. Solr集成了以下几 ...
- numpy函数笔记(持续更新)
numpy函数笔记 np.isin用法 np.isin(a,b) 用于判定a中的元素在b中是否出现过,如果出现过返回True,否则返回False,最终结果为一个形状和a一模一样的数组.(注意:这里的a ...
- Js获取某个节点的类名
1. document.querySelectorAll(".style-color")[0].getAttribute("class") 2. $('.s ...
- flutter权限管理permission_handler
flutter权限管理permission_handler 添加依赖 #权限 permission_handler: ^3.0.0 使用 在android的mainfest中添加权限: <use ...
- 绝了!一个妹子 rm -rf 把公司整个数据库删没了...
经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据.对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错.也希望遇到问题的朋友能找到一丝灵感解决问题. 01 事故背景 安排一个妹子 ...
- Java多线程--原子性、可见性、有序性
计算机的内存模型: 计算机在运行行程序的时候,指令由CPU执行,计算机上数据存放在物理内存当中,CPU在执行指令的时候免不了要和数据打交道.刚开始,还相安无事的,但是随着CPU技术的发展,CPU的执行 ...