Ubuntu 22和Docker使用指南

简介

Ubuntu 22是最新版本的Ubuntu操作系统,而Docker是一种流行的容器化平台。本文将介绍如何在Ubuntu 22上安装和使用Docker,并提供一些常见的Docker操作示例和使用技巧。

安装Docker

在Ubuntu 22上安装Docker非常简单。可以按照以下步骤进行操作:

  1. 打开终端并更新软件包列表:
sudo apt update
  1. 安装Docker依赖包:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  1. 添加Docker官方GPG密钥:
curl -fsSL  | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 添加Docker存储库:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新软件包列表并安装Docker:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
  1. 验证Docker安装是否成功:
docker --version

如果成功安装,将输出Docker的版本信息。

Docker使用指南

运行第一个容器

在安装完Docker后,让我们尝试运行一个简单的容器。我们将使用官方的hello-world镜像。

  1. 拉取hello-world镜像:
docker pull hello-world
  1. 运行镜像中的容器:
docker run hello-world

如果一切顺利,你将看到一个包含欢迎信息的输出。

构建和运行自定义镜像

Docker不仅可以使用现有的镜像,还可以通过Dockerfile构建自定义镜像。

  1. 创建一个新目录以用于构建自定义镜像:
mkdir myapp
cd myapp
  1. 在该目录下创建一个名为Dockerfile的文件并用编辑器打开:
touch Dockerfile
nano Dockerfile
  1. Dockerfile中定义镜像构建指令:
FROM ubuntu:22.04
RUN apt update && apt install -y nginx
CMD ["nginx", "-g", "daemon off;"]

以上示例中,我们使用了ubuntu:22.04作为基础镜像,并安装了Nginx服务器。

  1. 构建自定义镜像:
docker build -t myapp .

注意,最后的.表示使用当前目录中的Dockerfile进行构建。

  1. 运行自定义镜像中的容器:
docker run -d -p 80:80 myapp

这将在后台运行一个容器,并将容器的80端口映射到主机的80端口。

运行容器之间的通信

在Docker中,容器之间可以通过网络进行通信。可以使用Docker的网络功能来实现容器之间的通信。

  1. 创建一个新的网络:
docker network create mynetwork
  1. 运行两个容器并加入到该网络中:
docker run -d --name container1 --network mynetwork nginx
docker run -d --name container2 --network mynetwork nginx

以上示例中,我们创建了两个Nginx容器,并将它们加入到名为mynetwork的网络中。

  1. container1容器中使用curl命令来访问container2容器:
docker exec container1 curl container2

如果一切顺利,你将得到container2容器中Nginx服务器的响应。

Docker关系图

下面是一个使用Mermaid语法绘制的Docker关系图:

erDiagram
    Docker --|> Ubuntu 22: Base Image
    Docker --|> Containers: Running Instances
    Docker --|> Images: Container Templates

以上关系图展示了Docker与Ubuntu 22、容器和镜像之间的关系