Docker 安装
清理残余组件
执行后可能会报错(软件包不存在等)但不必理会。
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
安装必备依赖
apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
信任 Docker 的 GPG 公钥并添加仓库:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/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] https://mirrors.cernet.edu.cn/docker-ce/linux/debian \"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
DockerHub 换源
编辑/etc/docker/daemon.json文件:
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://dockerproxy.com"]
}
EOFsudo systemctl daemon-reload
sudo systemctl restart docker
Docker 改变数据位置
在**/etc/docker/daemon.json文件中添加如下项,然后执行systemctl restart docker**重启Docker服务即可。强烈建议在全新安装后就更换数据位置,否则可能会出现权限问题和丢数据等问题。
{..."data-root": "/path/to/your/dataroot"...
}
Docker 容器修改 DNS
在**/etc/docker/daemon.json**文件中添加如下项,然后执行systemctl restart docker重启Docker服务即可。
{..."dns" : ["1.1.1.1","8.8.8.8"]...
}
镜像加速器 镜像加速器地址
Docker 中国官方镜像 https://registry.docker-cn.com DaoCloud
镜像站 http://f1361db2.m.daocloud.io Azure
中国镜像 https://dockerhub.azk8s.cn
阿里云 https://<code_yourself>.mirror.aliyuncs.com
七牛云 https://reg-mirror.qiniu.com 网易云 https://hub-mirror.c.163.com
腾讯云 https://mirror.ccs.tencentyun.com
Portainer
Portainer 是一个基于Web图形化的Docker管理工具,分为CE社区版(Community Edition)和BE商业版(Business Edition)。Portainer 无论是社区版还是商业版都没有官方中文版本,但有旧版本的第三方汉化(不建议使用)。
Portainer-CE(社区版)
创建数据库
docker volume create portainer_data
拉取镜像并启动
docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --name portainer \--restart=always \-v /var/run/docker.sock:/var/run/docker.sock \-v portainer_data:/data \portainer/portainer-ce:latest
访问https://localhost:9443(已设置SSL证书的前提下)或http://localhost:9000(未设置SSL证书)即可进入后台。
Portainer-EE(企业版)
创建数据库
docker volume create portainer_data
拉取镜像并启动
docker run -d -p 8000:8000 -p 9443:9443 -p 9000:9000 --name portainer \--restart=always \-v /var/run/docker.sock:/var/run/docker.sock \-v portainer_data:/data portainer/portainer-ee:latest
访问https://localhost:9443(已设置SSL证书的前提下)或http://localhost:9000(未设置SSL证书)即可进入后台。
设置SSL
打开 Portainer ,Setting 👉 SSL certificate 上传 SSL 证书即可。
Docker 设置代理
要求 Docker 17.07 及以上版本。
在/etc/docker/daemon.json文件中添加如下项,然后重启Docker服务即可。
{"proxies":{"default":{"httpProxy": "http://192.168.1.12:3128","httpsProxy": "http://192.168.1.12:3128","noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"}}
}
Docker 常用命令
此处所提到的常用命令可能并非是完整的,仅为个人常用或可能用到的。
完整的命令提示请参考Docker官方网站。
登录到 Docker Hub:docker login。(非安全方式)
拉取镜像
docker pull NAME[:TAG]
docker pull redis
docker pull nginx:latest
docker pull alpine:edge
docker pull ubuntu:20.04
拉取包含所有标签的镜像
docker pull --all-tags alpine
从未签名且可能不信任的位置拉取镜像(–disable-content-trust 参数)
docker pull --disable-content-trust localhost:5000/alpine
查看镜像列表
docker images
查看容器列表
docker ps
删除容器
docker rm NAME|CONTAINER-ID
docker rm 25fcd8c616d3
docker | 删除镜像 | [-强制删除] | 容器名或ID
docker rmi [-f] NAME|CONTAINER-ID
docker rmi 54c9d81cbb44
docker rmi -f ubuntu:20.04
运行进入容器(退出容器exit)
docker run -it NAME|CONTAINER-ID [/bin/bash]
docker run -it ubuntu:20.04
容器的文件操作
从外部复制到容器内:
docker cp source container:target_path
从容器内部复制到容器外:
docker cp container:source_path output_path
容器镜像导入导出
导出镜像:docker save [options] images [images…]
docker save -o ubuntu-bak.tar ubuntu:20.04
导入镜像:docker load [options]
docker load -i ubuntu-bak.tar
Docker Compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YAML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YAML 文件配置中创建并启动所有服务。
docker-compose --version
查看日志
查看日志
docker logs -f CONTAINER_ID
限制日志查询范围
只查看最后200行:
docker logs --tail 200 CONTAINER_ID
只查看最后30分钟:
docker logs --since 30m CONTAINER_ID
查看某时间后的日志:
dockere logs -t --since "2022-06-13T18:11:00" CONTAINER_ID
查看某时间段的日志:
docker logs -t --since "2022-06-13T16:11:00" --until "2022-06-13T18:11:00" CONTAINER_ID