Docker使用笔记

学习资料：

Docker 入门教程 阮一峰

学点 Docker 知识

尚硅谷 2022 版 docker 教程

Docker 的安装

Centos 安装 docker

Centos7 上安装 docker

安装社区版
运行命令验证安装是否成功

Copy
docker version
# 或者
docker info

docker 是服务器客户端架构，命令行运行 docker 命令的时候需要本机有 docker 服务

Copy
# service 命令的用法
sudo service docker start
# systemctl 命令的用法
sudo systemctl start docker

image 文件

**Docker 把应用程序及其依赖，打包在 image 文件里面。** 只有通过这个文件，才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件，可以生成多个同时运行的容器实例。

Copy
# 列出本机的所有 image 文件
docker image ls
# 删除 image 文件
docker image rm imageName

简单操作

将 image 文件从仓库抓取到本地：docker pull hello-world

运行这个 image 文件：docker container run hello-world

手动终止：docker container kill [containID]

容器文件

**image 文件生成的容器实例，本身也是一个文件，称为容器文件。** 也就是说，一旦容器生成，就会同时存在两个文件： image 文件和容器文件。而且关闭容器并不会删除容器文件，只是容器停止运行而已。

列出本机正在运行的容器：docker container ls

列出本机所有容器，包括终止运行的容器：docker container ls -all

删除终止运行的容器文件：docker container rm [containerID]

docker 打包遇到的问题

docker 打包过慢

docker 使用 layer 创建镜像，Dockerfile 中每一个命令都会创建一个新的层，每层都包含执行命令前后的状态之间镜像的文件系统更改。如果 Dockerfile 和相关文件未更改，则重建 (rebuild) 时可以重用本地镜像缓存中的某些现有层。

不使用缓存打包

docker build --no-cache -t xxxx

docker 使用中遇到的问题

1. docker 运行 run 报错

Copy
docker run hello-world
/usr/bin/docker-current: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See '/usr/bin/docker-current run --help'.

解决：systemctl restart docker

2. docker info 中报错 Registry Mirrors: https://4piaafr1.mirror.aliyuncs.com/

已经修改好了，为什么还是显示

Copy
=> [1/7] FROM docker.io/library/

解决办法：
这种情况可能是由于 Docker 构建缓存导致的，Docker 在构建镜像时会尽量使用缓存以加快构建速度。所以可能修改了镜像源，Docker 在构建时仍然会尝试使用之前的缓存。
清除 Docker 缓存：在进行 Docker 构建前，可以使用 --no--cache 选项来禁用缓存，强制重新下载所需的镜像
docker build --no-cache -t your_image_name .

Mac 版 docker 的 daemon. json 在 ~/.docker 文件夹下

3. 换源

docker 切换清华源：

Copy
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}