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.数据库等工具,迁移项目就需要在新的机器重新配置这些 ...
随机推荐
- 【转】Android 5.0 : Parsing Data for android-21 failed unsupported major.minor version 51.0
http://code2care.org/pages/parsing-data-for-android-21-failed-unsupported-major.minor-version-51.0/ ...
- [BUUOJ记录] [GXYCTF2019]Ping Ping Ping
主要考察RCE的防护绕过,感觉考的还是比较全的 先构造Payload: ?ip=127.0.0.1;ls 看到目录下有两个文件,fuzz一下发现过滤了 空格 / + * ? { } ( ) [ ]等符 ...
- 条件竞争(race condition)
条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生. 参考了一些资料,发现一个比较能说明问 ...
- bootstrap-table存在合并单元格怎么处理数据
效果如图: js文件如下: $(function () { initTable() $('#load_vip').change(function () { $ .ajax({ type: 'POST' ...
- mysql InnoDB引擎是否支持hash索引
看一下mysql官方文档:https://dev.mysql.com/doc/refman/5.7/en/create-index.html , 从上面的图中可以得知,mysql 是支持hash索引的 ...
- Spring Boot 整合Redis 实现缓存
本文提纲 一.缓存的应用场景 二.更新缓存的策略 三.运行 springboot-mybatis-redis 工程案例 四.springboot-mybatis-redis 工程代码配置详解 ...
- 有关Sql中时间范围的问题
背景 有时候需要利用sql中处理关于时间的判别问题,简单的如比较时间的早晚,判断一个时间是否在一段时间内的问题等.如果简单将时间判断与数值比较等同,那就会出现一些问题. 处理方式 处理Sql时间范围的 ...
- Kubernetes-5:搭建企业级私有仓库Harbor
搭建企业级私有仓库Harbor 安装需求 python版本 >= 2.7 Docker引擎版本 >= 1.10 docker-compose版本 >= 1.6.0 安装环境 一.Py ...
- JS语法_其他
严格模式 let obj = { name: 'oceans', } function f1() { with (obj) { console.log(name) } } function f2() ...
- 阿里云openssl升级,实现nginx主动推送,nginx主动推送能够有效减少不必要的报文传输,减少用户请求次数,以达到更快访问速度
现有版本检查 [root@node3 ~]# openssl version #这个版本是无法支持http2.0主动推送功能.需要升级为2019版本. OpenSSL 1. ...