前端学习Docker(二) - 镜像
2021-08-03 运维知识
docker 安装 #
- docker 分为企业版(EE)和社区版(CE)
- docker-ce
- hub.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
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
systemctl start docker
查看 docker 版本 #
$ docker version
$ docker info
$ docker version
$ docker info
卸载 #
docker info
yum remove docker
rm -rf /var/lib/docker
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
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
docker image ls
字段 | 含义 |
---|---|
REPOSITORY | 仓库地址 |
TAG | 标签 |
IMAGE_ID | 镜像 ID |
CREATED | 创建时间 |
SIZE | 镜像大小 |
查找镜像 #
docker search ubuntu
docker search ubuntu
字段 | 含义 |
---|---|
NAME | 名称 |
DESCRIPTION | 描述 |
STARTS | 星星的数量 |
OFFICIAL | 是否官方源 |
拉取镜像 #
docker pull docker.io/hello-world
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
docker rmi hello-world
export #
- 将容器文件系统作为一个 tar 归档文件导出到
STDOUT
docker export -o hello-world.tar b2712f1067a3
docker export -o hello-world.tar b2712f1067a3
import #
docker import hello-world.tar
docker import hello-world.tar
save #
docker save -o hello-world.tar hello-world:latest
docker save -o hello-world.tar hello-world:latest
load #
docker load -i hello-world.tar
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
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
版权属于: vincent
转载时须注明出处及本声明
Tags:# Docker