侧边栏壁纸
  • 累计撰写 4 篇文章
  • 累计创建 7 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker常用命令

Editor
2024-03-19 / 0 评论 / 1 点赞 / 79 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

以下命令默认以root用户运行

切换为root账户的方法
输入

sudo -i

此时需输入root账户密码(不显示密码)
输入密码后按Enter即可切换为root用户

一、安装docker前优化

1.更新软件源

apt-get update
  • apt-get update – 更新软件源为最新版,本地软件不进行升级的
  • apt-get upgrade – 本地安装软件与本地软件列表对比,如本地安装版本低,会提示更新

2.升级packages

apt update -y

3.安装常用工具

apt-get install -y wget curl sudo vim git 

4.添加SWAP虚拟内存

注意:VPS 的内存如果过小,建议设置一下 SWAP,一般为内存的 1-1.5 倍即可,可以让系统运行更流畅!

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

国内机可用

wget -O box.sh https://mirror.ghproxy.com/https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

输入数字18Enter确认

18

然后输入你想要扩容的数值(一般为服务器物理内存的1-1.5倍)即可,以2G物理内存为例,可以选择2-3G,输入数字3

3

然后重启服务器

reboot

二、Docker、Docker-compose安装

2.1海外服务器/非大陆服务器

2.1.1Docker安装

  1. 安装
wget -qO- get.docker.com | bash
  1. 设置开机自动启动
systemctl enable docker

2.1.2Docker-compose安装

  1. 安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  1. 查看版本
docker-compose --version

2.2国内服务器

2.2.1Docker安装

  1. 安装
curl -sSL https://get.daocloud.io/docker | sh
  1. 设置开机自动启动
systemctl enable docker

2.2.2Docker-compose安装

  1. 安装
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

2.3 离线安装

2.3.1 下载安装包

  • 官方安装包列表:https://download.docker.com/linux/

  • 依次下载containerd.iodocker-ce-clidocker-ce 三个软件包

  • 也可使用wget直接拉取,再传至相应服务器

以debian10、AMD64为例

wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/containerd.io_1.6.9-1_amd64.deb

wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-ce-cli_26.1.4-1~debian.10~buster_amd64.deb

wget https://download.docker.com/linux/debian/dists/buster/pool/stable/amd64/docker-ce_26.1.4-1~debian.10~buster_amd64.deb

2.3.2 开始安装

dpkg -i {安装包}

#以debian10、AMD64为例
dpkg -i containerd.io_1.6.9-1_amd64.deb
dpkg -i docker-ce-cli_26.1.4-1~debian.10~buster_amd64.deb
dpkg -i docker-ce_26.1.4-1~debian.10~buster_amd64.deb

三、Docker、Docker-compose卸载

3.1 卸载docker

以下命令需要逐条执行

  • 停止并删除所有docker容器

    docker rm -f $(docker ps -qa)
    
  • 删除所有docker镜像:

    docker rmi $(docker images -qa)
    
  • 停止 docker 服务:

    systemctl stop docker
    
  • 卸载相应软件

    apt-get purge docker-ce
    apt-get purge docker-ce-cli
    apt-get purge docker-ce-rootless-extras
    apt-get purge docker-scan-plugin
    
    apt-get purge containerd.io
    
  • 查看是否完全卸载

    apt list --installed | grep docker
    apt list --installed | grep containerd.io
    
  • 删除残留文件

    rm -rf /var/lib/docker
    rm -rf /var/run/docker
    rm -rf /etc/docker
    rm -rf /run/docker.sock
    rm -rf /var/lib/containerd
    rm -rf /run/containerd
    rm -rf /opt/containerd
    

    如果删除不掉,则先umount,然后再重新执行上面那步“删除docker相关存储目录”。

    umount /var/lib/docker/devicemapper
    

3.2 卸载docker-compose

rm /usr/local/bin/docker-compose

四、Docker使用

4.1开启IPv6功能 (可选)

增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘

  1. 复制粘贴以下代码;
cat > /etc/docker/daemon.json <<EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
  1. Enter键后输入
EOF
  1. 然后重启 Docker 服务:
systemctl restart docker

4.2查看docker内部ip

一般是172.17.0.1
输入

ip addr show docker0

https://c.vekixx.com/i/2024/03/21/65fbf4774b3ed.webp

4.3安装容器(container)

  1. 创建Docker容器数据放置文件夹
mkdir -p /root/data/docker_data/{docker_container_name}

以npm为例

mkdir -p /root/data/docker_data/npm
  1. 进入Docker容器数据放置文件夹
cd /root/data/docker_data/{docker_container_name}

以npm为例

cd /root/data/docker_data/npm
  1. 使用docker-compose方法安装,首先创建docker-compose.yml文件
