跳转至

基础

Docker — 从入门到实践

docker一键安装脚本

curl -fsSL https://get.docker.com | sh

清理容器、镜像

# 删除无用镜像(y确认, -f强制删除)
docker image prune -a
# 删除异常停止的docker容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
# 删除名称或标签为none的镜像
docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'`
# 可对空间进行自动清理,清理的对象:已停止的容器;未被任何容器使用的卷;未被任何容器所关联的网络;所有悬空的镜像
docker system prune
#  一并清除所有未被使用的镜像和悬空镜像。
docker system prune -a
# 用以强制删除,不提示信息。
docker system prune -f
# 删除所有状态为dead的容器
docker rm -v $(docker ps -aq -f status=dead)
# 删除所有已退出的容器
docker rm -v $(docker ps -aq -f status=exited)

清理容器日志

# 找出docker container日志文件所在的路径
docker inspect --format='{{.LogPath}}' <container_name_or_id>
# 删除或者清空日志文件内容
echo |sudo tee $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)

# sudo tee 命令,可以同时将标准输入中的数据输出到标准输出和指定的文件中
sudo tee [-a] file 
# -a选项表示追加写入文件而不是覆盖写入。file表示需要输出到文件名,如果文件不存在,则会自动创建该文件。
echo "hello world" | sudo tee /tmp/hello.txt

查看docker占用CPU、内存等资源

docker stats

设置docker仓库

# 1.安裝必要的套件以允許使用 HTTPS 來存取倉庫:
apt-get update && apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
# 2.添加 Docker 的官方 GPG 密鑰:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 3.設置 Docker 倉庫。這裡使用 Docker 的國外官方源:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

换镜像源

Docker中国区官方镜像: https://registry.docker-cn.com 网易: http://hub-mirror.c.163.com ustc: https://docker.mirrors.ustc.edu.cn 中国科技大学: https://docker.mirrors.ustc.edu.cn 阿里云: https://cr.console.aliyun.com/ 腾讯云: https://mirror.ccs.tencentyun.com

创建或修改 /etc/docker/daemon.json 文件,修改:

{
    "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}

重启docker服务使配置生效:

systemctl daemon-reload
systemctl restart docker.service
# 查看配置是否成功:
docker info


卸载docker

Debian

# 卸载
apt-get purge docker-ce
apt-get purge docker-ce-cli
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

CentOS

# 1.杀死docker有关的容器:
docker kill $(docker ps -a -q)

# 2.删除所有docker容器:

docker rm $(docker ps -a -q)

# 3.删除所有docker镜像:

docker rmi $(docker images -q)

# 4.停止 docker 服务:

systemctl stop docker

# 5.删除docker相关存储目录:(分别进行执行以下四个命令)
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker

# 查看系统已经安装了哪些docker包:
yum list installed | grep docker

# 卸载相关包
yum remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-rootless-extras.x86_64 docker-scan-plugin.x86_64

# 再次查看:
yum list installed | grep docker

安装Docker

Debain

# 查看docker版本
apt-cache madison docker-ce-cli
# 安装指定版本
apt-get install docker-ce=5:19.03.12~3-0~debian-buster docker-ce-cli=5:19.03.12~3-0~debian-buster containerd.io

CentOS

# 查看docker版本
yum list containerd.io.x86_64 --showduplicates | sort -r
# 安装指定版本
yum -y install docker-ce-19.03.12-3.el7 docker-ce-cli-19.03.12-3.el7 containerd.io-1.2.13-3.2.el7 

构建Docker镜像

Dockerfile (构建tomcat镜像+字体) : 编辑: nano Dockerfile

FROM tomcat:8.5.83-jdk8

RUN  apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
    && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8

ENV TZ Asia/Shanghai
ENV LC_ALL en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LANG en_US.UTF-8

COPY fonts/*.TTF /usr/share/fonts/ttf-dejavu/
COPY fonts/*.TTC /usr/share/fonts/ttf-dejavu/

执行build

# build
docker build -t yx-tomcat:8.5.83 .
# 打标签
docker tag yx-tomcat:8.5.83 wiki.lyricn.com/public/yx-tomcat:8.5.83
# 登录仓库
docker login wiki.lyricn.com
# 推送镜像到仓库
docker push wiki.lyricn.com/public/yx-tomcat:8.5.82