Docker基础概述
一般安装在linux中,是一个开源的基于LXC的高级容器引擎,要操作docker就要使用指令命令
三大核心
镜像(Image):相当于软件安装包,不能修改
仓库(Respository) :存放大量镜像资源,类似市场
Docker Registry公开服务:官方、阿里云等
私有Docker Registry:本地搭建私有仓库
私有仓库:
容器(Container):安装完成之后形成容器,可以进行修改、操作
三者关系图
容器与虚拟主机架构对比
容器是不需要底层架构的,虚拟主机是需要操作系统的,所以容器便于移植,会自己封装打包自己的东西,不会使用操作系统
基础命令:
service docker start 开启docker
docker info 查看docker基本数据
配置网卡数据:ipconfig ens37 192.168.152.120/24
ipconfig ens37 up
查看镜像指令:docker images/image ls
查看当前正在运行的容器:docker ps
查看之前运行过的容器: docker ps -a
启动之前运行过的容器: docker start +ID前三位就好
获取镜像 :docker pull +镜像
进入容器内部命令:docker exec -it ID前三位 /bin/bash
启动或者新建容器(如果之前没有就新建):docker run
删除容器:docker container rm -f +ID
删除镜像:docker image rm [选项] <镜像>可简写为docker rmi 镜像ID
Docker数据管理
没理解很透
Layer:一组readonly和writeable结构构成的container的运行目录。多个container可以共享readonly的layer,所以docker将readonly层称作image,image不保存用户状态,container可以修改所有数据。上层image依赖下层image,下层也成为父image。所以想要加载image就要先加载父image一直到base image。数据写入全在container这一个里面。
默认容器的数据都是存在容器的可读写层,当容器被删掉时他上面的数据会跟着丢失,所以要采取方法来持久保存数据,方式如下
数据卷(volumes)(/var/lib/docker/volumes):
使用docker volume ls 查看数据卷
.bash_history存放历史命令
挂载主机目录(Bind mounts):
Dockerfile与Dockercompose
Dockerfile
Dockerfile是文本文件,包含了一条条指令,每条指令构建一层,表示该层如何构建,用来构建镜像
使用镜像来构建容器
docker run --name 名字 -P -e MYSQL_ROOT_PASSWORD=meiyapico -d mysql:5.7
-P 表示随机生成端口
5.7是mysql版本
数据库是需要密码的
Docker-compose
一个网站需要多个容器,就会对应多个Dockerfile文件,逐个运行非常麻烦就可以考虑docker-compose文件,默认文件名为docker-compose.yml
查找dockers-compose命令
find / -name docker-compose.yml
里面有docker的各种信息,可以将里面的网站放到本地hosts里面,方便我们下一步访问,这里发现火绒可以直接找到hosts文件
通过docker-compose build
指令搭建docker网站,运行完之后就会下载到我们的本地
然后通过docker-compose up
运行网站
找域名:导出网站文件,在note++里面建立文件夹,然后搜索host或者www来找到域名,然后放到hosts里面
内容
services主要用来定义各个容器
build指定Dockerfile所在文件夹路径
>networks定义需要使用到的网络
environment定义环境变量
depends_on依赖指定容器
常用命令:
docker-compose config 验证文件格式
docker-compose build 通过.yml文件构建镜像
docker-compose up 自动构建镜像,启动服务,运行网站
docker-compose images 列出compose文件中包含的镜像
docker-compose ps 列出项目容器
Docker数据的提取
windows下docker镜像的存储
默认存储在C盘,但会与vmware端口冲突,可在管理工具中的hyper-v管理器中看到当前数据存储的路径。
windows窗口下的docker Settings中有共享目录(与windows),是我们主要提取的
Docker数据取证的固定与还原
dockers数据宿主机存放位置查看
先用docker ps
查看id
再用docker inspect id
查看路径,此时会有两个路径,一个是source一个是destination,source是在宿主机上存储的路径,destination是在docker容器里面存放的
如果存在权限
查看docker内mysql用户权限:
select host,user,plugin,authentication_string from mysql.user;
修改root用户权限:
ALTER user 'root'@'%'IDENTIFIED WITH mysql_native_password BY 'root1234'
刷新:
FLUSH PRIVILEGES
进入容器mysql修改配置:
docker exec -it containerid /bin/bash
vi /etc/mysql/conf.d/docker.cnf
进入dockers.cnf文件然后输入skip-grant-tables
可以掠过数据库然后创建新的账号密码
docker-compose建站数据提取
通过命令docker inspect mysql_01
查看容器详细信息,找到编排工作目录的路径,然后访问ls
docker数据的固定导出和还原
固定容器:Docker export导出/import还原
容器归档为镜像:docker commit 容器名 固定出来的镜像名字:标记名
固定镜像:Docker save 导出/load 还原
导出镜像:docker save -o 包名.tar 上面那个固定出来的镜像名字:标记名
推荐固定导出镜像,因为导出容器的话数据不全
还原时,要先把原来的镜像给删除了才能还原
还原指令:docker load -i 包名.tar