vim docker-compose.yml
  • i进入编辑/插入模式
  • 粘贴后,按ESC提出编辑/插入模式
  • 输入:wq保存修改并退出vim编辑器(不保存退出输入:q!
  1. 调用docker-compose.yml文件安装docker
docker-compose up -d

4.4更新容器(container)

如无必要不建议随意更新

  1. 进入Docker容器数据放置文件夹
cd /root/data/docker_data/{docker_container_name}

以npm为例

cd /root/data/docker_data/npm
  1. 停止目前容器(container)运行

此方法需要当前文件夹有docker-compose.yml文件

docker-compose down

如无docker-compose.yml文件,需要运行以下代码:

docker ps

出现以下代码

CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES
a75530a059fa    jc21/nginx-proxy-manager:latest    "/init"    2 years ago    Up 2 weeks    0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   npm_app_1

查看容器(container) 对的CONTAINER ID

docker stop {docker_container_id} && docker rm {docker_container_id}

如图中所示,npm的CONTAINER ID为a75530a059fa,则命令行为

docker stop a75530a059fa && docker rm a75530a059fa

即可停止npm的容器运行

  1. 数据备份
cp -r /root/data/docker_data/{docker_container_name} /root/data/docker_data/{docker_container_name}.archive

以npm为例

cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive
  1. 拉取容器(container)最新镜像

docker-compose.yml文件内image的标签要为latest

docker-compose pull

如不是latest,需修改标签为latest或者改为特定的版本

version: '3.3'
services: 
npm:
 # latest标签
 image: 'jc21/nginx-proxy-manager:latest'
 # 特定版本(以v1.13为例)标签
 image: 'jc21/nginx-proxy-manager:1.13'

或者使用修改后的命令(docker-compose.yml文件内依然要改,否则不能安装相应版本)

# 拉取latest版本
docker pull jc21/nginx-proxy-manager:latest
# 拉取特定版本(如v1.13)
docker pull jc21/nginx-proxy-manager:1.13
  1. 更新容器(container)

此方法需要当前文件夹有docker-compose.yml文件

docker-compose up -d
  1. 删除未安装镜像(image)
    (包含已安装镜像的旧版本、未安装的镜像)

以下操作不可恢复!!!谨慎使用!!!

docker image prune

输入y确认

y
  1. 删除未安装的容器(container)

以下操作不可恢复!!!谨慎使用!!!

docker container prune

输入y确认

y

4.5卸载容器(container)

  1. 进入Docker容器数据放置文件夹
cd /root/data/docker_data/{docker_container_name}

以npm为例

cd /root/data/docker_data/npm
  1. 停止目前容器(container)运行

此方法需要当前文件夹有docker-compose.yml文件

docker-compose down

如无docker-compose.yml文件,需要运行以下代码:

docker ps

出现以下代码

CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES
a75530a059fa    jc21/nginx-proxy-manager:latest    "/init"    2 years ago    Up 2 weeks    0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   npm_app_1

查看容器(container) 对的CONTAINER ID

docker stop {docker_container_id} && docker rm {docker_container_id}

如图中所示,npm的CONTAINER ID为a75530a059fa,则命令行为

docker stop a75530a059fa && docker rm a75530a059fa

即可停止npm的容器运行

截至目前,仅停止容器(container)运行,文件夹仍在,数据不会丢失。

再次运行 4.3安装容器 的步骤即可恢复原有数据

  1. 完全删除文件夹

以下操作不可恢复!!!谨慎使用!!!

以下操作不可恢复!!!谨慎使用!!!

以下操作不可恢复!!!谨慎使用!!!

会删除所有数据,不可恢复!!!

进入上一级文件夹(即/root/data/docker_data

cd ..

删除Docker容器数据文件夹

rm -rf /root/data/docker_data/{docker_container_name}

以npm为例

rm -rf /root/data/docker_data/npm
  1. 删除未安装镜像(image)
    (包含已安装镜像的旧版本、未安装的镜像)

以下操作不可恢复!!!谨慎使用!!!

docker image prune

输入y确认

y
  1. 删除未安装的容器(container)

以下操作不可恢复!!!谨慎使用!!!

docker container prune

输入y确认

y

4.6 清理空间

以下操作不可恢复!!!谨慎使用!!!

以下操作不可恢复!!!谨慎使用!!!

以下操作不可恢复!!!谨慎使用!!!

docker system prune

默认会清除所有如下资源: 请谨慎使用!!!

  • 已停止的容器(container)

  • 未被任何容器所使用的卷(volume)

  • 未被任何容器所关联的网络(network)

  • 所有悬空镜像(image)

    未被使用的镜像(image)不会被删除

docker system prune -a

默认会清除所有如下资源: 请谨慎使用!!!

  • 已停止的容器(container)

  • 未被任何容器所使用的卷(volume)

  • 未被任何容器所关联的网络(network)

  • 所有悬空镜像(image)

  • 未被使用的镜像(image)

docker system prune -f

#忽略相关告警确认信息。
1

评论区