学习资料:
Docker 的安装#
Centos 安装 docker#
安装社区版
运行命令验证安装是否成功
docker version
# 或者
docker info
docker 是服务器客户端架构,命令行运行 docker 命令的时候需要本机有 docker 服务
# service 命令的用法
sudo service docker start
# systemctl 命令的用法
sudo systemctl start docker
image 文件#
**Docker 把应用程序及其依赖,打包在 image 文件里面。** 只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
# 列出本机的所有 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 报错#
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/
#
已经修改好了,为什么还是显示
=> [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 切换清华源:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}