文章目录
docker初识
1、安装 Docker
Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。
Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。
因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。
在 Windows 上部署 Docker 的方法都是先安装一个虚拟机,并在安装 Linux 系统的的虚拟机中运行 Docker。
安装 Hyper-V
Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式,这个方法依然属于先在虚拟机中安装 Linux 然后再安装 Docker 的方法。
Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。但是,这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!
安装Docker Desktop for Windows,安装完成可以在命令行执行 docker version 来查看版本号,docker run hello-world 来载入测试镜像测试。
2、Docker命令
运行 Docker 容器的基本命令是 docker run
。这个命令后面可以跟多个参数,用来指定容器的行为和配置。下面是一些常用的参数及其解释:
-i
:保持容器的标准输入(STDIN)打开。-t
:分配一个伪终端或终端。-d
:以守护进程模式运行容器(后台运行)。--name
:为容器指定一个名称。--rm
:容器退出时自动清理容器文件系统。-e
:设置环境变量。--env-file
:从文件中读取环境变量。-p
:将容器的端口映射到宿主机。-P
:将容器内部使用的所有端口随机映射到宿主机的高端口。-v
:挂载一个卷到容器内部。--volume
:与-v
类似,但提供了更多的选项。--network
:指定容器的网络连接。--detach-keys
:指定容器退出的快捷键。--restart
:设置容器的重启策略。- 镜像名称或ID:指定要运行的 Docker 镜像。
- 命令:在容器内执行的命令。
docker run --name seq -d --restart unless-stopped -e ACCEPT_EULA=Y -p 5341:80 datalust/seq:latest
docker run
: Docker 的一个命令,用于从镜像启动一个新的容器。--name seq
: 指定容器的名称为seq
。这样,你可以通过名称而不是容器ID来引用这个容器。-d
: 表示容器将以“分离模式”(detached mode)运行,即以守护进程模式运行容器(后台运行)。--restart unless-stopped
: 设置容器的重启策略。这个策略意味着,除非容器被手动停止(使用docker stop
),否则 Docker 将在容器退出时自动重启它。这包括在 Docker 守护进程启动时重启容器,以及在容器崩溃或 Docker 守护进程重启时重启容器。-e ACCEPT_EULA=Y
: 设置环境变量ACCEPT_EULA
的值为Y
。对于datalust/seq
容器来说,这通常表示你接受其最终用户许可协议(EULA)。-p 5341:80
: 将容器内部的 80 端口映射到宿主机的 5341 端口。这意味着,你可以通过访问宿主机的http://<宿主机IP>:5341
来访问容器内运行的 Seq 服务。datalust/seq:latest
: 指定要运行的镜像名称和标签。在这个例子中,使用的是datalust/seq
镜像的latest
标签,这通常指向该镜像的最新稳定版本。
列出Docker容器的基本命令是docker ps
。
docker ps
查看Docker镜像的命令是docker images
docker images
停止和启动Docker一个或多个容器的命令是docker stop
和docker start
删除Docker容器的命令是docker rm
构建Docker镜像的命令是docker build
- 使用
docker build
命令从 Dockerfile 构建镜像。
推送Docker镜像到DockerHub的命名是docker push
- 使用
docker push
命令将本地镜像推送到 Docker Hub。
拉取Docker镜像的命令是docker pull
- 使用
docker pull
命令从 Docker Hub 拉取镜像。
删除Docker镜像的命令是docker rmi
查看Docker容器的日志命令是docker logs
进入运行中的Docker容器是docker exec
清理 Docker 资源是docker system prune
- 使用
docker system prune
命令清理未使用的资源,例如悬挂的镜像、停止的容器、未使用的网络等
3、Docker基本概念
一、容器(Container)
- 定义:容器是Docker的核心组件之一,它是基于镜像创建的运行实例。容器是轻量级的,每个容器都作为一个独立的、可执行的进程运行,并且拥有自己的文件系统、网络和进程空间。
- 特性:容器可以在相对独立的环境中运行应用程序,而无需携带整个操作系统。这使得容器比传统的虚拟机更加轻量级和高效。容器可以在不同的主机之间轻松移动和部署,具有高度的可移植性。
- 操作:使用
docker run
命令可以创建并启动一个容器。使用docker start
、docker stop
、docker restart
命令可以分别启动、停止和重启容器。
二、镜像(Image)
- 定义:镜像是Docker的另一个核心概念,它是一个轻量级、独立的可执行软件包。镜像可以看作是一个包含了完整运行环境的模板,其中包括应用程序、库、环境变量和依赖项。
- 组成:镜像由一系列文件系统层叠加而成,每一层都代表一个特定的修改或添加。这种分层的结构使得镜像可以高效地共享和重用。
- 特性:镜像提供了应用程序的构建块,可以作为模板用于创建容器实例。镜像具有只读性,一旦创建,其内容就不能被修改(但可以通过创建新的镜像来更新)。
- 操作:使用
docker pull
命令可以从Docker Hub或其他镜像仓库中获取镜像。使用docker build
命令可以通过Dockerfile构建自定义镜像。
三、仓库(Repository)
- 定义:仓库是集中存放镜像文件的场所,用于镜像的存储、分发和共享。
- 类型:仓库可以分为公共仓库和私有仓库。公共仓库是开放的,任何用户都可以访问和下载镜像。私有仓库则需要权限验证才能访问。
- 知名仓库:Docker Hub是全球最大的Docker镜像仓库,包含了大量的官方和社区维护的镜像。阿里云容器镜像服务也是国内常用的Docker镜像仓库之一。
- 操作:使用
docker login
命令可以登录到Docker仓库。使用docker push
命令可以将镜像推送到Docker仓库。使用docker search
命令可以在Docker仓库中搜索镜像。
四、Dockerfile
- 定义:Dockerfile是一个文本文件,用于定义如何构建Docker镜像。它包含了一系列的指令和配置项,例如基础镜像、运行命令、复制文件、设置环境变量等。
- 作用:通过编写Dockerfile,开发者可以清晰地记录应用程序的配置和依赖,以及保证应用程序在不同的环境中运行的一致性。
- 指令:Dockerfile中常用的指令包括
FROM
(指定基础镜像)、COPY
(复制文件或目录到容器中)、RUN
(在镜像构建过程中执行命令)、CMD
(为启动的容器指定默认要运行的程序)、ENTRYPOINT
(设置容器启动时运行的命令)等。 - 操作:使用
docker build
命令可以根据Dockerfile构建自定义镜像。
指定基础镜像)、COPY
(复制文件或目录到容器中)、RUN
(在镜像构建过程中执行命令)、CMD
(为启动的容器指定默认要运行的程序)、ENTRYPOINT
(设置容器启动时运行的命令)等。
- 操作:使用
docker build
命令可以根据Dockerfile构建自定义镜像。