目录
一、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 -r2、安装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 ID5、查看容器信息
docker inspect ID6、文件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]






![ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。](https://img-blog.csdnimg.cn/direct/b6491bfe2e2046fd8ffe0262c50f795a.png)











