惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
The Cloudflare Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
雷峰网
雷峰网
WordPress大学
WordPress大学
Jina AI
Jina AI
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
有赞技术团队
有赞技术团队
V
Vulnerabilities – Threatpost
博客园 - 司徒正美
L
Lohrmann on Cybersecurity
P
Privacy International News Feed
S
SegmentFault 最新的问题
C
Cisco Blogs
V
V2EX
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
I
Intezer
人人都是产品经理
人人都是产品经理
博客园_首页
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
Know Your Adversary
Know Your Adversary
酷 壳 – CoolShell
酷 壳 – CoolShell
Security Latest
Security Latest
V
Visual Studio Blog
S
Schneier on Security
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
腾讯CDC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - Franky
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
K
Kaspersky official blog
T
The Exploit Database - CXSecurity.com
G
GRAHAM CLULEY
量子位
S
Securelist
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tenable Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
T
Troy Hunt's Blog

卷卷

今日说法 节目汇总笔记 《斯坦福大学人生设计课》读书笔记 我的书单📖 H-worm (VBS蠕虫) 感染事件溯源分析报告 AMOS (Atomic Stealer) 恶意软件深度分析 银狐26年全面复活,对抗强度或已超25年最高水平 Atomic Stealer (AMOS) 回归:ClickFix、伪装加密货币应用与新型 macOS 持久化机制 关于xt.exe的分析报告 仿真钓鱼页面窃取用户凭证 GitHub Pages配置Cloudflare CDN踩坑之路 推荐RSS热力图和Github热力图使用指南 学习逆向工程相关概念 zabbix快速上手 学习python高级语法特性例题笔记 学习云计算基本理论学习笔记 ATT &CK 框架实践阅读笔记 rundll32.exe恶意加载DLL文件外联 《悉达多》读书笔记 《稀缺》读书笔记 《认知觉醒》读书笔记 《营养学》读书笔记 《心理学》读书笔记 热💖生活 C++开发环境配置与程序运行笔记 IDA Free调试Hello World笔记 逆向免杀 Admin.canway账号命名方式 BAS - Breach and Attack Simulation Windows核心系统进程链与svchost深度解析 企业测试环境的弱口令需要整改吗 AI对话笔记-模板 网络安全行业招聘需求与技术能力分析 银狐木马技术原理分析与检测技术 SIEM-安全信息和事件管理 AI笔记 转载 专业备考⏳ 其他杂项🧶 Markdown 原生图片 知道创宇技能表 Prompt越狱手册 deepseek使用指南 清华大学 deepseek提问方法 markdown基本语法 数据湖:它们是什么?为什么您的组织需要一个? GitHub Codespaces velociraptor(迅猛龙)快速上手 学习windows快捷命令 学习常用 150 个Linux命令 软考中的一些概念 学习ssh基本使用 Linux系统换源输入法和包管理器 DC-8靶机 Metasploitable3下载与安装 信息收集方法及流程 防守之道 开发运维 免责声明 密码喷射攻击:防范攻击你需要知道的事项 密码学中的哈希解释:它的工作原理、算法和实际用途 应急响应术语 各种报错积累 漏洞挖掘思路 收藏夹 RDP和360星图使用 windows入侵排查 Linux入侵排查 Redis日志分析 Linux安全加固 windows安全加固 windows日志ID速查 中间件加固 数据库安全加固 windows系统提权 MySQL注入复盘 学习git版本控制工具的概念与命令 学习Web Shell 学习Linux命令 java环境配置 学习python基础语法特性解题笔记 学习Mysql基础知识 windows权限维持 学习网络及安全的一些术语 PHP代码审计 Linux系统提权 MSSQL注入复盘 Linux权限维持 命令执行和反序列化 逻辑漏洞 upload-labs 框架漏洞 学习PHP语法特性 XXE&SSRF CSRF 文件上传 Google Hacking XSS-lab XSS实验 学习URL请求后的通信过程 FOFA
学习Docker-Compose命令及镜像构建与推送
卷卷 · 2026-01-03 · via 卷卷

最常用命令集合

sudo mkdir -p /etc/docker


sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://hub.uuuadc.top",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.ckyl.me",
        "https://docker.awsl9527.cn"
    ]
}

{
  "registry-mirrors": ["https://dockerproxy.cn/"]
}


EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker-compose build
docker-compose up -d
docker ps

docker exec -it c198926967ae /bin/bach

Docker镜像

镜像的名称组成:

  • 镜名称一般分两部分组成:repository:tag。
  • 在没有指定tag时,默认是latest,代表最新版本的镜像

如图:

image

Docker Dockerfile

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。

image

Docker命令

