安装Docker

更新yum包

shell复制
yum update -y

安装需要依赖

shell复制
yum install -y yum-utils

设置镜像仓库

shell复制
# 默认的
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云的
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引

shell复制
yum makecache fast

安装docker社区版

shell复制
yum install -y docker-ce docker-ce-cli containerd.io

开机自启

shell复制
systemctl enable docker

启动docker

shell复制
systemctl start docker

查看docker版本

shell复制
docker version

拉取镜像并启动一个容器

shell复制
docker run --rm hello-world  # –rm容器停止自动删除容器,保留镜像

卸载

shell复制
yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
rm -rf /var/lib/docker/
rm -rf /var/lib/containerd

常用命令

设置日志文件大小

shell复制
docker run --log-opt max-size=100m --log-opt max-file=3  # 最大100M,最多3个日志文件

查看日志文件路径

shell复制
docker inspect --format='{{.LogPath}}' 容器ID

清空日志文件

shell复制
echo "" > $(docker inspect --format='{{.LogPath}}' 容器ID)

查看日志最新的100条

shell复制
docker logs --tail=100 容器ID

实时查看最新日志

shell复制
docker logs -fn 100 容器ID

清理资源

shell复制
docker system prune

删除那些已停止的容器、dangling 镜像、未被容器引用的 network 和构建过程中的 cache

清理已经停止运行的容器

shell复制
docker rm $(docker ps --all -q -f status=exited)

清理镜像

shell复制
docker image prune -a  # 删除所有没有用的镜像,而不仅仅是临时文件

配置文件 daemon.json

shell复制
vim /etc/docker/daemon.json
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "3"
    },
    "registry-mirrors": [
        "https://mirror.ccs.tencentyun.com"
    ]
}

导出与导入

导出镜像

shell复制
docker save redis:7.0.8 > redis7.0.8.tar

导入镜像

shell复制
docker load < redis7.0.8.tar

修改现有镜像(以redis为例)

拉取镜像

shell复制
docker pull redis:7.0.8

启动容器

shell复制
docker run -itd --name redis --network=host redis:7.0.8

进入容器

shell复制
docker exec -it redis bash

修改容器实现查看ip地址

shell复制
# 替换sources.list
echo 'deb http://mirrors.aliyun.com/debian bullseye main'>/etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/debian-security bullseye-security main'>>/etc/apt/sources.list
echo 'deb http://mirrors.aliyun.com/debian bullseye-updates main'>>/etc/apt/sources.list
# 更新
apt-get update -y
# 安装 iproute2
apt install -y iproute2
# 此时可以查看ip
ip addr
# 退出容器
exit

保存容器为镜像

shell复制
docker commit redis jinzhengba/redis:7.0.8

通过Dockerfile构建镜像(以redis为例)

目录结构

shell复制
/home/jinzhenba-redis/
└── Dockerfile

Dockerfile

shell复制
FROM redis:7.0.8
MAINTAINER jinzhengba
# 设置时区
RUN ["rm","-rf","/etc/localtime"]
RUN ["ln","-sf","/usr/share/zoneinfo/Asia/Shanghai","/etc/localtime"]
EXPOSE 6379
CMD [ "redis-server" ]

构建镜像

shell复制
docker build -t jinzhengba/redis:7.0.8 .

上传到Docker仓库

需要前往 Docker仓库 新建名为 jinzhengba/redis 的仓库

登录docker

shell复制
docker login

推送镜像

shell复制
docker push jinzhengba/redis:7.0.8

连接ClashVerge代理

shell复制
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://192.168.31.45:7899"
Environment="HTTPS_PROXY=192.168.31.45:7899"
Environment="NO_PROXY=localhost,127.0.0.1"
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

# 删除代理
sudo rm -rf /etc/systemd/system/docker.service.d
sudo systemctl daemon-reload
sudo systemctl restart docker