在当今的软件开发和部署领域,Docker 已经成为了一种不可或缺的工具。它能够帮助开发者将应用程序及其依赖项打包成一个独立的容器,实现快速部署和资源隔离。Ubuntu 作为一种广泛使用的 Linux 发行版,与 Docker 有着很好的兼容性。本文将详细介绍如何在 Ubuntu 上使用 Docker 来管理容器与镜像。
安装 Docker
在 Ubuntu 上安装 Docker 可以通过多种方式,这里推荐使用官方的安装脚本。首先,需要更新系统的软件包列表,确保系统是最新的。打开终端,输入以下命令:
sudo apt update sudo apt upgrade
接着,安装一些必要的依赖包,这些包将帮助系统与 Docker 仓库进行通信。命令如下:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
添加 Docker 的官方 GPG 密钥,以确保下载的软件包是来自官方且未被篡改的。使用以下命令:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 软件源到系统的软件源列表中。执行以下命令:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
再次更新软件包列表,使新添加的软件源生效。然后安装 Docker 引擎:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io
安装完成后,可以通过以下命令验证 Docker 是否安装成功:
sudo docker run hello-world
如果看到输出信息表明 Docker 已经成功运行,那么说明安装过程顺利完成。
镜像管理
镜像(Image)是 Docker 的核心概念之一,它是一个只读的模板,包含了运行容器所需的所有文件系统和配置信息。在 Ubuntu 上使用 Docker 管理镜像,首先要了解如何获取镜像。
拉取镜像
可以使用 docker pull 命令从 Docker Hub 或其他镜像仓库拉取镜像。例如,要拉取一个最新版本的 Nginx 镜像,可以执行以下命令:
sudo docker pull nginx
如果需要指定镜像的版本,可以在镜像名称后面加上冒号和版本号。例如,拉取 Nginx 1.21.6 版本的镜像:
sudo docker pull nginx:1.21.6
查看镜像
使用 docker images 命令可以查看本地已经下载的镜像列表。该命令会显示镜像的仓库名称、标签、镜像 ID、创建时间和大小等信息。示例如下:
sudo docker images
删除镜像
当本地的镜像不再需要时,可以使用 docker rmi 命令删除镜像。需要注意的是,在删除镜像之前,必须确保没有基于该镜像运行的容器。例如,要删除之前拉取的 Nginx 镜像,可以执行以下命令:
sudo docker rmi nginx
如果要删除指定版本的镜像,可以使用镜像的标签或 ID。例如:
sudo docker rmi nginx:1.21.6
构建镜像
除了从仓库拉取镜像,还可以根据自己的需求构建自定义的镜像。这需要使用 Dockerfile 来定义镜像的构建规则。以下是一个简单的 Dockerfile 示例,用于构建一个基于 Ubuntu 系统并安装 Python 的镜像:
FROM ubuntu:20.04 RUN apt update && apt install -y python3 CMD ["python3", "--version"]
将上述内容保存为 Dockerfile,然后在包含该文件的目录下执行以下命令来构建镜像:
sudo docker build -t my-python-image .
其中,-t 参数用于指定镜像的标签,. 表示使用当前目录作为构建上下文。
容器管理
容器(Container)是镜像的运行实例。在 Ubuntu 上使用 Docker 管理容器,需要掌握容器的创建、启动、停止、删除等操作。
创建并启动容器
使用 docker run 命令可以创建并启动一个新的容器。例如,使用之前拉取的 Nginx 镜像创建一个容器:
sudo docker run -d -p 8080:80 nginx
其中,-d 参数表示以守护进程模式运行容器,-p 参数用于将容器内部的端口映射到宿主机的端口。上述命令将容器内部的 80 端口映射到宿主机的 8080 端口。
查看容器
使用 docker ps 命令可以查看当前正在运行的容器列表。如果要查看所有容器,包括已停止的容器,可以使用 docker ps -a 命令。示例如下:
sudo docker ps sudo docker ps -a
停止容器
使用 docker stop 命令可以停止正在运行的容器。需要指定容器的 ID 或名称。例如,停止之前创建的 Nginx 容器:
sudo docker stop <容器 ID 或名称>
启动已停止的容器
使用 docker start 命令可以启动已停止的容器。同样需要指定容器的 ID 或名称。示例如下:
sudo docker start <容器 ID 或名称>
删除容器
使用 docker rm 命令可以删除容器。在删除容器之前,必须确保容器已经停止。例如,删除之前的 Nginx 容器:
sudo docker rm <容器 ID 或名称>
进入容器
使用 docker exec 命令可以进入正在运行的容器内部进行操作。例如,进入一个正在运行的 Ubuntu 容器:
sudo docker exec -it <容器 ID 或名称> /bin/bash
其中,-it 参数用于分配一个伪终端并保持标准输入打开,以便可以在容器内部进行交互式操作。
容器与宿主机之间的数据共享
在实际应用中,经常需要在容器和宿主机之间共享数据。可以使用 Docker 的数据卷(Volume)来实现这一目的。
创建数据卷
使用 docker volume create 命令可以创建一个数据卷。例如:
sudo docker volume create my-volume
查看数据卷
使用 docker volume ls 命令可以查看所有的数据卷。示例如下:
sudo docker volume ls
挂载数据卷到容器
在创建容器时,可以使用 -v 参数将数据卷挂载到容器内部。例如,将之前创建的 my-volume 数据卷挂载到一个新的 Nginx 容器的 /usr/share/nginx/html 目录:
sudo docker run -d -p 8080:80 -v my-volume:/usr/share/nginx/html nginx
这样,宿主机和容器之间就可以通过数据卷进行数据共享了。
通过以上步骤,你已经学会了如何在 Ubuntu 上使用 Docker 管理容器与镜像。掌握这些技能将有助于你更高效地进行软件开发和部署工作。