命令作用
systemctl start docker启动docker
systemctl stop docker关闭docker
systemctl restart docker重启dkcker
systemctl enable dkcker开机自启
systemctl status docker查看docker运行状态
docker version查看docker版本
docker --helpdocker帮助信息
docker images查看镜像
docker pull 镜像名拉取最新版本的镜像
docker pull 镜像名:tag拉取镜像,指定版本|
docker search [options] TERM
从Docker Hub查找/搜索镜像
docker ps显示正在运行的容器
docker ps -a显示所有容器,包括停止了的容器
docker puse 容器名/ID暂停运行着的容器
docker uppuse name让容器从暂停恢复
docker stop name停止容器,回收内存
docker start name让一个停止的容器再次运行
|docker restart name重启容器

image​​​

Docker-Compose

Docker-Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

通过 Docker-Compose ,不需要使用shell脚本来启动容器,而使用.yaml​​ 文件来配置应用程序需要的所有服务,然后使用一个命令,根据 .yaml 的文件配置创建并启动所有服务。

Compose允许用户通过一个docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。

Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。

Docker-Compose命令

命令作用
docker-compose --help获得一个命令的帮助
docker-compose up -d nginx构建启动nignx容器
docker-compose exec nginx bash登录到nginx容器中
docker-compose down此命令将会停止up命令所启动的容器,并移除网络
docker-compose ps列出项目中目前的所有容器
docker-compose restart nginx重新启动nginx容器
docker-compose build nginx构建镜像
docker-compose build --no-cache nginx不带缓存的构建
docker-compose top查看各个服务容器内运行的进程
docker-compose logs -f nginx查看nginx的实时日志
docker-compose images列出Compose文件包含的镜像
docker-compose config验证文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose pause nginx暂停nignx容器
docker-compose unpause nginx恢复ningx容器
docker-compose rm nginx删除容器(删除前必须关闭容器,执行stop)
docker-compose stop nginx停止nignx容器
docker-compose start nginx启动nignx容器
docker-compose restart nginx重启项目中的nignx容器
docker-compose pull拉取服务依赖的镜像。

Docker镜像构建

以clipboad项目为例

我们在阿里云服务器使用dockers和麻烦,因为基础镜像要从docker官方仓库获取,但是阿里云访问困难,不能获取基础镜像。

报错为:

podman build -t clipboard .
STEP 1/7: FROM node:18
 registry.fedoraproject.org/node:18
Trying to pull registry.fedoraproject.org/node:18...
Error: error creating build container: initializing source docker://registry.fedoraproject.org/node:18: reading manifest 18 in registry.fedoraproject.org/node: manifest unknown: manifest unknown

所以选择在本地构建,wsl里面。

  1. 先将要构建的项目放进去,写好Dockerfile

    # 使用官方Node.js镜像作为基础镜像
    FROM node:18.16.0
    
    # 设置工作目录
    WORKDIR /app
    
    # 复制package.json和package-lock.json到工作目录
    COPY package*.json ./
    
    # 安装项目依赖
    RUN npm install
    
    # 复制项目的所有文件到工作目录
    COPY . .
    
    # 暴露应用程序运行的端口
    EXPOSE 3000
    
    # 启动应用程序
    CMD ["node", "server/server.js"]
  2. 放进去的方法是在文件资源管理器那里直接拷贝。

    image

  3. 完了之后就可以用本机挂的clash访问了,我测试过要两个都打开才可以成功。

    image

  4. 到Dockerfile所在目录 docker build -t clipboard . 注意有一个点

    ┌──(root㉿youze)-[/home/Clipboard]
    └─# docker build -t clipboard .
    [+] Building 24.9s (11/11) FINISHED                                                                      docker:default
     => [internal] load build definition from Dockerfile                                                               0.0s
     => => transferring dockerfile: 429B                                                                               0.0s
     => [internal] load metadata for docker.io/library/node:18                                                         7.2s
     => [auth] library/node:pull token for registry-1.docker.io                                                        0.0s
     => [internal] load .dockerignore                                                                                  0.0s
     => => transferring context: 113B                                                                                  0.0s
     => [1/5] FROM docker.io/library/node:18@sha256:ddd173cd94537e155b378342056e0968e8299eb3da9dd5d412d3b7f796ac38c0  10.2s
     => => resolve docker.io/library/node:18@sha256:ddd173cd94537e155b378342056e0968e8299eb3da9dd5d412d3b7f796ac38c0   0.0s
     => => sha256:f110c757afc5699d6587a989cc741d88e170d259506ecd3b6d9d0169c2dd1a47 1.25MB / 1.25MB                     4.0s
     => => sha256:ddd173cd94537e155b378342056e0968e8299eb3da9dd5d412d3b7f796ac38c0 6.41kB / 6.41kB                     0.0s
     => => sha256:59ee42d02ee5edca29b89e9d18b5bedd9400da38e1dcc0da4f22eaf19d24983b 3.32kB / 3.32kB                     1.0s
     => => sha256:eb173c1dbe92b367644a53adf5c004908921fa91460c054f2746046e481603fb 45.64MB / 45.64MB                   7.6s
     => => sha256:915f67036af49bad671aa4cbb853988d97fb89b24e170dc131cc8f0b5726780f 2.49kB / 2.49kB                     0.0s
     => => sha256:416ebe3d6a254ab6cebfa09550ffafd16a52ce55dc03c2315461c486025c3cc0 6.70kB / 6.70kB                     0.0s
     => => extracting sha256:59ee42d02ee5edca29b89e9d18b5bedd9400da38e1dcc0da4f22eaf19d24983b                          0.0s
     => => sha256:e3d8693bad2fd07287529dd2f1bc71d431ed97f061cc8440707f144165fa8afc 444B / 444B                         2.8s
     => => extracting sha256:eb173c1dbe92b367644a53adf5c004908921fa91460c054f2746046e481603fb                          2.2s
     => => extracting sha256:f110c757afc5699d6587a989cc741d88e170d259506ecd3b6d9d0169c2dd1a47                          0.0s
     => => extracting sha256:e3d8693bad2fd07287529dd2f1bc71d431ed97f061cc8440707f144165fa8afc                          0.0s
     => [internal] load build context                                                                                  0.2s
     => => transferring context: 6.03MB                                                                                0.2s
     => [2/5] WORKDIR /app                                                                                             0.6s
     => [3/5] COPY package*.json ./                                                                                    0.0s
     => [4/5] RUN npm install                                                                                          6.4s
     => [5/5] COPY . .                                                                                                 0.1s
     => exporting to image                                                                                             0.1s
     => => exporting layers                                                                                            0.1s
     => => writing image sha256:ad0ae7950bc6f6c4c632d56a257be82d763b6c8469b5c3ccff490b8ae3b73f66                       0.0s
     => => naming to docker.io/library/clipboard
  5. 构建完在windows docker里面就可以看到了

    image

  6. 完了之后使用命令启动,,因为控制台启动好像没有端口

    ┌──(root㉿youze)-[/home/Clipboard]
    └─# docker run -p 3000:3000 clipboard
    Server is running on port 3000

