今日内容概要
- docker 介绍
- docker安装与启动
- docker常用命令
内容详细
1、docker 介绍
1.1 什么是虚拟化
# 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。
这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制
一般所指的虚拟化资源包括计算能力和资料存储
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件 对资源充分利用
# 虚拟化技术种类很多 例如:
软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等
# 虚拟化技术
-vm在操作系统上虚拟化出操作系统
-openstack---》python写的框架---》vm虚拟的机器---》管理控制台管理
-阿里云---》点点购买---》阿里飞天
-小公司云服务提供商:会用openstack
-docker,docker-compose:软件,虚拟化,软件层面虚拟化,不虚拟出硬件来,硬件依赖了本身的操作系统;单机多个docker容器的管理
-k8s:多机的容器编排,100台虚拟机 10000个容器
1.2 什么是Docker
# Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。
它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 [GitHub]
(https://github.com/docker/docker) 上进行维护
Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc
Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术
在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便
用户操作 Docker 的【容器】就像操作一个快速轻量级的【虚拟机】一样简单
# python项目部署
-开发在win开发,部署在linux部署---》开发环境跟部署环境不一样---》开发好好的,部署不了
-编译型语言---》编译成可执行文件---》直接运行
-java--->装jdk---》依赖---》运行
# docker解决的痛点
-java---》一个东西(docker镜像,独立的网络)---》拿到任何平台直接运行就是我的项目
-python---》某个东西(docker镜像,独立的网络)----》在任何平台---》直接运行
-屏蔽了平台和环境和python解释器模块
-很多服务器服务器---》虚拟化出centos---》装python解释器,装django,放上代码,运行代码
-很多服务器服务器---》虚拟化出centos---》装个docker软件,把python项目做成镜像
-以后换到任何机器上---》装个docker软件,启动容器即可---》直接运行
2、docker安装与启动
2.1 docker架构
# docker是 cs 架构软件:
客户端,服务端 ,相互通信使用resful
# Docker镜像与容器
-镜像:
安装了虚拟机---》ios镜像文件(win7,centos)--->装在虚拟机上--》启动起来了
把docker的镜像【当成】这个ios文件
docker镜像是一堆文件,必须运行起来,才是容器
-容器:
一个容器【当成】一台虚拟机上装了一个centos的操作系统
# docker软件的安装流程:
镜像操作命令
容器操作命令(操作系统)
连接到容器中:安装软件,删除软件,copy文件
例:纯净的centos7--》启动器容器---》进入--》装python3.6---》反打包成镜像
例:dockerfile构建镜像 --》非常小的文件,写几个命令就可以构建出镜像
镜像的备份与迁移
私有仓库
2.2 安装
# 安装 ---》centos7.9为例
# 连上服务器
# 卸载(之前就有了 就卸载)
yum remove docker docker-common docker-selinux docker-engine
rm -rf /var/lib/docker
# 安装
yum update
# 安装依赖,之前装python,这些依赖装过了
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置阿里云的yum源--》官方源---》yum--》官方源找软件安装--》官方源里没有docker
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装---》docker-ce 社区版 ee专业版收费
yum install docker-ce
# 查看版本
docker -v # 20.10.16 年月日
# 启动docker---》等同win 双击运行可执行文件
systemctl start docker
# docker命令(要学)
2.3 设置国内源
# 下载镜像---》hub.docker.com--->在国外---》慢---》配置国内镜像
-阿里云
-清华源的
# 不配没关系---》下的慢
# 阿里云云服务器---》很快
3、docker常用命令
# docker 仓库
-下载镜像--》从某个地方下载--》hub.docker.com---》远程仓库
3.1 Docker的启动与停止
# 启动docker:
systemctl start docker
# 停止docker:
systemctl stop docker
# 重启docker:
systemctl restart docker
# 查看docker状态:
systemctl status docker
# 开机启动:
systemctl enable docker
# 查看docker概要信息
docker info
# 查看docker帮助文档
docker --help
3.2 镜像相关命令
# 1 查看,列出所有镜像
docker images # 用它就行
# 2 搜索镜像---》有什么镜像再下---》一般不用--》直接去仓库网站看
docker search centos
# 3 拉取镜像
##### 镜像分标签---》mysql 5.5 /5.6 /5.7/ 8--->标签标志版本
docker pull mysql # 下载最新版---》mysql 8
docker pull mysql:5.7 # 有这个标签才能下载,mysql 5.7
# 4 删除镜像 可以空格 放多个id,删除度讴歌
docker rmi 镜像id
docker rmi a091
# 5 删除所有镜像---》面试被问到,如果一次性全部删除镜像
docker rmi `docker images -q`
3.3 容器相关命令
# 1 查看所有在运行中的容器
docker ps
# 2 查看所有,运行的,停止的,暂停的
docker ps –a
# 3 查看停止的容器
docker ps -f status=exited
# 4 重点#### 创建并运行容器---》俩命令合二为一--》创建 运行
docker run # 创建并运行,有很多参数
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
--name :为创建的容器命名,一个镜像可能起很多容器,给它命名,不写会自动命名
-v:表示目录映射关系(前者是宿主机(云端服务器)目录,后者是映射到宿主机上的目录),可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
# 4.1 运行并进入到容器
docker run -it --name= mycentos centos:7
exit
# 4.2 运行不进入到容器
docker run -id --name= mycentos centos:7
返回id号,容器id号,唯一标识
# 4.3 在宿主机,想进入到容器内部操作 exe进
# exec 指定容器执行命令---》利用这个特点-->进入容器
docker exec -it 容器id/名字 /bin/bash
exit退出
# 5 停止与启动容器
docker stop 707be33301f7
docker start 707be33301f7
# 6 文件拷贝--->django项目---》cp进去
# 宿主机---》容器内部
docker cp 需要拷贝的文件或目录 容器名称:容器目录
# 容器内部---》宿主机
docker cp 容器名称:容器目录 需要拷贝的文件或目录
# 7 目录挂载
# 一旦挂载--》宿主机操作文件和容器操作文件都会影响
# 挂载多个目录,继续-v
docker run -id --name=mycentos3 -v /root/s20:/home/s20 centos:7
# 8 查看容器IP地址
docker inspect 容器名称
docker inspect --format='{{.NetworkSettings.IPAddress}}' f69cf7c4f1cb
# 9 删除容器
docker rm 容器id
删除镜像---》必须该镜像运行的容器先删除