Docker
安装
CentOS安装教程 官网教程,更详细
CentOS安装教程 阿里教程,快速安装
阿里云学习文档
基本概念
仓库:集中存放镜像的。(阿里云与网易云有仓库镜像)。
镜像:只读的模板,可以创建多个容器,例如mysql redis centOS 等;
容器:实例对象,是一个集装箱,可以把容器看作简易版的Linux环境;
Docker deamon :Docker与外部客户端的通讯接口。后台的进程。
镜像与容器类似于java的对象:
P p1=new P1(); P p2=new P1();
//P相当于模板,p1相当于实例;
我们把(java代码,环境,配置文件…)–>images镜像文件–>Docker容器
Doker比虚拟机 瘦在哪里?
- 干掉Hypervisor 操作系统内核-> docker engine
- 不需要硬件资源,利用宿主机的操作系统。
命令
基本命令
docker search
:从dockerhub上搜索镜像的名字 (docker search -s 30 tomcat --no-trunc )
选项: -s 30 :筛选星标30 --no-trunc : 显示所有信息docker pull
: 下载镜像(从换过的源),可以从dockerhub上搜索结果复制命令。
注意:docker pull tomcat:latest
加版本号,默认latestdocker rmi
(remove image)删除镜像
docker rmi h1 h2
删除多个,用空格分开。
注意:如果后台有容器运行需要
docker rmi -f hello-world
强制删除
docker rm
删除容器实例。
容器:
- 新建并启动容器:
docker run [optinos] IMAGE
本地有image则用,无则从远处拉
options:
--d
后台 运行容器 //注意,这里直接-d会立即自杀,必须有前台应用
---name
指定名字
--p
随即端口 -P 指定端口
--i
以交互模式启动
--t
为容器分配一个伪终端(-it 配合使用)
eg:
docker run -it centos
//在docker中使用centos,并直接打开
- 查看运行的容器:
docker ps
(-l:上一个容器 -a 当前和历史; -q:只显示id) - 退出容器 exit
:关闭容器并退出
Ctrl+P+Q`:不关闭容器,退出 (用什么方式重新打开?) - 启动容器:
docker start +id
(ps查id) - 停止容器:
docker stop //温柔
- 强制停止容器:
docker kill //拔电源
- 删除已停止的容器
docker rm 容器ID
- 查看容器日志
docker logs -f -t --tail 容器ID
(-t加入时间戳 -f 刷新日志)
查看容器内部进程docker top 容器ID
- 进入正在运行的容器
docker attach 容器ID
进入容器
docker exec 容器ID
进入容器 或 (不进去)执行一个任务 很重要!
docker exec -it 123 /bin/bash
docker attach 123
进入容器,显示到终端。
- 从容器中拷贝数据到主机
docker cp 容器ID:/tmp/a.log /root
//把a.log 拷贝到主机/root下
镜像
特点:一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件。包括代码,云从事,库,环境变量,配置文件。
UnionsFS联合文件系统:一种分层,轻量级的文件系统。对文件系统的修改作为一次提交层层叠加。是docker分层继承的基础斜体样式。
Docker加载原理:
- bootfs :包括最基本命令,工具,程序库(内核来自宿主机) ;
- rootfs :控制Centos,Ubntu等发行版本。
思考 :
Centos与Ubntu的Linux版本中,bootfs是否相同?
——相同
UnionsFS联合文件系统的优点?
—— 复用,共享资源。
docker commit
提交容器副本,成为一个新的镜像 .
eg.
docker commit -m="描述" -a="作者" 容器ID 目标镜像名字:[标签名]
根据容器生成镜像! 很重要!!!
案例学习:
docker run -it -p 8888:8080 tomcat
(小写p,主机端口:docker容器端口)
docker run -it -P tomcat
(大写P,随机分配端口)
- 容器卷:保存容器中数据,数据持久化。容器之间,主机与容器之间,共享数据。相当于挂载!可以使得主机与容器内同步更新!
docker run -it -v /主机绝对路径:/容器内目录 镜像名
docker run -it -v /主机绝对路径:/容器内目录:ro 镜像名
只读