image

  1. 访问,这里Clipboard.html在public文件夹里,但是直接根目录就可以访问,,当初应该改为index.html的。

    image

    http://localhost:3000/Clipboard.html
  2. image

Docker推送镜像到阿里云仓库

  1. 访问阿里云查看相关信息

  2. 在本地登录阿里云Docker Registry

    ┌──(root㉿youze)-[~]
    └─# docker login --username=youze27 registry.cn-heyuan.aliyuncs.com
    Password:
    Login Succeeded
  3. 查看要推送的镜像ID

    ┌──(root㉿youze)-[~]
    └─# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    clipboard    latest    ad0ae7950bc6   47 minutes ago   1.1GB
  4. 打上标签,注意修改镜像ID和 版本号,不能带有[]

    ┌──(root㉿youze)-[~]
    └─#  docker tag ad0ae7950bc6 registry.cn-heyuan.aliyuncs.com/youze/youze:[1.0.0]
    Error parsing reference: "registry.cn-heyuan.aliyuncs.com/youze/youze:[1.0.0]" is not a valid repository/tag: invalid reference format
    
    ┌──(root㉿youze)-[~]
    └─# docker tag ad0ae7950bc6 registry.cn-heyuan.aliyuncs.com/youze/youze:1.0.0
  5. 推送

    ┌──(root㉿youze)-[~]
    └─# docker push registry.cn-heyuan.aliyuncs.com/youze/youze:1.0.0
    The push refers to repository [registry.cn-heyuan.aliyuncs.com/youze/youze]
    908dfbf7808b: Pushed
    fe050d22cd0b: Pushed
    b2f41cb5f314: Pushed
    d53eb13d755d: Pushed
    afb48ce6bd97: Pushed
    9a605894dac7: Pushed
    65b08847bb33: Pushed
    72949a6dc267: Pushed
    d23b5e6144a7: Pushed
    e5ee1bd83fe3: Pushed
    43da071b5e0c: Pushed
    ef5f5ddeb0a6: Pushed
    1.0.0: digest: sha256:9091d3a1adad223f80a0f760fbb1c8ff08e969b72f48b8f176621355ed230f9f size: 2840
  6. 阿里云镜像仓库查看

    image

  7. 在宝塔拉取镜像,先到阿里云镜像仓库查看相关信息,然后在宝塔添加镜像仓库

    image

    拉取

    image

  8. 将镜像文件打包为.tar

    docekr images 
    docker save 镜像名字:版本号 > /root/打包名字.tar
    docker save -o /root/打包名字.tar 镜像名字:版本号
    ┌──(root㉿youze)-[/home]
    └─# docker save -o clipboard.tar clipboard:latest
    
    ┌──(root㉿youze)-[/home]
    └─# ls
    Clipboard  clipboard.tar