Docker实操

安装Docker

环境

PRETTY_NAME="Ubuntu 22.04 LTS"

NAME="Ubuntu"

VERSION_ID="22.04"

sudo apt update 
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
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
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo docker run hello-world

解析

1. sudo apt update

更新系统软件包列表

  • 作用:apt 是 Ubuntu 系统中用于管理软件包的工具。sudo apt update 命令以超级用户权限运行,它的作用是从软件源(也就是配置在 /etc/apt/sources.list 及其子目录中的源)获取最新的软件包列表信息。这样做能确保后续安装软件时使用的是最新的软件版本信息。

2. sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

安装必要的依赖包

  • sudo apt install:以超级用户权限安装软件包。

  • -y:参数表示在安装过程中遇到确认提示时,自动选择 “是”,避免手动交互。

  • apt-transport-https:用于支持通过 HTTPS 协议从软件源下载软件包。

  • ca-certificates:包含了用于验证 SSL/TLS 证书的 CA(证书颁发机构)证书,确保在通过 HTTPS 下载软件时能验证服务器的身份。

  • curl:一个常用的命令行工具,用于通过多种协议(如 HTTP、HTTPS、FTP 等)传输数据,后续会用它来下载 Docker 的 GPG 密钥。

  • gnupg:用于处理 GPG(GNU Privacy Guard)加密和签名的工具,用于验证下载的软件包的完整性和真实性。

  • lsb-release:用于获取当前系统的发行版信息,后续配置 Docker 软件源时会用到。

3. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

添加 Docker 的官方 GPG 密钥,确保下载的软件包来源可靠

  • curl -fsSL

    • -f:若请求失败,不显示详细的错误信息。

    • -s:静默模式,不显示进度信息。

    • -S:与 -s 一起使用时,若请求失败会显示错误信息。

    • -L:若服务器返回重定向,会自动跟随重定向。

    • 整体作用是从 https://download.docker.com/linux/ubuntu/gpg 下载 Docker 的 GPG 密钥。

  • |:管道符号,将 curl 命令的输出作为 gpg 命令的输入。

  • sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    • --dearmor:将下载的 ASCII 格式的 GPG 密钥转换为二进制格式。

    • -o /usr/share/keyrings/docker-archive-keyring.gpg:将转换后的密钥保存到 /usr/share/keyrings/docker-archive-keyring.gpg 文件中。

4. 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 软件源

  • echo:用于输出指定的字符串。

  • "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable"

    • deb:表示这是一个 Debian 格式的软件源。

    • [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]:指定软件包的架构为 amd64,并使用之前下载并保存的 GPG 密钥来验证软件包的签名。

    • https://download.docker.com/linux/ubuntu:Docker 官方的 Ubuntu 软件源地址。

    • $(lsb_release -cs):通过 lsb_release -cs 命令获取当前 Ubuntu 系统的发行版代号(如 focal 表示 Ubuntu 20.04),并将其插入到软件源配置中。

    • stable:表示使用稳定版本的 Docker 软件包。

  • |:管道符号,将 echo 命令的输出作为 tee 命令的输入。

  • sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    • tee:将输入内容同时输出到标准输出和指定的文件中。

    • /etc/apt/sources.list.d/docker.list:将软件源配置信息保存到该文件中。

    • > /dev/null:将 tee 命令的标准输出重定向到 /dev/null,即丢弃输出信息。

5. sudo apt update

  • 作用:再次更新软件包列表信息,因为之前添加了 Docker 的软件源,需要重新获取最新的软件包信息。

6.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

  • sudo apt install:以超级用户权限安装软件包。

  • docker-ce:Docker 社区版,是 Docker 的免费版本,包含了 Docker 引擎等核心组件。

  • docker-ce-cli:Docker 社区版的命令行工具,用于与 Docker 引擎进行交互。

  • containerd.io:一个容器运行时,是 Docker 引擎的底层依赖组件之一。

7. sudo docker run hello-world

  • sudo docker run:以超级用户权限运行一个 Docker 容器。

  • hello-world:这是一个简单的 Docker 镜像,用于验证 Docker 是否安装成功。运行该镜像后,如果 Docker 安装和配置正确,会输出一段欢迎信息,表明 Docker 可以正常工作。

安装portainer

创建 Portainer 数据卷:
docker volume create portainer_data
运行 Portainer 容器:
docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

docker-compose批量创建容器

创建docker-compose.yml

version: '3'
services:
  nginx-service:
    image: nginx
    ports:
      - "8080:9090"
    volumes:
      - /etc/docker/nginx:/etc/nginx
  caddy-1:
    image: caddy
    ports:
      - "8081:80"
  caddy-2:
    image: caddy
    ports:
      - "8082:80"
  caddy-3:
    image: caddy
    ports:
      - "8083:80"
networks:
  default:
    name: file

执行docker-compose

docker-compose默认执行的是docker-compose.yml文件

docker-compose -f up -d

容器打包成镜像

1.获取容器ID或名称

docker ps -a

2.创建新镜像

docker commit [选项] <容器 ID 或名称> <仓库名称>[:<标签>]
docker commit -m "这是从vs容器创建的新镜像" -a "HYH" vs vsimage:Wise
-m  添加提交信息
-a  添加作者信息
把名为vs的容器创建仓库,仓库名称为vsimage,标签是Wise

3.验证

docker images

4.保存到本地

docker save -o 存放的文件路径 <仓库名称>[:<标签>]

docker save -o /etc/docker/images/vsimage.tar vsimage:Wise

5.加载镜像[镜像仓库不存在时才需要加载]

docker load -i vsimage.tar

编写 Dockerfile 构建新镜像

待学习

posted @ 2025-03-29 00:03  WiseHYH  阅读(72)  评论(0)    收藏  举报