docker安装及常用命令

11 阅读3分钟

安装Docker CE

Docker CE(Community Edition),Docker社区版,适用于开发人员和运维人员构建容器使用的免费版本

官方安装文档:docs.docker.com/engine/inst…

安装脚本

我这里以Debian系统和Unbuntu为例,使用国内镜像源写了个安装脚本,其它Linux版本参考官方文档,都是大同小异的

  • 拷贝下面脚本文件按照提示执行即可
#!/bin/bash

MIRROR_URL="" # 镜像源URL

select_os() {
    echo "请选择操作系统::"
    echo "1) debian"
    echo "2) ubuntu"
    echo "3) 退出"
    read -p "请输入选项 (1-3): " os_choice

    case $os_choice in
    1)
        os_choice="debian"
        ;;
    2)
        os_choice="ubuntu"
        ;;
    3)
        echo "退出..."
        exit 0
        ;;
    *)
        echo "无效选项,请重新运行脚本并选择有效选项."
        exit 1
        ;;
    esac
}

select_mirror_source() {
    echo "请选择安装镜像源:"
    echo "1) 阿里云"
    echo "2) 华为云"
    echo "3) 清华镜像"
    echo "4) 退出"
    read -p "请输入选项 (1-4): " mirror_choice

    case $mirror_choice in
    1)
        echo "正在配置阿里云镜像源..."
        MIRROR_URL="https://mirrors.aliyun.com/docker-ce/linux/${os_choice}"
        ;;
    2)
        echo "正在配置华为云镜像源..."
        MIRROR_URL="https://mirrors.huaweicloud.com/docker-ce/linux/${os_choice}"
        ;;
    3)
        echo "正在配置清华镜像源..."
        MIRROR_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/${os_choice}"
        ;;
    4)
        echo "退出..."
        exit 0
        ;;
    *)
        echo "无效选项,请重新运行脚本并选择有效选项."
        exit 1
        ;;
    esac
}

install_docker_ce() {
    echo "Docker CE开始安装..."
    sudo apt-get update
    sudo apt-get install -y \
        ca-certificates \
        curl \
        gnupg \
        lsb-release

    echo "添加Docker的官方GPG密钥..."
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL "${MIRROR_URL}/gpg" | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg

    echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] $MIRROR_URL $(lsb_release -cs) stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    echo "Docker CE 安装完成."
}

# 主程序
main() {
    # 选择操作系统
    select_os

    # 选择镜像源
    select_mirror_source

    # 安装Docker CE
    install_docker_ce

    echo ""
    echo "脚本执行完成!"
}

# 执行主函数
main "$@"
  • 默认情况下,docker只允许在root用户下使用,如果想要其它用户使用docker,需要将用户添加到docker用户组
# 创建docker用户组
sudo groupadd docker
# 添加当前用户到docker用户组
sudo usermod -aG docker $USER
  • 安装校验
# 能正常输出docker版本号就说明安装成功了
docker version

常用Docker命令

镜像相关

# 查看本地镜像docker images# 搜索镜像
docker search [image]

# 下载镜像
docker pull [image]

# 删除镜像
docker rmi [image]
  • 镜像导入到文件,或从文件导入到镜像
# docker导出镜像到文件
docker save [OPTIONS] IMAGE [IMAGE...]
# 例如
docker save -o mysql-8.tar mysql:8.0

# docker导入文件到镜像
docker load [OPTIONS]
# 例如
docker load -i mysql-8.tar

容器相关

# docker查看所有运行的容器docker ps [-a]    # -a  -> 查看所有容器,包括未运行的# 新建并运行容器(容器如果已经存在,则使用 docker start 命令启动)
docker run [options] [image]
    # options 常用启动选项:
    # -d   -> 后台运行
    # -p 宿主IP:容器IP  -> 将容器IP映射到宿主IP
    # -v 宿主file/path:容器file/path    -> 将容器的file/path挂载到宿主的file/path
    # --name [name]     -> 为容器命名
    # --restart always  -> 设置容器随docker一起自动启动

# 删除容器
docker rm [containID/containName] [options]
    # options 常用选项:
    # -f    ->  强制删除容器
# 启动容器/停止容器/重启容器docker start/stop/restart [containID/containName]

# 进入容器
docker exec -it [containID/containName] bash
或
docker exec -it [containID/containName] /bin/bash(如果容器是基于alpine 镜像的 最后的 /bin/bash 需要换成 /bin/sh )

# 执行容器的命令
docker exec -it [containID/containName] [commond]
# 示例,执行 redis-test 容器的 redis-cli 命令
docker exec -it redis-test redis-cli -a "123456"
# 说明: 这句话执行了 redis-test容器的 redis-cli 命令,-a 命令的作用是输入密码

查看容器启动日志

docker logs -f -t --tail=100 [容器]
  • 参数说明
    • -f:查看实时日志
    • -t:查看日志产生的时间
    • -tail=100:查看最后的100条日志
    • [容器]:容器名称

容器导入到文件,或从文件导入到容器

# docker导出容器到文件
docker export [OPTIONS] CONTAINER
# 例如
docker export -o mysql-8.tar mysql-demo

# docker导入容器生成的文件到镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
# 例如
docker import mysql-8.tar mysql:8.0

查看容器启动参数

需要安装runlike,执行pip3 install runlike即可

runlike -p <容器名>|<容器ID>

修改容器启动参数

docker update [OPTIONS] [CONTAINER...]

# 例如
docker update --restart=always eureka-server

容器和宿主机文件传输相关

# 从 主机 拷贝到 docker 容器
docker cp [主机文件] [容器]:[容器路径]

# 从 docker容器 拷贝到 主机
docker cp [容器]:[容器路径] [主机文件]