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.数据库等工具,迁移项目就需要在新的机器重新配置这些 ...
随机推荐
- MonoBehaviour生命周期与对象数据池应用
预热游戏对象: tempObject = Instantiate(cubePrefab) as GameObject ; tempObject .SetActive( false ); 游戏对象tem ...
- 手写mybatis框架
前言 很久没有更新mybatis的源码解析了,因为最近在将自己所理解的mybatis思想转为实践. 在学习mybatis的源码过程中,根据mybatis的思想自己构建了一个ORM框架 .整个代码都是自 ...
- java初探(1)之缓存技术
页面缓存的原理: 普通要想生成一个页面,需要该页面在springboot的templates目录下,然后通过springboot的内部渲染,视图解析器将页面渲染回客户端,这中间会花费很长的时间. 但如 ...
- directives 自定义指令
钩子函数 一个指令定义对象可以提供如下几个钩子函数 (均为可选): bind:只调用一次,指令第一次绑定到元素时调用.在这里可以进行一次性的初始化设置.基本数据类型如果发生改变,不会触发,但是引用数据 ...
- 使用zabbix监控sql server的发布订阅
(一)背景 个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制.在发布订阅环境搭建完成后,最重要的就是如何监控复制的状态了,sql serve ...
- docker 停止、启动、删除镜像指令
容器 docker ps // 查看所有正在运行容器 docker stop containerId // containerId 是容器的ID docker ps -a // 查看所有容器 dock ...
- 记一次线上OOM问题分析与解决
一.问题情况 最近用户反映系统响应越来越慢,而且不是偶发性的慢.根据后台日志,可以看到系统已经有oom现象. 根据jdk自带的jconsole工具,可以监视到系统处于堵塞时期.cup占满,活动线程数持 ...
- 谈谈 mysql和oracle的使用感受 -- 差异
之前一直使用mysql作为存储数据库,虽然中间偶尔使用sqlite作为本地数据库存储,但没有感觉多少差别. 后来遇上了oracle,且以其作为主要存储,这下就不得不好好了解其东西了.oracle作为商 ...
- Java 合并、拆分PPT幻灯片
序 在日常使用PPT时,为了便于操作和管理文档,时常会遇到需要将PPT幻灯片进行合并或拆分的情况.本文将通过Java程序来演示如何进行上述操作. 示例要点: 1. 合并PPT幻灯片 1.1 将第一个P ...
- Vue企业级优雅实战04-组件开发01-SVG图标组件
(后续的文章 公众号会提前一周更新,欢迎关注文末的微信公众号:程序员搞艺术) 预览本文的实现效果: # gitee git clone git@gitee.com:cloudyly/dscloudy- ...