当前位置: 首页 > article >正文

[Docker#5] 镜像仓库 | 命令 | 实验:搭建Nginx | 创建私有仓库

目录

镜像仓库命令

1. 命令清单

2. docker login

3. docker pull

4. docker push

5. docker search

6. docker logout

镜像命令[部分]

1. docker images

2. docker image inspect

3. docker tag

容器命令[部分]

1. docker run

2. docker ps

实战操作

一. 搭建一个 Nginx 服务

基础知识

Web 服务器

Nginx

安装 Nginx

Ubuntu 安装 Nginx

拉取 Nginx 镜像,启动 Nginx 站点

其他方式拉取 Nginx 镜像

查看本地镜像

二:Docker Hub 上创建自己私有仓库

基础知识

BusyBox

安装 BusyBox

Ubuntu 安装

执行命令

卸载 BusyBox

Ubuntu 卸载

创建账号

推送镜像到仓库


镜像仓库命令

1. 命令清单

命令

别名

功能

备注

docker login

登录仓库

必须掌握

docker pull

docker image pull

拉取镜像

必须掌握

docker push

docker image push

推送镜像

必须掌握

docker search

查找镜像

docker logout

登出仓库

必须掌握

2. docker login
  • 功能:
    • 登陆到一个 Docker 镜像仓库,默认为官方仓库 Docker Hub。
  • 语法:
docker login [OPTIONS] [SERVER]
  • 关键参数:
    • -u: 登陆的用户名
    • -p: 登陆的密码
  • 样例:
docker login -u 用户名 -p 密码
3. docker pull
  • 功能:
    • 从镜像仓库中拉取或更新指定镜像。
  • 语法:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • 别名:
docker image pull
  • 关键参数:
    • -a: 拉取所有 tagged 镜像
    • --disable-content-trust: 忽略镜像的校验,默认开启
  • 样例:
docker pull nginx:1.23.3

4. docker push
  • 功能:
    • 将本地的镜像上传到镜像仓库,需先登录。
  • 语法:
docker push [OPTIONS] NAME[:TAG]
  • 别名:
docker image push
  • 关键参数:
    • -a: 推送所有 tagged 镜像
    • --disable-content-trust: 忽略镜像的校验,默认开启
  • 样例:
docker push myapache:v1

5. docker search
  • 功能:
    • 从 Docker Hub 查找镜像。
  • 语法:
docker search [OPTIONS] TERM
  • 关键参数:
    • --no-trunc: 显示完整的镜像描述;
    • -f <过滤条件>: 列出收藏数不小于指定值的镜像。
  • 样例:
# 从 Docker Hub 查找所有镜像名包含 nginx,并且 star 数大于 10 的镜像
docker search -f stars=10 nginx

6. docker logout
  • 功能:
    • 登出一个 Docker 镜像仓库,默认为官方仓库 Docker Hub。
  • 语法:
docker logout [SERVER]
  • 样例:
docker logout

镜像命令[部分]

1. docker images
  • 功能:
    • 列出本地镜像。
  • 语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
  • 别名:
docker image ls, docker image list
  • 关键参数:
    • -a: 列出本地所有镜像(含中间映像层,默认情况下,过滤掉中间映像层);
    • --digests: 显示镜像的摘要信息;
    • -f: 显示满足条件的镜像;
    • --format: 指定返回值的模板文件;
    • --no-trunc: 显示完整的镜像信息;
    • -q: 只显示镜像 ID。
  • 样例:
# 列出本地全部镜像
docker images
# 列出本地镜像中 REPOSITORY 为 ubuntu 的镜像列表。
docker images ubuntu

可以结合 grep 使用

2. docker image inspect
  • 功能:
    • 查看镜像详细信息。
  • 语法:
docker image inspect [OPTIONS] IMAGE [IMAGE...]
  • 样例:
# 查看镜像详细信息
docker image inspect nginx:1.23.3

3. docker tag
  • 功能:
    • 标记本地镜像,将其归入某一仓库。
  • 语法:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • 别名:
docker image tag
  • 样例:
docker tag ubuntu:22.04 myregistry.com/myubuntu:22.04

可以发现,打标签后,两者的image id是相同的,因为两者的镜像内容相同,只是名字不同。

常会通过这种方式,给镜像名前面加上一串仓库路径,方便提交。

容器命令[部分]

1. docker run
  • 功能:
    • 创建一个新的容器并运行一个命令。
  • 语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 别名:
docker container run
  • 关键参数:
    • -d: 后台运行容器,并返回容器 ID;
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -P: 随机端口映射,容器内部端口随机映射到主机的端口
    • -p: 指定端口映射,格式为 主机(宿主)端口:容器端口
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • --name="nginx-lb": 为容器指定一个名称;
    • -h "mars": 指定容器的 hostname;
    • -e username="ritchie": 设置环境变量;
    • --cpuset-cpus="0-2"--cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行;
    • -m: 设置容器使用内存最大值;
    • --network="bridge": 指定容器的网络连接类型;
    • --link=[]: 添加链接到另一个容器;
    • --volume, -v: 绑定一个卷
    • --rm: shell 退出的时候自动删除容器
  • 样例:
# 使用 docker 镜像 nginx:latest 以后台模式启动一个容器,并将容器命名为 mynginx。
docker run --name mynginx -d nginx:latest
# 使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
2. docker ps
  • 功能:
    • 列出容器。
  • 语法:
docker ps [OPTIONS]
  • 别名:
docker container ls, docker container list, docker container ps
  • 关键参数:
    • -a: 显示所有的容器,包括未运行的。
    • -f: 根据条件过滤显示的内容。
    • --format: 指定返回值的模板文件。如 json 或者 table
    • -l: 显示最新的容器。
    • -n: 列出最近创建的 n 个容器。
    • --no-trunc: 不截断输出。
    • -q: 静默模式,只显示容器编号。
    • -s: 显示总的文件大小。
  • 样例:
docker ps -a

可以理解到:一个 OS 上可以运行多个 docker


实战操作

一. 搭建一个 Nginx 服务

基础知识
Web 服务器
  • Web 服务器,一般是指“网站服务器”,是指驻留于互联网上某种类型计算机的程序。Web 服务器可以向 Web 浏览器等客户端提供文档,也可以放置网站文件,让全世界浏览,更可以放置数据文件,让全世界下载。
  • Web 服务器,也称为“WWW 服务器”(英文全写:World Wide Web,翻译成中文:万维网或环球信息网),主要功能是“提供网上信息浏览服务”。
  • WWW 是 Internet(互联网)的多媒体信息查询工具,是 Internet(互联网)上发展起来的服务,也是发展最快和目前使用最广泛的服务。例如百度就是一个 Web 服务器,提供搜索服务。
Nginx
  • Nginx 是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器;同时也是一个 IMAP、POP3、SMTP 代理服务器。Nginx 可以作为一个 HTTP 服务器进行网站的发布处理,另外 Nginx 可以作为反向代理进行负载均衡的实现。
  • 可以理解 Nginx 是 Web 服务器的一种实现。
  • Nginx 作为 Web 服务器可以向各种浏览器等客户端提供浏览服务,比如我们通过手机、电脑、平板可以访问百度来实现对 Web 服务器的访问。

正向代理:由于防火墙的原因,我们不能直接访问谷歌,那么我们可以借助 VPN 来实现,这就是一个简单的正向代理的例子。

这里能够发现,正向代理“代理”的是客户端,而且客户端是知道目标的,而目标是不知道客户端是通过 VPN 访问的。例如我们平时使用的 steam 游戏加速器

反向代理:当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的反向代理,即反向代理“代理”的是服务器端,而且这一个过程对于客户端而言是透明的。

安装 Nginx
Ubuntu 安装 Nginx
sudo apt update
sudo apt install nginx -y

启动 Nginx 作为一个网站

  1. 查看 Nginx 是否启动
ps -ef | grep nginx
  1. 如果没有启动,手动启动 Nginx
    • 查看版本
nginx -v
    • 手动启动
sudo nginx
  1. 访问 Nginx 首页
    • 打开浏览器,访问 http://<你的服务器IP>,你应该能看到 Nginx 的欢迎页面。
  1. 调整 Nginx 的配置
    • 编辑 Nginx 配置文件
sudo vi /etc/nginx/sites-available/default
    • 配置示例

    • 保存并退出编辑器,然后重新加载 Nginx 配置
sudo nginx -s reload
  1. 首页内容
    • 查看 Nginx 默认首页内容
cat /usr/share/nginx/html/index.html
    • 内容示例

  1. 停止 Nginx
    • 查找 Nginx 主进程并杀死
ps -ef | grep nginx
kill <主进程ID>
拉取 Nginx 镜像,启动 Nginx 站点
  1. 拉取 Nginx 镜像
docker pull nginx:1.23.3
    • 到 https://hub.docker.com/ 上找到 Nginx 镜像
  1. 查看本地是否有该镜像
docker images
  1. 运行镜像
docker run --name nginx1 --rm -it -p 80:80 nginx:1.23.3 bash
  1. 查看我们现在是在容器的 shell 里面,执行 cat /etc/*release* 查看操作系统
cat /etc/*release*
  1. 启动 Nginx
nginx

  1. 在另一个 shell 窗口中执行 curl 命令,可以看到 Nginx 的欢迎信息返回
curl 127.0.0.1
    • 如果你的服务器的 80 端口外部能访问,那么可以用浏览器看到 Nginx 的欢迎页面。注意云厂商一般都屏蔽了 80 端口,需要联系客服开通。

  1. 退出 shell 观察再 curl 发现我们已经 ping 不通了,说明 Nginx 是容器里面的而不是服务器里面的
curl 127.0.0.1
其他方式拉取 Nginx 镜像
  1. 拉取某个组织或者用户定制的镜像
docker pull bitnami/nginx:1.23.4
  1. 通过 DIGEST 拉取镜像
docker pull nginx@sha256:d7573e9b475c64dbf09dac0808517e8d5a919918aa772ceca381091365a970aa
  • 找到 1.22.1 版本的 Nginx
查看本地镜像
  1. 查看本地镜像
docker images
  1. 查看镜像实际 ID
docker image inspect 8c9eabeac475
    • 输出示例

通过以上步骤,你可以成功搭建并运行一个 Nginx 服务,并且学会如何使用 Docker 拉取和管理 Nginx 镜像。

二:Docker Hub 上创建自己私有仓库

基础知识
BusyBox

BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。

它包含了一些简单的工具,例如 lscatecho 等,还包含了一些更大、更复杂的工具,例如 grepfindmount 以及 telnet

BusyBox 是一个集成了一百多个最常用 Linux 命令和工具的软件,它甚至还集成了一个 HTTP 服务器和一个 Telnet 服务器,而所有这一切功能却只有区区 1M 左右的大小。因海外带宽较小,我们拉取该镜像推送到自己的仓库。

安装 BusyBox
Ubuntu 安装
sudo apt update
sudo apt install -y busybox
执行命令
busybox ls
busybox ifconfig
busybox ifconfig | busybox grep lo
卸载 BusyBox
Ubuntu 卸载
sudo apt --purge autoremove busybox
创建账号
  1. 进入 Docker Hub
    • 访问 https://hub.docker.com/,点击注册按钮,输入注册信息。
  1. 创建仓库
    • 登录后点击仓库,创建一个个人仓库。
    • 如果提示需要进入,进入自己的邮箱完成激活。
    • 输入仓库信息,选择可见性(公开或私有),点击创建完成。
推送镜像到仓库
  1. 拉取 BusyBox 镜像
docker pull busybox
  1. 给镜像打标签
docker tag busybox:latest maxhou/mybusybox:v0.1
  1. 查看本地镜像
docker images

输出示例

  1. 推送镜像到仓库
  • 推送镜像
docker push maxhou/mybusybox:v0.1
The push refers to repository [docker.io/maxhou/mybusybox]
427701cb9c96: Mounted from library/busybox
v0.1: digest: sha256:2c8ed5408179ff4f53242a4bdd2706110ce000be239fe37a61be9c52f704c437 size: 528
  1. 在 Docker Hub 仓库查看
    • 登录 Docker Hub,进入你的仓库页面,确认镜像已成功推送。
  1. 退出 Docker Hub
docker logout

通过以上步骤,你可以成功创建自己的 Docker Hub 私有仓库,并将 BusyBox 镜像推送到该仓库。

有时候会不太稳定,不科学上网的话,可以使用阿里云~


http://www.kler.cn/a/393657.html

相关文章:

  • Springboot配置全局异常通用返回
  • SystemVerilog学习笔记(六):控制流
  • Mac intel 安装IDEA激活时遇到问题 jetbrains.vmoptions.plist: Permission denied
  • HAproxy 详解
  • JWT深度解析:Java Web中的安全传输与身份验证
  • 图片画廊 day2 (可复制源码)
  • 加入GitHub Spark需要申请
  • Hive基础
  • JUC学习笔记
  • 零基础Java第十六期:抽象类接口(二)
  • 【NLP】2024 年十大 RAG 框架 Github
  • Redis设计与实现 学习笔记 第十七章 集群
  • 2024 kali操作系统安装Docker步骤
  • 【论文复现】交通路口智能监测平台实现
  • Ajax 获取进度和中断请求
  • 华为OD机试真题-仿LISP计算
  • GitHub每日最火火火项目(11.14)
  • 服务器硬件介绍
  • 自动驾驶系列—从数据采集到存储:解密自动驾驶传感器数据采集盒子的关键技术
  • Ubuntu上nginx常用命令
  • 电子制造行业Top5贴片机品牌
  • [DB] Project-1-MySQL
  • 「QT」几何数据类 之 QVector2D 二维向量类
  • 本地编译ChatNio的问题解决
  • Ubuntu22.04中使用CMake配置运行boost库示例程序
  • 《目标检测》——基础理论知识(目标检测的数据集、评价指标:IOU、mAP、非极大抑制NMS)