Docker 快速入门(Ubuntu版)

Source

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 是否安装成功。

docker --version

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

docker pull <镜像名>


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

docker pull ubuntu

 3. 查看已拉取的镜像
你可以使用以下命令查看本地有哪些镜像:

docker images

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

docker run [选项] <镜像名> [命令]


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

docker run -it ubuntu

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

 -t:分配一个伪终端。
 ubuntu:使用的镜像。
 bash:默认进入 `bash` 终端(可选,如果未指定,Docker 会默认进入容器的启动命令)。

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

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

docker run -d <镜像名>


例如,启动一个 Nginx 容器:

docker run -d -p 8080:80 nginx


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

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

docker ps


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

docker ps -a

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

docker stop <容器ID或容器名>


例如:

docker stop my_container

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

docker start <容器ID或容器名>

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

docker exec -it <容器ID或容器名> /bin/bash


例如:

docker exec -it my_container /bin/bash


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

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

docker rm <容器ID或容器名>


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

docker rm -f <容器ID或容器名>

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

docker rmi <镜像ID或镜像名>

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

# 基于官方的 Ubuntu 镜像
FROM ubuntu:latest

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

# 设置工作目录
WORKDIR /app

# 启动命令
CMD ["bash"]


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

docker build -t my_custom_image .


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

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

docker logs <容器ID或容器名>