8.Docker学习
尚硅谷-Docker教程 笔记
第一章 Docker简介
1.是什么?
一种容器化虚拟技术。将 应用程序+运行环境+配置依赖 打包成镜像,运行镜像成为容器实例。而Docker容器在任何操作系统上都是一致的,这就实现了系统的跨平台、跨服务器,达到系统平滑移植。“一次镜像,到处运行”。
2.容器与虚拟机的比较
虚拟机是在硬件层面实现虚拟化
Docker容器是在操作系统层面实现虚拟化
与传统虚拟机相比,Docker优势体现在启动速度快、占用体积小
3.Docker应用场景
4.下载Docker
两个网站:Docker官网、Docker Hub官网
第二章 Docker安装
1.Docker的基本组成(Docker三要素):镜像、容器,仓库
(1)一个镜像可以创建多个容器。docker镜像文件相当于类,docker容器实例相当于实例对象
(2)容器是用镜像创建的运行实例,容器就类似于一个虚拟化的运行环境。可以把容器看做是一个简易版的 Linux 环境和运行在其中的应用程序
(3)仓库是集中存放镜像文件的地方,类似于Maven仓库存放各种jar包,github仓库存放各种git项目。Docker公司提供的官方registry叫Docker Hub。
仓库分为公开(public)仓库和私有仓库(private),最大的公开仓库是Docker Hub,国内的公开仓库有阿里云、网易云等
(4)需要正确的理解仓库/镜像/容器这几个概念:
- Docker 本身是一个容器运行载体或称之为管理引擎。
- 一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器
- 仓库就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来就可以了
(5) Docker平台架构图 Docker工作原理
2.安装步骤
3.阿里云镜像加速:拉镜像的时候快一些
4.永远的HelloWorld
5.底层原理:为什么Docker会比VM快?
(1)docker有着比虚拟机更少的抽象层
(2)docker利用的是宿主机的内核,而不需要加载操作系统OS内核
第三章 Docker常用命令
1.帮助启动类命令
(1)启动docker:systemctl start docker
(2)停止docker:systemctl stop docker
(3)重启docker:systemctl restart docker
(4)查看docker状态:systemctl status docker
(5)查看docker概要信息:docker info
2.镜像命令
(1)docker images:列出本地主机上的所有镜像
(2)docker search 镜像名字:查找镜像
(3)docker pull 镜像名字:下载镜像。不带tag默认下载最新版本,等价于:docker pull 镜像名字:latest
docker pull 镜像名字:tag
(4)docker system df:查看镜像/容器/数据卷所占的空间
(5)docker rmi 镜像名字/镜像ID:删除镜像
docker rmi -f 镜像名字/镜像ID:带参数表示强制删除
a. docker悬虚镜像
3.容器命令
a.有镜像才能创建容器,这是根本前提
(1)docker run -it 镜像名字 命令:新建+启动容器
例子:docker run -it centos /bin/bash
说明:
- -i:交互式操作,-t:终端(i和t结合使用),centos:centos最新镜像,/bin/bash:命令,和容器交互的shell。
- 退出终端,输入exit。ps -ef:可以查看容器里面的进程信息
(2)docker ps [选项]:列出当前所有正在运行的容器
例子:docker ps
说明:-a:列出当前所有正在运行的容器+历史上运行过的。-l :显示最近创建的容器
(3)退出容器:两种退出方式
exit:run进去容器,exit退出,容器停止
ctrl+p+q:run进去容器,ctrl+p+q退出,容器不停止
(4)docker start 容器ID/容器名:启动已经停止的容器
(5)docker restart 容器ID/容器名:重启容器
(6)docker stop 容器id/容器名:停止容器
(7)docker kill 容器id/容器名:强制停止容器
(8)docker rm 容器id:删除已停止的容器
a.有镜像才能创建容器,这是根本前提。所以提前要下载好镜像
b.启动守护式容器(后台服务器):在大部分的场景下,我们希望docker的服务是在后台运行的,
我们可以通过 -d 指定容器的后台运行模式:docker run id 容器名
例如:docker run -d centos
c.redis前后台启动演示:
前台交互式启动:docker run -it redis:6.0.8
后台守护式启动:docker run -d redis:6.0.8
d.查看容器日志:docker logs 容器ID
e:查看容器内运行的进程:docker top 容器id
f:查看容器内部细节:dockers inspect 容器id
g:重新进入正在运行的容器并以命令行交互:
docker exec -it 容器id bin/bash
docker attach 容器id
(1)上述两个的区别
(2)推荐使用docker exec命令,因为退出容器终端,不会导致容器的停止
(3)一般用-d后台启动的程序,再用exec进入对应容器实例
h:从容器内拷贝文件到主机
i:导入和导出容器
4.总结
1 attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像 2 3 build Build an image from a Dockerfile # 通过 Dockerfile 定制镜像 4 5 commit Create a new image from a container changes # 提交当前容器为新的镜像 6 7 cp Copy files/folders from the containers filesystem to the host path #从容器中拷贝指定文件或者目录到宿主机中 8 9 create Create a new container # 创建一个新的容器,同 run,但不启动容器 10 11 diff Inspect changes on a container's filesystem # 查看 docker 容器变化 12 13 events Get real time events from the server # 从 docker 服务获取容器实时事件 14 15 exec Run a command in an existing container # 在已存在的容器上运行命令 16 17 export Stream the contents of a container as a tar archive # 导出容器的内容流作为一个 tar 归档文件[对应 import ] 18 19 history Show the history of an image # 展示一个镜像形成历史 20 21 images List images # 列出系统当前镜像 22 23 import Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export] 24 25 info Display system-wide information # 显示系统相关信息 26 27 inspect Return low-level information on a container # 查看容器详细信息 28 29 kill Kill a running container # kill 指定 docker 容器 30 31 load Load an image from a tar archive # 从一个 tar 包中加载一个镜像[对应 save] 32 33 login Register or Login to the docker registry server # 注册或者登陆一个 docker 源服务器 34 35 logout Log out from a Docker registry server # 从当前 Docker registry 退出 36 37 logs Fetch the logs of a container # 输出当前容器日志信息 38 39 port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT # 查看映射端口对应的容器内部源端口 40 41 pause Pause all processes within a container # 暂停容器 42 43 ps List containers # 列出容器列表 44 45 pull Pull an image or a repository from the docker registry server # 从docker镜像源服务器拉取指定镜像或者库镜像 46 47 push Push an image or a repository to the docker registry server # 推送指定镜像或者库镜像至docker源服务器 48 49 restart Restart a running container # 重启运行的容器 50 51 rm Remove one or more containers # 移除一个或者多个容器 52 53 rmi Remove one or more images # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除] 54 55 run Run a command in a new container # 创建一个新的容器并运行一个命令 56 57 save Save an image to a tar archive # 保存一个镜像为一个 tar 包[对应 load] 58 59 search Search for an image on the Docker Hub # 在 docker hub 中搜索镜像 60 61 start Start a stopped containers # 启动容器 62 63 stop Stop a running containers # 停止容器 64 65 tag Tag an image into a repository # 给源中镜像打标签 66 67 top Lookup the running processes of a container # 查看容器中运行的进程信息 68 69 unpause Unpause a paused container # 取消暂停容器 70 71 version Show the docker version information # 查看 docker 版本号 72 73 wait Block until a container stops, then print its exit code # 截取容器停止时的退出状态值
第四章:Docker镜像
1.是什么?
(1)镜像是一个轻量级、独立的软件包,包含:应用程序和配置依赖
(2)镜像是分层的,使用的是联合文件系统
(3)Docker镜像加载原理
(4)为什么Docker镜像要采用这种分层结构呢?
2.Docker镜像commit操作案例
第五章 本地镜像发布到阿里云
第六章 本地镜像发布到私有库
1.本地镜像发布到私有库流程
2. Docker Registry是官方提供的工具,可以用于构建私有镜像仓库
3.将本地镜像推送到私有库
第七章 Docker容器数据卷
第八章 Docker常规安装简介