下一页
虚拟机与 docker的区别
- 虚拟机
- 就是带环境安装的一种解决方案啊,
- 在真实系统中,实现应用程序,操作系统和硬件三者之间的逻辑不变,模拟的是整个操作系统
- 缺点:
- 需要内存大
- 启动时间长
- 冗余步骤
- 容器虚拟化技术
- linux 容器技术,,建立的不是一个完整的操作系统,而是对进程进行隔离,,需要什么,建立什么,
- 所有容器技术 速度快,使用内存少
- 比较了Docker和传统虚拟化方式的不同之处:
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
- 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
docker 的基本组成
- 镜像 可以生成多个容器示例
- 容器
- 仓库 分为私有和公有两种
docker 安装
- centos 6.8
- yum install -y epel-release
- yum install -y docker-io
- 安装后的配置文件:/etc/sysconfig/docker
- 启动Docker后台服务:service docker start
- docker version验证
- 配置文件 /etc/sysconfig/docker
- centos 7
docker 的运行原理
- Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境,就是我们前面说到的集装箱。
- docker为什么比vm快
- 少加载硬件资源
- 利用真实机的内核,,而不是虚拟化的内核
Docker 的常用命令
1. 帮助命令
- docker verison or docker -v
- docker info 信息描述
- docker --help
1. 镜像命令
-
docker images 列出本地的镜像
- REPOSITORY :表示镜像的仓库源
- TAG : 镜像的标签
- IMAGE : 镜像ID
- CREATED :镜像创建时间
- SIZE : 镜像大小
- 参数
- a :列出本地所有镜像(含中间镜像层)
- q : 只显示镜像ID
- –digests:显示镜像的摘要信息4. --no-trunc :显示完整的镜像信息
-
docker search 某个镜像的名字
- 参数
- –no-trunc 显示完整的镜像描述
- -s 列出收藏数不小于指定值的镜像
- –automated 只列出automated build 类型的镜像
- 参数
-
docker pull 某个镜像名字(TAG)
- 没有加标签,表示最新的
-
docket rmi 某个镜像名字ID(TAG)
- 不加标签,默认删除最新
1. 容器命令
- 新建并启动容器
- docker run [option] IMAGE [COMMAND][ARG]
- option 说明(常用):
- –name=“容器新名字” 为容器指定一个名称
- -d : 后台运行容器,并返回容器ID
- -i : 以交互模式运行容器,通常与-t 同时使用
- -P :随机端口映射
- -p : 指定端口映射:
- ip:hostPort:containerPort
- ip::containerPort
- hostPort:containerPort
- containerPort
docker run -it --name "test_centos" centos
- docker ps[options]
- options 说明(常用):
- -a: 列出当前所有正在运行的容器和历史上运行过得
- -i : 显示最近创建的容器
- -n:显示最近n个创建的容器
- -q:静默模式,只显示容器编号
- –no-trunc:不截断输出
- options 说明(常用):
- 退出容器 - 两种方式
- exit : 容器停止退出
- ctrl + P + Q :容器不停止退出
例子 docker ps -l
- 启动容器
- docker start 容器ID或者容器名
- 重启容器
- docker restart 容器ID或者容器名
- 停止容器
- docker stop 容器ID或者容器名
- 强制停止容器
- docker kill 容器ID或者容器名
- 删除已停止的容器
- docker rm 容器ID
- 没有停止就加-f 强制删除
- 一次性删除多个容器
- docker rm -f $(docker ps -a -q)
- docker ps -a -q | xargs docker rm
以下是重要的命令
- docker rm 容器ID
- 启动守护式容器
- docker run -d 容器名
- 没有后台交互的容器,会自动关闭。则换句话说:Docker容器后台运行,就必须有一个前台进程.
- 所以像ngnix 等,要在前台进行运行
- docker run -d 容器名
- 查看容器日志
- docker logs -f -t --tail 容器ID
- -t 是加入时间戳
- -f 跟随最新的日志打印
- –tail 数字 显示最后多少条
例子 docker run -d centos /bin/sh -c "while true;do echo hello NIHAO;sleep 2;done"
- docker logs -f -t --tail 容器ID
- 查看容器内运行的进程
- docker top 容器ID
- 查看容器内部细节
- docker inspect 容器ID
- 进入正在运行的容器并以命令行交互
- docker exec -it 容器ID bashShell
- 重新进入docker attach 容器ID
- 上面两个区别
attach 直接进入容器启动命令的终端,不会启动新的进程 exec 是在容器中打开新的终端,并且可以启动新的进程
13.从容器内拷贝文件到主机上
1. docker cp 容器ID:容器内路径 目的主机路径