目录
[1. 命令清单](#1. 命令清单)
[2. docker login](#2. docker login)
[3. docker pull](#3. docker pull)
[4. docker push](#4. docker push)
[5. docker search](#5. docker search)
[6. docker logout](#6. docker logout)
[1. docker images](#1. docker images)
[2. docker image inspect](#2. docker image inspect)
[3. docker tag](#3. docker tag)
[1. docker run](#1. docker run)
[2. docker ps](#2. docker ps)
[一. 搭建一个 Nginx 服务](#一. 搭建一个 Nginx 服务)
[Web 服务器](#Web 服务器)
[安装 Nginx](#安装 Nginx)
[Ubuntu 安装 Nginx](#Ubuntu 安装 Nginx)
[拉取 Nginx 镜像,启动 Nginx 站点](#拉取 Nginx 镜像,启动 Nginx 站点)
[其他方式拉取 Nginx 镜像](#其他方式拉取 Nginx 镜像)
[二:Docker Hub 上创建自己私有仓库](#二:Docker Hub 上创建自己私有仓库)
[安装 BusyBox](#安装 BusyBox)
[Ubuntu 安装](#Ubuntu 安装)
[卸载 BusyBox](#卸载 BusyBox)
[Ubuntu 卸载](#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 作为一个网站
-
查看 Nginx 是否启动
ps -ef | grep nginx
-
如果没有启动,手动启动 Nginx
-
-
查看版本
nginx -v
-
-
-
手动启动
sudo nginx
-
- 访问 Nginx 首页
-
- 打开浏览器,访问
http://<你的服务器IP>
,你应该能看到 Nginx 的欢迎页面。
- 打开浏览器,访问
- 调整 Nginx 的配置
-
-
编辑 Nginx 配置文件
sudo vi /etc/nginx/sites-available/default
-
-
- 配置示例
-
-
保存并退出编辑器,然后重新加载 Nginx 配置
sudo nginx -s reload
-
- 首页内容
-
-
查看 Nginx 默认首页内容
cat /usr/share/nginx/html/index.html
-
-
- 内容示例
- 停止 Nginx
-
-
查找 Nginx 主进程并杀死
ps -ef | grep nginx
kill <主进程ID>
-
拉取 Nginx 镜像,启动 Nginx 站点
-
拉取 Nginx 镜像
docker pull nginx:1.23.3
-
- 到 https://hub.docker.com/ 上找到 Nginx 镜像
-
查看本地是否有该镜像
docker images
-
运行镜像
docker run --name nginx1 --rm -it -p 80:80 nginx:1.23.3 bash
-
查看我们现在是在容器的 shell 里面,执行
cat /etc/*release*
查看操作系统cat /etc/release
-
启动 Nginx
nginx
-
在另一个 shell 窗口中执行
curl
命令,可以看到 Nginx 的欢迎信息返回curl 127.0.0.1
-
- 如果你的服务器的 80 端口外部能访问,那么可以用浏览器看到 Nginx 的欢迎页面。注意云厂商一般都屏蔽了 80 端口,需要联系客服开通。
-
退出 shell 观察再
curl
发现我们已经 ping 不通了,说明 Nginx 是容器里面的而不是服务器里面的curl 127.0.0.1
其他方式拉取 Nginx 镜像
-
拉取某个组织或者用户定制的镜像
docker pull bitnami/nginx:1.23.4
-
通过 DIGEST 拉取镜像
docker pull nginx@sha256:d7573e9b475c64dbf09dac0808517e8d5a919918aa772ceca381091365a970aa
- 找到 1.22.1 版本的 Nginx
查看本地镜像
-
查看本地镜像
docker images
-
查看镜像实际 ID
docker image inspect 8c9eabeac475
-
- 输出示例
通过以上步骤,你可以成功搭建并运行一个 Nginx 服务,并且学会如何使用 Docker 拉取和管理 Nginx 镜像。
二:Docker Hub 上创建自己私有仓库
基础知识
BusyBox
BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。
它包含了一些简单的工具,例如 ls
、cat
和 echo
等,还包含了一些更大、更复杂的工具,例如 grep
、find
、mount
以及 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
创建账号
- 进入 Docker Hub
- 创建仓库
-
- 登录后点击仓库,创建一个个人仓库。
- 如果提示需要进入,进入自己的邮箱完成激活。
- 输入仓库信息,选择可见性(公开或私有),点击创建完成。
推送镜像到仓库
-
拉取 BusyBox 镜像
docker pull busybox
-
给镜像打标签
docker tag busybox:latest maxhou/mybusybox:v0.1
-
查看本地镜像
docker images
输出示例
- 推送镜像到仓库
-
推送镜像
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
- 在 Docker Hub 仓库查看
-
- 登录 Docker Hub,进入你的仓库页面,确认镜像已成功推送。
-
退出 Docker Hub
docker logout
通过以上步骤,你可以成功创建自己的 Docker Hub 私有仓库,并将 BusyBox 镜像推送到该仓库。
有时候会不太稳定,不科学上网的话,可以使用阿里云~