最近在学习抖音商城项目时,首次接触到了Docker和.yml文件,在仔细查阅资料并上手一番后感觉docker的使用非常的方便且功能十分的强大,便在此记录一番。
Docker概述
如果你写了一个http服务器,你想发给你的朋友看看,那么你可以部署到远程的服务器上,但是你要配置相同的环境、数据库、插件等等,甚至配置不同的操作系统。而Docker 是一个开源的容器化平台,允许开发者打包应用程序及其依赖到一个可移植的容器中,并可以在任何支持 Docker 的系统上运行,利用Docker便可以使用几条简单的命令,就能让你的朋友使用到你的程序。Docker包含镜像、容器和仓库三大概念:
1. 镜像
1.1 What is 镜像?
- 镜像 是一种轻量级、不可变的模板,包含运行某个应用程序所需的文件系统和配置。
- 它类似于虚拟机的快照,但比虚拟机更轻量和高效。
- 镜像不会被拉取到本地主机,而是在docker的管理文件当中
- 官方提供的 Python 镜像本质上是基于一个完整的 Linux 操作系统构建的
- 镜像是运行容器的基础,一个容器本质上就是镜像的一个运行实例。
我个人感觉容器和镜像之间的关系十分类似于进程和程序的关系,容器是镜像的一次运行过程。
1.2 镜像相关的操作
-
从 Docker Hub 或其他镜像仓库拉取。
docker pull 镜像名[:版本] -
列出本地所有镜像。
docker images -
如果镜像不再需要,可以删除。
docker rmi 镜像ID或名称
2 容器
2.1 What is 容器?
- 容器 是镜像的一个运行实例。
- 它是一个轻量级、独立的可运行环境,包含应用程序及其所有依赖项。
2.2 容器的用途
- 部署应用:将应用程序及其依赖打包到容器中,保证“在我的机器上可以跑”的一致性。
- 测试环境:快速创建独立的测试环境。
2.3 容器相关的操作
-
运行容器(-d表示在后台运行,-p为指定端口映射)
docker run -d -p 8080:80 --name my-nginx nginx -
查看运行中的容器(包括端口映射、名字等等信息、 -a表示查看所有容器)
``` docker ps -a ``` -
停止容器
docker stop 容器ID或名称 -
删除容器
docker rm 容器ID或名称
3 Docker 仓库(Registry)概述
Docker 仓库是用来存储和分发 Docker 镜像的服务。它分为以下几种类型:
公共仓库(Public Registry)
Docker Hub : 官方提供的公共 Docker 镜像存储库,地址是 hub.docker.com。 官方社区提供了大量的镜像。 默认情况下,Docker 使用 Docker Hub 作为镜像拉取和推送的仓库。
其他公共仓库: 比如阿里云镜像仓库、Google Container Registry 等。
私有仓库(Private Registry)
可以搭建自己的私有镜像仓库,存储公司内部的镜像。
官方提供了 docker registry 镜像,支持快速部署私有仓库。
私有仓库适用于企业需要管理敏感或专属的镜像。
常用 Docker 仓库命令
3.1 登录 Docker 仓库
docker login
-
登录 Docker Hub 或其他注册中心。
-
如果使用私有仓库,需要提供仓库地址:
docker login <registry_url>
3.2 登出 Docker 仓库
docker logout
-
登出默认的 Docker Hub:
docker logout -
登出私有仓库:
docker logout <registry_url>
3.3 拉取镜像
从仓库拉取镜像到本地:
docker pull <repository>:<tag>
-
示例:
bashCopy codedocker pull python:3.9 docker pull nginx:latest
3.4 镜像操作相关指令
将本地镜像推送到仓库:
docker push <repository>:<tag>
-
推送之前需要确保镜像的名称和标签符合仓库规范,例如:
bashCopy codedocker tag my-app:latest username/my-app:1.0 docker push username/my-app:1.0 -
查看本地的所有镜像:
docker images -
删除本地的镜像:
docker rmi <image_id_or_name>
3.5 查看镜像详情
查看某个镜像的详细信息:
docker inspect <image_id_or_name>
4 Dockerfile
4.1 什么是 Dockerfile
- Dockerfile 是一份文本文件,包含了一系列指令,用于定义如何构建一个镜像。
- 它是创建自定义镜像的脚本化工具。
4.2 Dockerfile 的基本结构
以下是常用指令及其作用:
FROM:指定基础镜像,所有镜像都必须基于某个已有镜像。WORKDIR:设置工作目录。COPY:将文件复制到镜像中。RUN:运行命令,例如安装依赖。CMD或ENTRYPOINT:设置容器启动时运行的默认命令。
总结
通过本次学习,我对 Docker 的基本原理、常用命令以及镜像和容器管理有了较为全面了解。Docker 在简化环境配置、提高开发效率和资源利用率方面有显著优势。接下来,我会将这些知识应用到gomall商城项目中去,进一步提升自己对Docker的理解。