一、Docker核心名词
镜像文件、容器、仓库
**镜像:**简单理解为就是一个安装包,里面包含容器所需要运行的基础文件和配置信息,比如:redis镜像、mysql镜像等。
镜像的来源方式:
**1.**自己做镜像,比如自己开发微服务项目
**2.**拉取别人制作好的镜像,例如nginx、mysql、redis等。
**容器:**容器就是镜像运行的实例,容器状态分为初创建、运行、停止、暂停、删除,一个镜像可以创建多个不同的容器。
每个镜像文件都有自己的独立IP信息----轻量级的Linux服务器 虚拟化
我们可以把镜像看成是类,容器就是实例对象
**仓库:**仓库可以简单理解为,专门存储镜像文件的地方,类似于安卓手机市场,统一在手机市场下载开发者的安装包。
Docker官方仓库:https://hub.docker.com/ ----访问比较慢
二、Docker容器化项目三步骤
1.制作镜像文件(springboot项目等),类似于开发者开发安装应用程序打包
2.需要将我们制作好的镜像文件提交到docker仓库中,类似于开发者将自己的app应用程序发布到安卓手机助手中。
3.本地拉取我们docker仓库中的镜像文件,再交给我们容器运行,类似于用户从app市场中下载安装包运行。
三、Docker下载镜像原理
Docker pull 从远程docker官方仓库下载镜像,到本地,再使用容器运行该镜像。
注意的是:docker官方镜像仓库地址部署在国外,下载镜像比较慢,建议配置国内加速镜像。
四、Docker加载镜像配置
https://hub.docker.com/search?q=redis&type=image ---在国外访问可能比较慢
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。
五、阿里云加速镜像配置
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了
命令按行输入:
bash
cat /etc/docker/daemon.json
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://自己的阿里云镜像.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
-
cat /etc/docker/daemon.json
cat
是一个用于查看文件内容的命令。/etc/docker/daemon.json
是 Docker 守护进程的配置文件。- 这行命令的作用是查看当前 Docker 守护进程的配置。
-
sudo mkdir -p /etc/docker
sudo
以超级用户权限执行命令。mkdir
是用来创建目录的命令。-p
参数表示如果父目录不存在,则创建它。/etc/docker
是 Docker 配置文件的目录。- 这行命令的作用是确保
/etc/docker
目录存在,如果不存在,则创建它。
-
sudo tee /etc/docker/daemon.json <<-'EOF'
tee
命令用于读取标准输入(stdin)的数据,并将其同时写入标准输出(stdout)和一个或多个文件。/etc/docker/daemon.json
是 Docker 守护进程的配置文件。<<-'EOF'
开始一个 Here 文档,允许你输入多行文本,直到你输入EOF
标记。- 这行命令和接下来的几行文本块将配置信息写入到 Docker 守护进程的配置文件中。
-
{
- 这是 JSON 对象的开始标记。
-
"registry-mirrors": ["https://XXXX.mirror.aliyuncs.com"]
- 这是 Docker 配置的一部分,指定了 Docker 镜像加速器,这通常用于加速 Docker 镜像的下载速度。
-
}
- 这是 JSON 对象的结束标记。
-
EOF
- 标记 Here 文档的结束,告诉
tee
命令停止读取输入。
- 标记 Here 文档的结束,告诉
-
sudo systemctl daemon-reload
systemctl
是管理 systemd 系统和服务的管理工具。daemon-reload
命令告诉 systemd 重新加载所有服务单元。- 这行命令的作用是确保新的配置文件被 systemd 识别。
-
sudo systemctl restart docker
restart
命令用于重启一个服务。docker
是 Docker 服务的名称。- 这行命令的作用是重启 Docker 服务,以使新的配置生效。
查看镜像是否安装成功:
输入命令
bash
docker info
找到自己的镜像地址已显示,说明安装成功
六、Docker常用命令
1.docker --help 帮助命令
2.docker --version 查看版本信息
3.docker images 查看本地images镜像文件
docker rmi -f kibana:5.6.9
- rmi用于删除一个或多个docker镜像
- -f 表示强制删除,即使有容器正在使用此镜像,也会被强制删除。
- kibana:5.6.9 指定了要删除的docker镜像的名称和标签。kibana是镜像名,5.6.9是标签。
- REPOSITORY 存储库名称
- Tag 镜像的标签 不写版本号码 默认下载最新latest镜像
- IMAGE ID 镜像id
- CREATED 创建时间
- SIZE 大小
docker images -a 列出本地所有可列出的docker镜像
docker images -q 只列出本地所有可列出镜像的ID
docker images --digests 显示镜像的摘要信息
docker images --no-trunc 显示镜像完整信息
docker image prune -a 删除未被使用的镜像
docker image prune -a --filter "until=168h" 清理特定时间前的镜像
4. 容器管理
创建容器
docker create:创建一个新的容器但不起动它
docker run:创建新的容器并启动它。 -d 后台运行, -i 交互模式(保持容器一直运行), -t 分配伪终端等
docker run --name 容器名称 -p宿主机的端口号:容器内的端口号 -d 镜像名称:标签
bash
docker run --name boyatop-tomcat -p 8081:8080 -d tomcat:8
//每次运行都会创建一个新的容器
启动和停止容器
docker start:启动一个或多个已经停止的容器
docker stop:停止一个或多个正在运行的容器
docker restart:重启一个或多个容器
查看容器
docker ps:列出正在运行的容器
docker ps -a:列出所有容器,包括停止的容器。
docker inspect:查看容器的详细信息,如元数据、配置等
进入容器
docker exec:在正在运行的容器中执行命令。通常与-it选项一起使用,以交互模式运行命令
docker attach:附加到正在运行的容器的标准输入、输出和错误流。
bash
#首先使用下面的命令,查看容器ID(CONTAINER ID)
docker ps -a
#然后用下面的命令进入容器,就可以使用bash命令浏览容器里的文件:
docker exec it [CONTAINER ID] bash
#有的镜像没有bash命令,可以用对应的she11,比如sh
docker exec it [CONTAINER ID]sh
删除容器
docker rm:删除一个或多个容器。注意:只能删除不在运行状态的容器。如果要删除运行中的容器,需要使用-f选项强制删除。
查看容器日志
docker logs:获取容器的日志输出。可以添加-f选项以持续打印日志。
容器与主机之间的操作
docker cp:用于在容器和主机之间复制文件或目录
5.其他操作
docker rename: 重命名一个容器。
docker top: 查看容器中运行的进程。
docker stats: 实时显示容器资源使用情况,如CPU、内存、网络I/0、磁盘I/O等
docker system df:查看Docker镜像、容器和数据卷所占用的磁盘空间