什么是虚拟化?
是一种资源管理技术,将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。打破实体结果见的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。
什么是docker?
容器,装搭载的环境,每一个容器装的是一个操作系统
为什么要使用docker?
极大的方便环境的部署。(可以直接从网上down相关的镜像)
1、上手快,只需要几分钟的时间,就可以把自己的程序Docker化
2、职责的逻辑分类,开发人员只需要关心容器中运行的应用程序,运维人员只需要关心如何管理容器
3、快速高效的开发声明周期
4、鼓励使用面向服务的架构
5、与虚拟机相比docker启动的速度快
镜像的常用命令?
- 查看镜像
Docker images
- 搜索镜像(搜互联网上的镜像)
Docker search 镜像名称
- 拉取(即下载)镜像
Docker pull 镜像名称
- 删除镜像
删除镜像以前需要先删除容器: docker rm ‘容器名称’ | ‘容器ID’
Docker rmi 镜像id(最好使用ID)
- 删除所有镜像
Docker rmi ‘docker images -q’
Docker 安装命令?
以下命令请手动录入,直接复制会出现错误
更新yum源至最新
Sudo yum update
将yum源设置到阿里云
Sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Sudo yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 下载docker ce版本
Sudo yum install docker-ce分ce和ee两个版本,ce是社区版,ee是企业版
Docker -v查看版本
Vi /etc/docker/daemon.json
{
“registry.mirrors”:[“https”//docker.mirrors.ustc.edu.cn”]
}
- 启动docker
Systemctl start docker
- 停止docker
Systemctl stop docker
- 重启docker
Systemctl restart docker
- 查看docker状态
Systemctl status docker
- 开机启动命令
Systemctl enable docker
容器的常用命令?
csharp
开机自启,创建容器时带 -restart=always
如为设置可通过update设置docker update --restart=always 容器名称
-restart=always 一直重启
No 不重启
On-failure 只有在非0状态退出时才从新启动容器;
-查看容器
Docker ps
-查看所有容器
Docker ps -a
-查看最后一次运行的容器
Docker ps -l
-查看停止的容器
Docker ps -f status-exited
-创建容器
Docker run
-i表示运行容器
-t 表示容器启动后会进入命令行,交互式
-name 为创建的容器命名
-v 表示目录映射。宿主机的目录与容器内部的目录做一个映射。
-d 表示的是守护式的方式运行
-p 表示端口映射
交互式方式建立容器
Docker -It 或 docker -I -t
Docker run -it –-name=mycentos centos:7 /bin/bash
- 创建守护式容器
Docker run -id -–name=mycentos(name不能重复即使重名的容器已经关闭) 镜像名称:标签
- 登录守护式容器 或者 进入启动的容器
Docker exec -it 容器名称 /bin/bash
- 退出
Exit
- 停止容器
docker stop 容器名称(容器id)
- 启动容器
Docker start 容器名称(容器id)
- 文件拷贝
Docker cp 文件名称 容器名称/路径
- 目录挂载
Docker run -di -v 宿主机目录路径:容器目录路径 –-name=容器名称 镜像:标签
- 查看容器的IP地址
Docker inspect 容器名称(容器ID)
Docker inspect –format{{‘.Networksettings.IPAddres’}} 容器名称(容器ID)
- 移除容器
Docker rm 容器名称(容器ID)
应用部署
-Mysql部署
- 拉取Mysql镜像
Docker pull centos/mysql-57-centos7
- 运行容器
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=esint@123 centos/mysql-56-centos7
- 指定日志文件宿主映射关系
docker run -d --name=mysql_master -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d -p 3306:3306 -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
容器和镜像的关系?
一个镜像可以构建多个容器。简单来说,镜像就像是一个类,容器就想是一个对象,一个类可以有多个对象。
如何为容器打包?
如何生成离线的镜像?
如何利用离线生成的镜像生成容器?
镜像的备份迁移?(离线)
Docker commit 容器名称 镜像名称
Docker save -o 想保存的文件名称 镜像名称
容器如何保存为镜像?(离线)
Docker commit 容器名称 镜像名称
Docker save -o 想保存的文件名称 镜像名称
如何加载镜像?(离线)
Docker load -i 保存的镜像文件名
- 如何离线安装docker?
docker-compose是用于方便管理docker容器的工具,并非必须品,用上了会更方便一点
https://blog.csdn.net/catoop/article/details/102523847 离线安装最新版本
https://www.2cto.com/kf/201809/778643.html
https://download.docker.com/linux/static/stable/
下载.tgz包
解压
将docker文件下的二进制文件拷贝到可执行路径 例如/usr/bin/
- Mysql的数据存在宿主机的哪个目录?
在创建容器时做好数据目录与宿主机的目录映射,不做目录映射的话,可能在宿主机上找不到Mysql的数据存放位置,在网上也同样没有搜到
- 配置redis?
拉取redis镜像
创建redis容器:docker run -di –name=redis -p 6379:6379 -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data redis –appendonly yes
什么是Dockerfile?
是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新镜像
基础镜像:ubuntu centos 操作系统级别的镜像
常用命令:
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者(不写也没关系)
ENV key value 设置环境变量(可以写多条)
RUN command 执行某一个命令
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是压缩文件,会自动解压
Copy source_dir/file dest_dir/file 和ADD相似
WORKDIR path_dir 设置工作目录
- 使用时 名称是固定的 Dockerfile
Vi Dockerfile
FROM centos:7
MAINTAINER itcast
WORKDIR /usr
RUN mkdir /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk 1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
:wq