• 1·安装
    脚本安装

    sudo wget -qO- https://get.docker.com/ | bash

    手动安装

    https://docs.docker.com/engine/install/
  • 2·使用
    镜像命令

    docker pull 镜像名
    docker run -d --name 容器名 镜像名:标签
    docker images
    docker rmi 镜像名
    docker commit 容器名或ID 新镜像名:标签
    docker save -o name-image.tar 镜像名:标签
    docker load -i name-image.tar

    容器命令

    docker compose up -d
    
    #在docker-compose.yml目录下执行更新镜像
    docker compose pull
    docker compose pull 容器名
    
    docker ps -a
    docker rm -f 容器名
    docker stop 容器名
    docker start 容器名
    docker logs 容器名
    
    # 将本地文件复制到容器
    docker cp 宿主机文件路径 容器名或ID:容器内路径
    # 将容器文件复制到本地当前目录
    docker cp 容器名或ID:容器内路径 宿主机文件路径
    
    docker exec -it 容器名 sh
    exit
    
    # 查看容器内文件
    docker exec 容器名或ID ls 容器内路径
    # 在容器内压缩
    tar -czf bundle.tar.gz file1 file2 folder/
    # 在容器内解压
    docker exec 容器名或ID tar -xzf /tmp/bundle.tar.gz -C /target/

    网络命令

    # 列出所有网络
    docker network ls
    
    # 查看特定网络的详细信息
    docker network inspect 网络名
    
    # 创建网络
    docker network create 网络名
    
    # 删除网络
    docker network rm 网络名
    
    # 清理未使用的网络
    docker network prune
    
    # 将运行中的容器连接到网络
    docker network connect 网络名 容器名或ID
    
    # 断开容器与网络的连接
    docker network disconnect 网络名 容器名或ID
    
    # 启动容器时指定网络
    docker run --network 网络名 镜像名
    
    # 启动容器时加入多个网络
    docker run --network 网络名1 镜像名
    docker network connect 网络名2 容器ID
    # 加入网络
    networks:
        - 要加入的网络
    
    # 使用已存在的网络(不要创建新网络)
    networks:
    已存在的网络:
      external: true  # 使用已存在的网络,而不是创建新的
    
    # 创建新的网络(不要创建新网络)
    networks:
    网络名称:
      external: false  # 创建新的网络

    修改存储路径

    # 停止所有相关服务
    systemctl stop docker
    systemctl stop docker.socket
    systemctl stop containerd
    
    # 创建目标目录(假设迁移到 /data)
    mkdir -p /data/docker
    mkdir -p /data/containerd
    
    # 迁移数据(使用 rsync 保留权限和属性)
    rsync -avxP /var/lib/docker/ /data/docker/
    rsync -avxP /var/lib/containerd/ /data/containerd/
    
    # 重命名原目录作为备份(安全起见)
    mv /var/lib/docker /var/lib/docker.bak
    mv /var/lib/containerd /var/lib/containerd.bak
    
    # 修改 Docker 配置文件
    cat > /etc/docker/daemon.json <<EOF
    {
    "data-root": "/data/docker",
    "log-driver": "json-file",
    "log-opts": {
      "max-size": "10m",
      "max-file": "3"
    }
    }
    EOF
    
    # 修改 containerd 配置文件
    root = "/data/containerd"
    
    # 启动服务(顺序很重要)
    systemctl start containerd
    systemctl start docker
    systemctl start docker.socket   # 可选,一般 docker 启动后会自动激活
    
    # 确认无误后删除备份
    rm -rf /var/lib/docker.bak
    rm -rf /var/lib/containerd.bak