目录
一、Docker与虚拟机技术
二、Docker功能
三、安装
安装:
1、环境准备:
2、安装docker
3、配置阿里云镜像加速
4、Docker是怎么工作的
5、Docker为什么比虚拟机快
四、docker命令
1、镜像命令 Docker官方镜像库:https://hub.docker.com/
2、容器命令
3、日志打印
4、查看进程信息
5、查看容器信息
6、文件copy
7、端口暴漏
8、查看cpu状态
9、portainer可视化面板
五、Docker镜像
1、Docker加载原理
2、分层原理
六、Commit镜像
一、Docker与虚拟机技术
传统虚拟机,虚拟一条硬件,运行一个完整的操作系统,然后在系统上安装和运行软件
容器内应用直接运行在宿主机的内核上,容器没有自己的内核,也没有虚拟硬件
每个容器之间,互相隔离,拥有自己单独的文件系统,互补影响。
二、Docker功能
1、简化程序
2、节省开支
3、便于迁移
4、简化运维与开发
三、安装
1、镜像(image):好比一个模板,用来创建容器服务,如tomcat镜像文件 => run => tomcat容器,可以通过一个镜像创建多个容器(好比一个类可以创建多个对象,可以为对象提供各种方法服务)
2、容器(container):独立运行一个或一组应用,通过镜像创建(互相隔离,比如对象对象之间互相隔离)
3、仓库(repository):存放镜像的地方,分为公有仓库和私有仓库
安装:
1、环境准备:
#linux服务器,版本3.10.0以上
#查看linux版本命令:
uname -r
2、安装docker
#卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#需要的安装包
sudo yum install -y yum-utils
#设置镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker相关的
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#启动docker
systemctl start docker
#查看docker是否启动成功
docker version
#测试hello world
docker run hello-world
#查看镜像
docker images
#卸载docker
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
rm -rf /var/lib/docker #docker默认工作路径
3、配置阿里云镜像加速
镜像加速源
镜像加速器 | 镜像加速器地址 |
---|---|
Docker 中国官方镜像 | https://registry.docker-cn.com |
DaoCloud 镜像站 | http://f1361db2.m.daocloud.io |
Azure 中国镜像 | https://dockerhub.azk8s.cn |
科大镜像站 | https://docker.mirrors.ustc.edu.cn |
阿里云 | https://ud6340vz.mirror.aliyuncs.com |
七牛云 | https://reg-mirror.qiniu.com |
网易云 | https://hub-mirror.c.163.com |
腾讯云 | https://mirror.ccs.tencentyun.com |
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
4、Docker是怎么工作的
Docker 是一个 CS架构,Docker 的守护进程运行在主机上,通过TCP协议从客户端访问,Docker server接收到Docker-Client的指令,就会执行这个命令;
5、Docker为什么比虚拟机快
Docker的容器是一个阉割版的Linux服务器,
Docker具有比虚拟机更少的抽象层
Docker利用的是宿主机的内存,VM需要利用Guest OS的内存
四、docker命令
docker ps 查看当前运行中的容器
docker images 查看镜像列表
docker rm container-id 删除指定 id 的容器
docker stop/start container-id 停止/启动指定 id 的容器
docker rmi image-id 删除指定 id 的镜像
docker volume ls 查看 volume 列表
docker network ls 查看网络列表
docker info 系统信息,包括镜像和容器的数量
docker version 系统版本
docker --help 帮助
1、镜像命令 Docker官方镜像库:https://hub.docker.com/
docker images 查看镜像
-a 查看所有镜像
-q 查看所有镜像ID
docker pull[:tag] 下载镜像,可选版本
docker 采用分层下载,同个镜像不同版本,在不同层次上依赖的数据相同
docker可以将不同版本依赖的相同项共用,只下载不同项文件。
docker rmi -f ID/Name 依据ID或者name删除iamge
docker rmi -f ${docker images -a -q} 删除所有的镜像
docker rmi -f id1 id2 id3 删除多个image
2、容器命令
下载镜像
docker pull tomcat
运行容器
docker run [可选参数] image 创建运行容器
-d 后台运行,守护进程
--name 给容器起名字
-P 8081:8080 端口映射
-p 随机指定端口
-it 使用交互式方式运行,进入容器查看内容
进入与退出容器
docker run -it -p 8088:8080 -d tomcat 运行容器
docker exec -it 容器i bash
docker attach 容器ID 进入容器
区别:
exec 进入容器开启一个新的终端
attach 进入容器,不会开启新线程
可以进入查看一些容器的目录
exit 退出容器并停止
ctrl + p + q 退出容器不停止容器
查看容器
docker ps 查看正在运行容器
docker ps -a 查看所有运行的容器
docker ps -n=1 只显示一个容器
-q 显示容器的ID
docker rm ID 删除容器,只能删除停止的容器
docker rm -f ${docker ps -aq} 删除所有容器
rm id1 id2 id3 删除所有容器
停止容器
docker start id 启动容器
docker restart id 重启容器
docker stop id 停止容器
docker kill id 停止容器
容器内的内容阉割了一些功能和文件,所以有部分命令是无法使用的
3、日志打印
docker logs -tf --tail 10 ID 打印容器日志,后面10行
4、查看进程信息
docker top ID
5、查看容器信息
docker inspect ID
6、文件copy
docker cp id:文件path 目的path 从容器内copy到容器外
7、端口暴漏
需要大同外网到云服务器之间的通路,还需打通linux 与 容器之间的通路,使用 -p 8080:8080即可打通。
8、查看cpu状态
docker stats 查看cpu状态
9、portainer可视化面板
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
五、Docker镜像
镜像为轻量级的软件包,用户打包软件运行环境
获取镜像:远程仓库下载,复制粘贴,自己定制Dockerfile
1、Docker加载原理
联合文件系统:一种分层、轻量级并且高性能的文件系统,及与其他镜像共享部分依赖的文件,如:A,B镜像共享C,先安装了A的同时,C也安装,那么在安装B时,就无需在安装C。
bootfs:系统启动需要引导加载的文件
rootfs:在bootfs之上的,不同操作系统
所有的rootfs依赖于bootfs
2、分层原理
高层复用底层文件
六、Commit镜像
修改镜像
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[tag]