Docker 使用(三)
3.使用
一、配置镜像源地址
创建镜像源配置文件:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF更改镜像源配置文件后,需要重新加载配置文件。
sudo systemctl daemon-reload然后重启 Docker 服务。
sudo systemctl restart docker二、服务使用
Docker 服务管理是使用 Docker 的基础操作。下面介绍常用的 Docker 服务命令。
- 启动 Docker 服务
systemctl start docker- 停止 Docker 服务
systemctl stop docker- 重启 Docker 服务
systemctl restart docker- 设置开机启动 Docker 服务
systemctl enable docker- 查看 Docker 服务状态
systemctl status docker重启命令通常用于应用配置变更后重新加载服务
三、镜像使用
Docker 镜像是创建容器的模板,包含应用代码、依赖和配置。核心操作包括拉取、标记、推送、查看、导入导出和删除。
1. 官方镜像仓库
Docker Hub:Docker 官方公共仓库,提供大量官方和社区镜像。
登录命令:
docker login
2. 拉取镜像
从仓库下载镜像:
docker pull 镜像名[:标签]示例:
docker pull nginx # 拉取最新版本 docker pull nginx:1.23 # 拉取指定版本
3. 镜像标签
用于管理版本:
docker tag nginx:latest my-nginx:v1
4. 推送镜像
登录 Docker Hub 后,打标签并推送到仓库:
docker tag my-image 用户名/my-image:1.0 docker push 用户名/my-image:1.0
5. 查看镜像
查看本地镜像列表:
docker images查看镜像详情:
docker inspect nginx查看镜像历史:显示镜像每一层的创建命令和大小
docker history nginx查看容器日志:
docker logs nginx
6. 查找镜像
搜索公共镜像:
docker search mysql
7. 镜像导出与导入
内网电脑无法访问网络下载镜像时使用
导出:
docker save -o nginx.tar nginx:latest导入:
docker load -i nginx.tar
8. 删除镜像
删除镜像:
docker rmi 镜像名或ID清理未使用镜像:
docker image prune -a查看磁盘使用:
docker system df
四、容器使用
1. 创建并启动容器
docker run [选项] 镜像 [命令]常用参数:
| 参数 | 作用 | 备注 |
|---|---|---|
-d |
后台运行 | |
-p 主机端口:容器端口 |
端口映射 | |
--name |
指定容器名称 | |
-it |
交互式终端 | |
-v 主机目录:容器目录 |
挂载目录 | |
--rm |
容器停止后自动删除 | |
-e 变量名=变量值 或 --env |
设置环境变量 | |
--network |
指定容器的网络模式 | |
--restart |
容器的重启策略 | |
-u 用户名 |
指定用户运行 |
示例:
docker run -d -p 80:80 --name nginx-container nginx注意:如果每次运行容器使用
docker run命令,则每次都都会创建一个新的容器实例,即使使用相同的镜像和参数也会生成不同的容器。
2. 管理容器
- 启动已停止容器:
docker start 容器ID或名称- 停止容器:
docker stop 容器ID或名称- 删除容器:
docker rm 容器ID或名称 # 容器已停止
docker rm -f 容器ID或名称 # 强制删除运行中容器3. 查看容器
- 正在运行:
docker ps- 所有容器:包括已经停止的容器
docker ps -a- 详细信息:
docker inspect 容器ID或名称- 日志输出:
docker logs 容器ID或名称
docker logs -f 容器ID或名称 # 实时查看- 资源使用:
docker stats4. 进入容器
docker exec -it 容器ID或名称 /bin/bash5. 容器导出与导入
用于将容器及其当前状态保存为文件,便于迁移或备份
- 导出容器为 tar:
docker export -o nginx-container.tar nginx-container- 导入为镜像:
docker import nginx-container.tar my-nginx:v16.删除容器
docker rm 容器ID或名称五、私有镜像仓库
除了使用 Docker Hub 等公共仓库,还可以使用 Registry 搭建私有镜像仓库,存储企业内部镜像。
1.搭建私有仓库
- 拉取 Registry 镜像
docker pull registry:2- 启动仓库服务
docker run -d \
-p 5000:5000 \
--name my-registry \
-v /data/registry:/var/lib/registry \
registry:2
-v /data/registry:/var/lib/registry:挂载数据目录持久化存储镜像。
- 验证服务
docker ps访问:
http://localhost:5000/v2/_catalog正常返回:
{"repositories":[]}2.使用私有仓库
- 为镜像打标签
docker tag my-image localhost:5000/my-image- 推送镜像
docker push localhost:5000/my-image- 拉取镜像
docker pull localhost:5000/my-image- 查看仓库镜像
curl http://localhost:5000/v2/_catalog
# 返回数据
{"repositories":["my-image"]}查看特定镜像标签:
curl http://localhost:5000/v2/my-image/tags/list3.远程访问配置
默认只能本机访问,如需远程推送和拉取:
- 在服务器上部署 Registry。
- 修改客户端 Docker 配置(
/etc/docker/daemon.json):
{
"insecure-registries": ["服务器IP:5000"]
}- 重启 Docker:
systemctl restart docker- 推送镜像:
docker tag my-image 服务器IP:5000/my-image:v1
docker push 服务器IP:5000/my-image:v14.生产环境建议
为提高安全性,建议:
- 使用 HTTPS(TLS) 加密通信
- 使用 htpasswd 开启用户认证
- 使用 Nginx 作为反向代理
- 使用 Docker Compose 管理服务
示例启动:
docker compose up -d5.架构示意
Docker Client
│
▼
Nginx(HTTPS)
│
▼
Registry
│
▼
持久化存储这样即可搭建一个支持镜像上传、下载和集中管理的私有 Docker 镜像仓库。