Docker
定义
开源的应用容器引擎
包括镜像、容器、仓库,通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品及其环境做的“一次封装”,到处运行。(通俗的讲就是只需要配置docker容器上的应用,就可以跨平台、跨服务器、实现应用程序的跨平台间的无缝衔接)
docker实际相当于一个封闭的沙箱(沙盒)或者是集装箱,可以把不同的应用全部放在集装箱里面,并且后续有需要的时候,可以直接把集装箱搬到其他平台上,实现容器虚拟化技术。
与虚拟机区别
1、性能损耗不同
2、启动速度不同
3、系统利用率不同
4、隔离性不同
5、可管理性不同
6、可用和可恢复性不同
7、创建和删除速度不同
8、交付、部署速度不同
9、安全性不同
镜像
docker的镜像是一个特殊的文件系统,除了能够提供容器运行时说需要的程序、库、资源配置等文件外,还包括了一些为运行时准备的一些配置参数(环境变量、用户等)
作用:用来启动容器,也可以创建新的容器,类似于虚拟机的快照功能
容器
一个docker的镜像可以创建多个容器,每个容器都是相互独立的,没有任何依赖关系。
特点:docker的镜像是不能够运行的是静态的,docker的容器是可以运行的,可将docker的容器认为是一个简化版的操作系统和核心的基础应用相当于虚拟化系统的最小化安装
仓库
存放镜像的位置
命令
1、docker -v:查看版本号
2、docker ps -a:查看所有容器进程(包括已停止)
docker ps:查看运行中的容器
3、docker images:查看镜像
docker images -q:只查看镜像id
4、docker stop 进程ID(或名称):停止容器
5、docker rm 进程ID(或名称):删容器(需先停止)
6、docker rmi -f 镜像ID:删除镜像
7、docker pull mysql:latest:
docker run -itd --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-i:以交互模式运行,通常与t联用
-t:为容器重新分配一个伪输入终端,通常与i联用
--name:为容器指定一个名称
-p:端口映射:格式 主机端口:容器端口
-P:随机端口映射
8、docker exec -it 容器id /bin/bash:以bash交互模式进入容器
mysql -u root -p
授权所有用户访问
grant all privileges on *.* to 'root'@'%' ;
FLUSE PRIVILEGES:
9、docker rename 容器ID 新名称:重命名容器
10、docker logs -f -n 10 容器id:查看容器最近10条日志
docker logs -f -since "2011-11-11" 容器id:查看容器在指定日期的日志(2011-11-11T10:10:01.1111Z 时间)
-f:追踪日志输出
-t:显示时间戳
--tall:仅列出最新N条日志
--since:显示某个日期或时间的日志
11、docker stats 容器id(或名称):查看所有的容器占用系统资源
12、docker top 容器id(或名称):查看容器内所有进程信息
13、docker tag 源镜像:标签 远程仓库名/新镜像:标签
扩展:拉取centos系统
docker pull centos:centos7.9.2009
创建容器
docker run -itd --name centos7 --privileged=true -p 8888:22 eeb6ee3f44bd /usr/sbin/init
/usr/sbin/init:管理员权限登录
若没有ssh服务
yum install openssh-server -y
编辑/etc/ssh/ssh_config,将端口改为22
重启ssh服务:systemctl restart sshd
最后更改root密码passwd