标签:ges 镜像 标准 mis htm 空格 rac pts 信号
首先 —— 容器是一种虚拟化的方案,但与传统的虚拟机不同
传统虚拟机—— 通过中间层将一台或多台独立的机器虚拟运行在物理硬件之上
容器 —— 直接运行在操作系统上的用户空间,所以也被成为操作系统虚拟化,
只能运行相同或相似内核的操作系统
docker —— 依赖于linux的内核特性,所以只能运行以linux为基础的系统
有点 —— 不需要包含操作系统(虚拟机包含),所以资源占用减少,虚拟机需要模拟硬件行为,对内存和cup损
耗比较大,容器技术较复杂,不易管理,不易自动化,而docker很好的解决了这一系列行为
docker —— 将应用程序自动部署到容器的开源引擎,go语言,拥有应用程序部署引擎
docker特点 —— 简单轻量的建模方式、职责的逻辑分离、快速高效的开发生命周期(环境一直),面向服务的架
构(单个容器只运行一个)
docker作用 —— 使用docker容器开发、测试、部署;隔离运行环境;测试环境;PaaS;SaaS
Client 客户端
Daemon 守护进程
Image 镜像
Container 容器
Registry 仓库
客户端/守护进程 ——> c/s
客户端发送命令,命令传给守护进程,守护进程将结果返回给客户端
镜像
容器的基石,基于镜像启动与运行,层叠的只读文件系统
容器
通过镜像启动,执行单元,从镜像的可写层中(镜像顶层),写时复制
仓库
保存用户构建的镜像,docker hub(公用镜像)
关系 —— 客户端访问docker的守护进程,从而操作docker的容器,而容器是通过镜像进行启动与执行的,而镜像
保存在仓库之中,以上几位docker各部分的关系
Namespaces 命名空间
Control groups(cgroups) 控制组
变成语言包含命名空间的概念,可以理解为是一种封装的概念,而封装本省就是代码隔离
在操作系统中命名空间提供系统资源隔离(进程、网络、文件系统等)
分配资源。资源限制,优先级设定,资源计量,资源控制
文件隔离系统——每个容器都有自己的root文件系统
进程隔离——每个容器都运行在自己的进程环境之中
网络隔离——容器间的虚拟网络接口和IP地址都是分开的
资源隔离与分组——使用cgroups将cpu和内存之类的资源独立分配给每个docker容器
检查内核版本
uanme -a
检查device mapper(存储驱动)
ls -l /sys/class/misc/device-mapper、
推荐使用docker维护的版本
检查APT的https支持查看/usr/lib/apt/methods/https文件是否存在,如果不存在则运行安装命令进行安装(apt-get update) ,然后 apt-get install -y apt-transport-https
添加docker的APT仓库
echo deb https://get.docker.com/ubuntu docker main > /etc/apt/sources.list.d/docker.list
添加仓库的key
apt-key adv --keyserver hkp://keysever.ubuntu.com:80 --recv-keys 36.......E9(此处为key,省略)
安装
apt-get update
apt-get install -y lxc-docker
由于以上安装比较繁琐,所以推出了建议安装版本
sudo apt-get install -y curl
curl -sSL https://get.docker.com/ubuntu/ | sudo sh
启动容器
docker run image【command】【arg...】
docker run -i -t image /bin/bash 提供交互式的容器
-i --interactive=true|false 默认为false 始终打开标准输入
-t --tty=true|false 默认为false 为创建的容器分配一个伪tty终端
查看容器
docker ps 【-a】(列出所有的容器)【-l】(列出最新的容器)
不加参数时是列出运行中的容器
docker inspect 容器名字或者容器Id
自定义容器名
docker run --name (自定义名字) -i -t image /bin/bash
重启启用停止的容器
docker start 【-i】 容器名
删除不在运行中的容器
docker rm 容器名称或ID
守护式容器
什么是守护式容器——能够长期运行、没有交互式回话、适合运行应用程序与服务
启动守护式容器的方法
以交互式容器的方式启动,然后以ctrl+P,ctrl+Q的方式退出该交互式容器,注意两个ctrl命令是连续的
以run命令启动一个守护式容器 docker run -d image 【command】【arg...】
附加到运行中的容器(即重新进入守护式容器)
docker attach 容器名
查看容器日志
docker logs 【-f】【-t】【--tail】 容器名
-f --follows=true|false 默认为false 跟踪日志并返回结果
-t --timestamps=true|false 默认为false 返回的结果上加上时间戳
--tail ="all" 返回结尾处日志数量
查看容器内进程
docker top 容器名
在运行中的容器中启动新进程
docker exec 【-d】【-i】【-t】容器名【command】【args...】
停止守护式容器
docker stop 容器名
发送一个信号等待容器结束
docker kill 容器名
直接停止容器
man docker -run/man docker -logs查看清晰命令
设置容器的端口映射
run -P -p
-P,--publish -all=true|false 默认为false 为容器暴露的所有端口进行映射
docker run -P -i -t ubuntu /bin/bash
-p,--publish=[] 指定映射那些容器的端口
docker run -p 80 -i -t ubuntu /bin/bash
其中端口的映射有多种方式,推荐下面两种
指定宿主机和容器的端口,即 8080:80 ——将容器80端口映射到宿主机的8080端口
指定宿主机IP+port:容器端口 ,即0.0.0.0:8080:80
安装Nginx
docker run -p 80 --name web -i -t ubuntu /bin/bash
运行apt-get install -y nginx
如果提示Unable to locate package nginx,则先运行 apt-get update
安装vim apt-get install -y vim
创建包 mkdir -p /var/www/html
切换目录 创建一个index.html vim index.html
书写简单的页面内容
通过whereis nginx查看nginx的安装目录
ls /etc/nginx/sites-enabled/
vim /etc/nginx/sites-enabled/default
编辑 增加 root /var/www/html
切换到根目录运行nginx(直接输入nginx便可以直接运行)
通过ps -ef便可以查到nginx已经运行
以守护容器退出(上述方法)
可以使用docker ps 查看端口使用情况,也可以使用docker port 容器名称,查看端口情况
使用curl http://127.0.0.1:32768 查看是否可以返回index.html页面
当容器停止后,端口号也会随之发生变化,这点要注意
列出镜像
docker images 【optsions】【repository】
-a,--all=false 不显示中间层镜像
-f,--filter=[] 显示式的过滤条件
--no-trunc = false 指定不使用截断的形式(id长度)
-q,--quiet=false 只显示镜像的唯一Id
镜像的仓库与标签组成一个完整的镜像,获得唯一Id
查看镜像的完整信息
docker inspect 【options】container|image (容器或镜像)
删除一个镜像
docker rmi 【options】image
-f,--force 强制删除镜像
--no-prune=false 不删除被打标签的父镜像
docker rmi $(docker images ubuntu -q) 删除ubuntu的所有镜像 ,原因是docker images ubuntu -q
只返回镜像id,而rmi支持多个删除,中间用空格间隔
标签:ges 镜像 标准 mis htm 空格 rac pts 信号
原文地址:https://www.cnblogs.com/fengerlong/p/9101829.html