docker 安装
安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
启动
systemctl start docker
查看 docker 版本
$ docker version
$ docker info
卸载
docker info
yum remove docker
rm -rf /var/lib/docker
Docker 架构

阿里云加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://fwvjnv59.mirror.aliyuncs.com"]
}
EOF
# 重载所有修改过的配置文件
//daemon-reload: 重新加载某个服务的配置文件
sudo systemctl daemon-reload
sudo systemctl restart docker
image 镜像
- Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器
- image 文件可以看作是容器的模板
- Docker 根据 image 文件生成容器的实例
- 同一个 image 文件,可以生成多个同时运行的容器实例
- 镜像不是一个单一的文件,而是有多层
- 容器其实就是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层里。如果容器删除了,最上面的读写层也就删除了,改动也就丢失了
- 我们可以通过
docker history <ID/NAME> 查看镜像中各层内容及大小,每层对应着Dockerfile中的一条指令
| 命令 |
含义 |
语法 |
案例 |
| ls |
查看全部镜像 |
docker image ls |
|
| search |
查找镜像 |
docker search [imageName] |
|
| history |
查看镜像历史 |
docker history [imageName] |
|
| inspect |
显示一个或多个镜像详细信息 |
docker inspect [imageName] |
|
| pull |
拉取镜像 |
docker pull [imageName] |
|
| push |
推送一个镜像到镜像仓库 |
docker push [imageName] |
|
| rmi |
删除镜像 |
docker rmi [imageName] docker image rmi 2 |
|
| prune |
移除未使用的镜像,没有标记或补任何容器引用 |
docker image prune |
docker image prune |
| tag |
标记本地镜像,将其归入某一仓库 |
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] |
docker tag centos:7 vincent/centos:v1 |
| export |
将容器文件系统作为一个 tar 归档文件导出到 STDOUT |
docker export [OPTIONS] CONTAINER |
docker export -o hello-world.tar b2712f1067a3 |
| import |
导入容器快照文件系统 tar 归档文件并创建镜像 |
docker import [OPTIONS] file/URL/- [REPOSITORY[:TAG]] |
docker import hello-world.tar |
| save |
将指定镜像保存成tar文件 |
docker save [OPTIONS] IMAGE [IMAGE...] |
docker save -o hello-world.tar hello-world:latest |
| load |
加载 tar 文件并创建镜像 |
|
docker load -i hello-world.tar |
| build |
根据 Dockerfile 构建镜像 |
docker build [OPTIONS] PATH / URL / - |
docker build -t zf/ubuntu:v1 . |
- 用户既可以使用
docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库
- 这两者的区别在于容器(import)快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像(load)存储文件将保存完整记录,体积也要大
- 此外,从容器(import)快照文件导入时可以重新指定标签等元数据信息
查看镜像
docker image ls
| 字段 |
含义 |
| REPOSITORY |
仓库地址 |
| TAG |
标签 |
| IMAGE_ID |
镜像 ID |
| CREATED |
创建时间 |
| SIZE |
镜像大小 |
查找镜像
docker search ubuntu
| 字段 |
含义 |
| NAME |
名称 |
| DESCRIPTION |
描述 |
| STARTS |
星星的数量 |
| OFFICIAL |
是否官方源 |
拉取镜像
docker pull docker.io/hello-world
- docker image pull 是抓取 image 文件的命令
- docker.io/hello-world 是 image 文件在仓库里面的位置,其中
docker.io是 image 的作者,hello-world 是 image 文件的名字
- Docker 官方提供的 image 文件,都放在
docker.io组里面,所以它的是默认组,可以省略 docker image pull hello-world
删除镜像
docker rmi hello-world
export
- 将容器文件系统作为一个 tar 归档文件导出到
STDOUT
docker export -o hello-world.tar b2712f1067a3
import
docker import hello-world.tar
save
docker save -o hello-world.tar hello-world:latest
load
docker load -i hello-world.tar
commit 制作个性化镜像
- docker commit :从容器创建一个新的镜像。
- docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- -a :提交的镜像作者
- -c :使用 Dockerfile 指令来创建镜像
- -m :提交时的说明文字
- -p :在 commit 时,将容器暂停
- 停止容器后不会自动删除这个容器,除非在启动容器的时候指定了 --rm 标志
- 使用 docker ps -a 命令查看 Docker 主机上包含停止的容器在内的所有容器
- 停止状态的容器的可写层仍然占用磁盘空间。要清理可以使用
docker container prune 命令
docker container commit -m"我的nginx" -a"vincent" 3695dc5b9c2d vincent/mynginx:v1
docker image ls
docker container run vincent/mynginx /bin/bash
docker container rm b2839066c362
docker container prune
docker image rmi c79ef5b3f5fc