Docker
虚拟化:
是一种资源的管理技术,将计算机的实体资源,进行抽象化,重新呈现出来,目的为了打破实体之间不可分割的障碍,使用户更合理使用计算机中的资源。
第一种情况:
将高性能的计算机虚拟化成多个低性能的计算机,可以更好的利用计算机
第二种情况:
将多台低性能的计算机进行整合,完成高性能的任务
沙箱:
1.提供一个独立的开发环境 conda 就是python的虚拟环境 可以在一台电脑上安装多个python环境 env python的虚拟环境 vm 虚拟机 系统级的沙箱环境 docker 系统级的沙箱环境
2.隔离性和安全性
环境和环境之间相互隔离,不会出现病毒入侵的情况
3.沙箱环境可以随时关闭和打开 使用起来比较方便
docker简介
docker
沿用了集装箱的思想,由于每个人的开发环境不同,有的在winodws下开发有的在linux下开发,代码风格不同,编程习惯不同,在项目开发时不会出现问题,但是项目上线时由于前面的问题可能会导致兼容性问题大大影响部署时间增加部署的难度,为了解决这个问题,在项目开发之初,就创建一个类似于集装箱的独立的具有统一标准的环境,每个人都在这个环境下开发,项目部署时,只需要将集装箱环境整个部署到服务器。
docker和vmware的区别
vm
docker
server 计算机
host os 操作系统
hypervisor 虚拟机软件
docker engine docker 引擎
guest os 虚拟机内的操作系统
bins/libs 系统的基础服务
app 应用
vm 是硬件级的虚拟化
vm 中的虚拟机系统是是使用的独立的系统内核
docker 软件级的虚拟化
docker 中的虚拟系统 和源系统公用一个系统内核 占用资源更少 速度更快
docker就是一个进程 开机只需要一秒钟
docker 的安装
yum install docker -y
docker的基本使用
1.查看docker服务的状态 启动docker服务
如果启动服务时报错
Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
修改docker配置文件
vim /etc/sysconfig/docker
把OPTIONS一行改为:OPTIONS=’–selinux-enabled=false’
2.查看docker版本号
docker –version
镜像 images 封装好的docker实例 包含了运行的的环境 只读(类似于centoos.iso)
容器 container 用来打开 并使用镜像的
仓库 registry 是用来存储镜像的 一般在远程 开源的仓库 docker hub
仓库分为 私有仓库 和工共有仓库
镜像的操作
安装好docker后 在docker软件中安装新的系统,首先要有docker镜像文件
1.查看本地所有的docker镜像
docker images
repository: 镜像的仓库
TAG:标签
Image id: 镜像的id
created: 镜像的创建时间
size: 镜像的大小
2.查找镜像
查找具有mysql应用的docker镜像
docker search mysql
name: 镜像名
description:镜像的描述
official: 是否是docker官方发布的镜像
3.下载镜像
镜像源是国外的下载会很慢,所以在下载镜像前可以配置docker镜像的源,配置成国内的源
1.修改配置文件
vi /etc/docker/ daemon.json
此文件是一个json文件
json的数据格式是键值对格式key:val 和python的字典类似
但是json中的键 必须使用双引号
{
"registry-mirrors":["http://hub-mirror.c.163.com"]
}
2.重启docker服务
systemctl restart docker
3.下载镜像
下载之前先查
docker search mysql
确定要下载的镜像的name
执行下载
docker pull 镜像的name
4.修改镜像的名字
docker tag 镜像id 新名字
docker tag 镜像名 新名字
修改名字时 可以连着变迁一起修改
docker tag 镜像名 新名字:新的标签名
5.删除镜像
docker rmi 镜像名:标签
docker image rm 镜像名:标签名
容器的操作
创建容器
1.创建容器(未启动状态)
docker create -it --name 容器名字 镜像的id /bin/bash
-i 交互模式
-t 启动容器后并进入容器的命令行
/bin/bash 绑定一个虚拟的shell环境
启动并进入容器
docker start -ai 容器名
退出exit
2.创建容器并启动容器(启动状态)
docker run -dit --name=容器名 镜像id /bin/bash
-d 后台运行 守护进程
进入容器:
docker exec -it 容器的名字 /bin/bash
如果容器不是运行状态 进不去会报错
退出容器:exit
3.查看本地所有的容器
查看正在运行的容器:docker container ls
查看所有的容器: docker container ls --all
简写:
docker ps -a 查看所有的容器
docker ps 查看正在运行的容器
删除容器:
docker container rm 容器的id
正在运行状态的容器不能直接删除 会报错
停止容器:
docker container stop 容器id
docker container kill 容器id 杀死容器
启动容器:
docker container start 容器id
使用数据库:
创建容器
docker run -dit --name 容器名 -p 5000:5000 -e MYSQL_ROOT_PASSWORD=’123456’ 镜像id
端口映射:
我们需要使用一个具有mysql应用docker容器,在客户端去远程连接并使用这个数据库
1.创建一个具有mysql应用的容器 映射端口号
docker run -dit --name 容器名 -p主机的端口号(13306):容器的端口号(3306) -e MYSQL_ROOT_PASSWORD=’123456’ 镜像id
将容器的端口映射到主机
当我们在连接主机的13306时 实际连接的就是容器的3306
进入容器连接数据库添加lisi用户并授权
2.远程连接mysql8.0时会报错代码2059 这是加密方式不同导致的兼容问题
进入mysql这个库去执行下面命令改变加密方式
alter user '用户名'@'%' identified with mysql_native_password by '密码';
3.在其他电脑上连接主机的13306端口 会自动给映射到容器的3306这个应用
测试可以再windows下的navcat上去链接
*
制作自己的镜像并将镜像上传到远程公共仓库
1.先有自己的远程仓库 dockder hub
https://hub.docker.com/
到上面网站注册账号并创建仓库
2.制作自己的镜像
a.先下载纯净版的镜像
docker pull docker.io/centos
b.创建一个容器
docker run -dit --name centos 0f3e07c0138f /bin/bash
c.进入容器配置环境
docker exec -it centos /bin/bash
安装python3.。。。。
c.将容器打包成镜像
commit -m 'first' -a 'chiji' centos cpy
d.将打包好的镜像上传
上传之前 先在本地登录docker hub
docker login
把镜像的名字改了
格式: 用户名/仓库名
docker tag cpy 1095445503/test:v1
上传镜像