docker 拉取镜像 & 创建容器

命令行操作

Win + R,打开 cmd

docker命令介绍

Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。以下是常用的 Docker 命令:

docker pull <镜像名> - 从 Docker Hub 拉取镜像到本地
docker run - 创建并启动一个新容器
docker ps - 查看正在运行的容器
docker ps -a - 查看所有容器(包括已停止的)
docker stop <容器名/ID> - 停止运行中的容器
docker start <容器名/ID> - 启动已停止的容器
docker restart <容器名/ID> - 重启容器
docker rm <容器名/ID> - 删除容器
docker images - 查看本地镜像列表
docker rmi <镜像名/ID> - 删除镜像
docker logs <容器名/ID> - 查看容器日志
docker exec -it <容器名/ID> /bin/bash - 进入容器内部

docker run 常用参数说明

-d - 后台运行容器(detached 模式),不会占用当前终端
-p <宿主机端口>:<容器端口> - 端口映射,将容器端口映射到宿主机端口,例如 -p 8080:80 表示访问宿主机 8080 端口会转发到容器的 80 端口
--name <容器名> - 为容器指定一个名称,方便管理和操作
-v <宿主机路径>:<容器路径>--volume - 挂载数据卷,将宿主机目录映射到容器内部,实现数据持久化
-e <变量名>=<值>--env - 设置环境变量,例如 -e MYSQL_ROOT_PASSWORD=123456
-it - 交互式运行容器,-i 保持标准输入打开,-t 分配一个伪终端
--rm - 容器停止后自动删除,常用于临时测试
--restart=always - 容器退出时自动重启,适合生产环境
--network <网络名> - 指定容器使用的网络
-u <用户ID>:<组ID>--user - 指定运行容器的用户

为什么有些服务需要配置多个端口映射?

不同的服务会使用多个端口来提供不同的功能,每个端口都有特定的用途:

Jenkins (-p 8080:8080 -p 50000:50000)
8080 - Web 管理界面端口,用户通过浏览器访问
50000 - Agent 通信端口,用于 Jenkins 主节点与构建节点(Agent)之间的通信,实现分布式构建

Gitea (-p 3000:3000 -p 2222:22)
3000 - Web 界面端口,用于浏览器访问 Git 仓库管理界面
2222 - SSH 端口,用于通过 SSH 协议进行 Git 操作(克隆、推送、拉取代码)
- 映射到 2222 而不是 22,是为了避免与宿主机的 SSH 端口冲突

单端口服务
Verdaccio (-p 4873:4873) - 只需要一个 HTTP 端口提供 npm 仓库服务
MongoDB (-p 27017:27017) - 只需要一个数据库连接端口

总结:如果服务只提供单一功能(如 Web 界面或数据库连接),通常只需要一个端口;如果服务需要提供多种访问方式或功能(如 Web + SSH,或 Web + 内部通信),就需要映射多个端口。

jenkins

简介

Jenkins 是一个开源的持续集成/持续部署(CI/CD)工具,用于自动化构建、测试和部署应用程序。支持插件扩展,可以与 Git、Maven、Docker 等工具集成。

拉取镜像:docker pull jenkins/jenkins:lts

创建容器:docker run -d –name test_jenkins -p 8080:8080 -p 50000:50000 -v D:/Jenkins/data/path:/var/jenkins_home jenkins/jenkins:lts

使用

  1. 访问 http://localhost:8080 打开 Jenkins 管理界面
  2. 首次启动需要获取初始密码:docker logs test_jenkins 查看日志中的密码
  3. 或者进入容器查看:docker exec test_jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  4. 按照向导完成初始化配置,安装推荐插件
  5. 创建管理员账户后即可开始使用
  6. 端口说明:8080 为 Web 界面端口,50000 为 Agent 通信端口

verdaccio

简介

Verdaccio 是一个轻量级的私有 npm 仓库代理,可以用于搭建企业内部的 npm 私有仓库。支持缓存公共 npm 包,加速下载,同时可以发布私有包。

拉取镜像

1
docker pull verdaccio/verdaccio:6

创建容器

1
docker run -d --name test_verdaccio -p 4873:4873 -v "D:/Verdaccio/data/path:/verdaccio/storage" verdaccio/verdaccio:6

使用

  1. 访问 http://localhost:4873 打开 Verdaccio 管理界面
  2. 设置 npm 仓库地址:npm set registry http://localhost:4873
  3. 创建用户:npm adduser --registry http://localhost:4873
  4. 发布包:npm publish --registry http://localhost:4873
  5. 安装包:npm install <包名> --registry http://localhost:4873
  6. 恢复官方源:npm set registry https://registry.npmjs.org

gitea

简介

Gitea 是一个轻量级的自托管 Git 服务,类似于 GitHub/GitLab,但更轻量、易部署。支持代码托管、Issue 跟踪、Pull Request、Wiki 等功能,适合个人或小团队使用。

拉取镜像

1
docker pull gitea/gitea

创建容器

1
docker run -d --name=test_gitea --volume=gitea-data:/data --volume=D:\gitea\config:/data/gitea/conf --volume=D:\gitea\repositories:/data/git/repositories -p 3000:3000 -p 2222:22 -e USER_UID=1000 -e USER_GID=1000 gitea/gitea:latest

使用

  1. 访问 http://localhost:3000 打开 Gitea 安装界面
  2. 首次访问会进入初始化配置页面,配置数据库、管理员账户等信息
  3. 建议使用 SQLite 数据库(默认),简单易用
  4. 创建管理员账户后即可开始使用
  5. 创建仓库、推送代码:
    • git remote add origin http://localhost:3000/用户名/仓库名.git
    • git push -u origin master
  6. 端口说明:3000 为 Web 界面端口,2222 为 SSH 端口

mongodb

简介

MongoDB 是一个基于文档的 NoSQL 数据库,使用 JSON 格式存储数据。具有高性能、高可用性、易扩展等特点,适合存储非结构化或半结构化数据。

拉取镜像

1
docker pull mongo

创建容器

1
docker run -d --name=test_mongodb --volume=mongodb-data:/data/db --volume=D:\mongodb\config:/data/configdb -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=yourpassword mongo:latest

使用

  1. 使用 MongoDB Compass 连接:mongodb://admin:yourpassword@localhost:27017
  2. 或使用命令行连接:docker exec -it test_mongodb mongosh -u admin -p yourpassword
  3. 常用命令:
    show dbs - 显示所有数据库
    use <数据库名> - 切换/创建数据库
    show collections - 显示当前数据库的集合
    db.<集合名>.find() - 查询集合中的文档
    db.<集合名>.insertOne({...}) - 插入文档
  4. 在应用中连接:mongodb://admin:yourpassword@localhost:27017/数据库名
  5. 注意:请修改默认密码 yourpassword 为强密码