Docker简介
文章目录
- Docker简介
- 一、Docker
- 1.什么是docker?
- 2.容器引擎
- 3.容器和虚拟机的区别
- 4.namespace(命名空间)
- 5.三大容器核心概念
- 镜像
- 容器
- 仓库
- 二、Docker镜像操作
- 1.搜索镜像
- 2.获取镜像
- 镜像加速下载
- 3.查看本地下载镜像
- 4.获取镜像详细信息
- 5.为本地镜像添加标签
- 6.删除镜像
- 7.存出镜像
- 8.载入镜像
- 9.上传镜像
- 10.镜像操作总结
- 三、Docker 容器操作
- 1.容器创建
- 2.查看容器的运行状态
- 3.启动容器
- 3.停止容器运行
- 4.删除容器
- 5.进入容器
- 6.宿主机和容器数据的导入和导出
- 7.容器的导出与导入
- 导出格式
- 导入格式
- 8.创建并启动容器(docker run)
- docker run 执行过程
- 执行格式
- docker run 执行过程
- 执行格式
一、Docker
1.什么是docker?
docker是go语言开发的应用容器引擎,是用来运行容器里的应用,docker是管理镜像和容器的一种工具。
2.容器引擎
docker containerd podman rocket
3.容器和虚拟机的区别
指标 | 容器 | 虚拟机 |
---|---|---|
内核 | 所有容器共享宿主机内核 | 每个虚拟机有单独的操作系统和内核 |
资源隔离 | 使用namespace进行资源隔离,通过cgroup限制容器的资源最大使用量 | 完全隔离,每个虚拟机有自己的独立硬件资源 |
启动速度 | 秒级 | 分钟级 |
性能损耗 | 容器相当于宿主机的进程,几乎无损耗 | 需要hypervisor虚拟机管理程序对宿主机资源虚拟访问,至少有20~50%资源损耗 |
单机容量 | 单机容量能够支持成百上千个容器 | 单机空量只能支持最多十几个虚拟机 |
4.namespace(命名空间)
类型 | 说明 |
---|---|
MNT namespace | 提供磁盘挂载点和文件系统的隔离能力 |
IPC namespace | 提供进程间通信的隔离能力 |
USER namespace | 提供用户隔离能力 |
NET namespace | 提供网络隔离能力 |
UTS namespace | 提供主机名隔离能力 |
PID namespace | 提供进程隔离能力 |
5.三大容器核心概念
镜像
是创建容器的基础,也是一个只读的模板文件,里面包含容器中的应用程序所需要的所有内容(包含程序运行文件、配置文件、这行库文件、操作系统、依赖包 )
容器
是用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器之间默认是相互资源隔离的
仓库
是用来保存镜像的地方,有公有仓库和私有仓库之分
二、Docker镜像操作
1.搜索镜像
格式:docker search 关键字
2.获取镜像
格式:docker pull 仓库名称[:标签]
镜像加速下载
浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://qfh90gmo.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
3.查看本地下载镜像
docker images--------------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
--------------------------------------------------------------------------------------------
4.获取镜像详细信息
docker inspect 镜像id
5.为本地镜像添加标签
格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest nginx:webdocker images | grep nginx
6.删除镜像
格式:
docker rmi 仓库名称:标签 #当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号 #会彻底删除该镜像注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
7.存出镜像
格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx nginx:web #存出镜像命名为nginx存在当前目录下
ls -lh
8.载入镜像
#载入镜像:将镜像文件导入到镜像库中
格式:
docker load < 存出的文件
或者
docker load -i 存出的文件docker load < nginx
9.上传镜像
默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。docker tag nginx:latest soscscs/nginx:web #添加新的标签时必须在前面加上自己的dockerhub的username
docker login #登录公共仓库
Username:用户名
password:密码
docker push soscscs/nginx:web #上传镜像
10.镜像操作总结
docker serach 镜像|仓库关键词 ##搜索镜像docker pull 镜像 ##拉取镜像docker images ##查看本地镜像docker rmi 镜像名|镜像id [-f] ##删除镜像docker tag 旧镜像名:旧标签 新镜像名:新标签 ##添加镜像标签docker inspect 镜像名|镜像ID ## 查看镜像详细信息docker save -o 镜像文件 镜像名|镜像id ##导出镜像docker load -i 镜像文件 ##从镜像文件载入镜像(可以从其他主机导出镜像后,然后载入镜像)docker login ##默认登陆公共仓库docker push 仓库名/镜像名:标签 ##上传镜像到仓库
三、Docker 容器操作
1.容器创建
#容器创建:就是将镜像加载到容器的过程。
新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。格式:docker create [选项] 镜像
常用选项:
-i:让容器开启标准输入接受用户输入命令
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell docker create -it nginx:latest /bin/bash | sh
2.查看容器的运行状态
docker ps -a #-a 选项可以显示所有的容器
3.启动容器
格式:docker start 容器的ID/名称
3.停止容器运行
格式:docker stop 容器的ID/名称
格式:docker kill 容器的ID/名称
4.删除容器
docker rm 容器的ID/名称
docker rm [-f] (docker ps -a -q) 批量删除容器
5.进入容器
docker exec -it 容器名|容器ID bash/sh ##进入容器分配一个伪终端,可以在里面操作,exit退出不会停止容器进程
docker attach 容器名|容器ID ##连接到正在运行的容器,共享容器屏幕显示,不能在里面操作,ctrlc退出默认会停止容器讲程
6.宿主机和容器数据的导入和导出
docker cp 容器ID:文件/目录的绝对路径 宿主机本地文件/目录 ##从容器将文件或目录导出到宿主机
docker cp 宿主机本地文件/目录 容器ID:文件/目录的绝对路径 ##从宿主机或目录将文件导入到容器中
7.容器的导出与导入
用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为容器快照文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。
导出格式
docker export 容器ID/名称 > 文件名
导入格式
cat 文件名 | docker import – 镜像名称:标签
docker import 容器模板文件 -- 容器镜像
8.创建并启动容器(docker run)
docker run 执行过程
检查本地是否有镜像(如果有则使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器)
在只读的镜像层上挂载一层可读可写的容器层
从docker网桥给容器分配一个虚拟接口和IP地址给容器
使用镜像的默认命令或者指定的命令启动容器,直到容器主进程退出为止
执行格式
docker run [--name 容器名] [--rm 删除容器] [-it] [-d 后台运行] 镜像名:标签 [容器启动命令]
器(docker run)
docker run 执行过程
检查本地是否有镜像(如果有则使用本地镜像创建容器,如果没有则从仓库拉取镜像再创建容器)
在只读的镜像层上挂载一层可读可写的容器层
从docker网桥给容器分配一个虚拟接口和IP地址给容器
使用镜像的默认命令或者指定的命令启动容器,直到容器主进程退出为止
执行格式
docker run [--name 容器名] [--rm 删除容器] [-it] [-d 后台运行] 镜像名:标签 [容器启动命令]