Docker 快速入门(Ubuntu版)

Docker是一个开源的平台,用于开发、部署和运行应用程序,它通过容器化技术实现应用的打包、隔离和跨平台部署。Docker 将应用程序及其所有依赖项打包到一个称为容器的标准化单元中,以便能够在任何支持 Docker 的环境中运行。这种方法使得应用程序可以无缝地在开发、测试和生产环境之间移动,消除了"在我电脑上运行没问题"的问题。

Docker 的核心概念:
1. 容器(Container ):

容器是 Docker 的基本运行单元,它包含了应用程序以及运行它所需的一切环境(如库、配置文件、依赖项等)。与虚拟机不同,容器共享宿主操作系统的内核,因此比虚拟机更轻量、启动更快,且资源占用更少。

2. 镜像(Image)

Docker 镜像是一个只读的模板,用于创建 Docker 容器。镜像包含了应用程序及其所需的环境和依赖项,是创建容器的基础。你可以将镜像视为容器的蓝图。

3. Docker 引擎(Docker Engine)

Docker 引擎是用于构建和运行容器的核心组件。它包含:

  • 守护进程(Daemon):管理 Docker 容器的后台服务。

  • 客户端(Client):与守护进程通信的命令行工具。

  • 镜像注册表(Registry):存储和分发 Docker 镜像的仓库。

4. Dockerfile

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的指令。通过定义一系列命令,开发者可以指定如何从基础镜像构建自己的应用镜像。

5. 仓库(Registry)

Docker 镜像可以发布到仓库,方便分发和分享。Docker Hub 是官方提供的公共仓库,用户可以上传、下载各种镜像。

Docker 的优点:

  • 跨平台一致性:应用程序在任何支持 Docker 的操作系统中运行时都有相同的行为,简化了从开发到生产的流程。

  • 轻量化:容器与虚拟机相比资源开销更少,启动速度更快。

  • 易于部署和扩展:通过 Docker Compose 等工具,可以轻松地管理多个容器,便于构建微服务架构。

  • 版本管理和回滚:镜像可以记录多个版本,支持快速回滚到前一个版本。

使用 Docker 创建并运行容器 :

1. 安装 Docker

首先,确保你的系统上已经安装了 Docker。如果没有安装,可以根据你的操作系统选择相应的安装方法:
- Linux: 在 Ubuntu、CentOS 等 Linux 发行版上可以通过包管理工具安装 Docker。
- Windows/Mac: 可以从 [Docker官网] ( https://www.docker.com/products/docker-desktop) 下载 Docker Desktop 安装包。

安装完成后,可以运行 `docker --version` 来检查 Docker 是否安装成功。

bash 复制代码
docker --version

2. 拉取镜像

容器是基于镜像创建的,因此首先需要从 Docker Hub(或其他仓库)拉取所需的镜像。

bash 复制代码
docker pull <镜像名>

例如,拉取一个官方的 Ubuntu 镜像:

bash 复制代码
docker pull ubuntu

3. 查看已拉取的镜像

你可以使用以下命令查看本地有哪些镜像:

bash 复制代码
docker images

4. 创建并运行容器

使用拉取的镜像创建并运行容器,可以通过 `docker run` 命令:

bash 复制代码
docker run [选项] <镜像名> [命令]

例如,基于 Ubuntu 镜像运行一个容器,并进入交互模式:

bash 复制代码
docker run -it ubuntu

-i:开启交互模式,让容器保持打开。

-t:分配一个伪终端。

ubuntu:使用的镜像。

bash:默认进入 `bash` 终端(可选,如果未指定,Docker 会默认进入容器的启动命令)。

此时你已经进入了一个 Ubuntu 容器的终端,可以像操作普通 Linux 系统一样在容器内部运行命令。

5. 后台运行容器

如果你想让容器在后台运行(例如运行一个 Web 服务器),可以使用 `-d` 参数(detach模式):

bash 复制代码
docker run -d <镜像名>

例如,启动一个 Nginx 容器:

bash 复制代码
docker run -d -p 8080:80 nginx

-d:后台运行容器。

-p 8080:80:将主机的 8080 端口映射到容器的 80 端口。这样你可以通过 `http://localhost:8080` 访问 Nginx 服务。

6. 列出正在运行的容器

要查看当前正在运行的容器,可以使用以下命令:

bash 复制代码
docker ps

如果想查看所有容器(包括已停止的容器),可以加上 `-a` 参数:

bash 复制代码
docker ps -a

7. 停止容器

要停止一个正在运行的容器,可以使用以下命令:

bash 复制代码
docker stop <容器ID或容器名>

例如:

bash 复制代码
docker stop my_container

8. 启动已停止的容器

要重新启动已停止的容器,可以使用 `docker start`:

bash 复制代码
docker start <容器ID或容器名>

9. 进入正在运行的容器

如果需要进入正在运行的容器的终端,可以使用 `docker exec` 命令:

bash 复制代码
docker exec -it <容器ID或容器名> /bin/bash

例如:

bash 复制代码
docker exec -it my_container /bin/bash

这会将你带入容器的命令行环境。

10. 删除容器

停止容器后,如不再需要,可以删除它:

bash 复制代码
docker rm <容器ID或容器名>

如果想强制删除一个正在运行的容器,可以使用 `-f` 选项:

bash 复制代码
docker rm -f <容器ID或容器名>

11. 删除镜像

如果镜像不再需要,也可以将其删除:

bash 复制代码
docker rmi <镜像ID或镜像名>

12. 使用 Dockerfile 自定义镜像

如果你想自定义镜像,可以创建一个 `Dockerfile`,然后使用 `docker build` 命令创建镜像。以下是一个简单的 Dockerfile 示例:

bash 复制代码
# 基于官方的 Ubuntu 镜像
FROM ubuntu:latest

# 安装一些基础软件
RUN apt-get update && apt-get install -y curl vim

# 设置工作目录
WORKDIR /app

# 启动命令
CMD ["bash"]

然后使用 `docker build` 命令创建镜像:

bash 复制代码
docker build -t my_custom_image .

`-t` 参数指定镜像名称,`.` 表示 Dockerfile 的路径(当前目录)。

13. 查看容器日志

要查看某个容器的输出日志,可以使用 `docker logs` 命令:

bash 复制代码
docker logs <容器ID或容器名>
相关推荐
开心工作室_kaic12 分钟前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
刚刚好ā12 分钟前
js作用域超全介绍--全局作用域、局部作用、块级作用域
前端·javascript·vue.js·vue
懒洋洋大魔王13 分钟前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
武子康18 分钟前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
转世成为计算机大神1 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式
qq_327342731 小时前
Java实现离线身份证号码OCR识别
java·开发语言
沉默璇年2 小时前
react中useMemo的使用场景
前端·react.js·前端框架
yqcoder2 小时前
reactflow 中 useNodesState 模块作用
开发语言·前端·javascript
2401_882727572 小时前
BY组态-低代码web可视化组件
前端·后端·物联网·低代码·数学建模·前端框架
SoaringHeart2 小时前
Flutter进阶:基于 MLKit 的 OCR 文字识别
前端·flutter