理解Docker的镜像image

Docker通过容器来打包应用,(环境和代码)

Docker的三大核心概念:

1.镜像(image)

2.容器(container)

3.仓库(repository)

镜像:类似于虚拟机环境,只读的模板,镜像是创建容器的基础

容器:从镜像创建的应用运行实例,盒子,沙箱,互不可见,隔离

仓库:docker集中存放镜像的场所,类似代码仓库

Docker仓库和仓库注册服务器的关系

仓库注册服务器是存放仓库的地方,每个仓库集中存放某一类镜像,通过不同的tag来区分(类似git管理)

注册服务器 --> 创库 --> 各种仓库的不同tag版本

将当前用户加入安装中自带的Docker组

1
sudo usermod -aG docker hqd8080

获取镜像

1
2
3
docker pull name:tag      //(名称+标签)
docker pull ubuntu:18.04 //默认从官方拉取
docker pull ubuntu //下载最新的镜像,默认是(ubuntu:latest)

从网易丰巢下载镜像

1
docker pull hub.c.163.com/public/ubuntu:18.04  

通过镜像创建容器

1
docker run -it ubuntu:18.04 bash

查看镜像信息

1
2
docker images
docker images -a

使用tag给已经存在的镜像打标签

1
docker tag ubuntu:18.04 myubuntu:latest

使用history查看镜像历史,列出各层的创建信息

1
2
3
docker history ubuntu:18.04
#详细信息(不截断)
docker history ubuntu:18.04 --no-trunc

搜索镜像(远端仓库共享镜像|官方)

1
docker search ubuntu

删除镜像

1
2
3
4
5
6
7
8
9
10
11
docker rmi myubuntu:latest
docker images -a

#使用镜像ID删除镜像的相关注意事项
#有容器正在运行无法通过ID直接删除镜像,必须先删除依赖的容器,或者用-f强制删除

docker run ubuntu:18.04 echo 'hello hqd8080'
docker ps -a
docker rmi ubuntu:18.04
docker rmi -f ubuntu:18.04
docker rm a5212cvvbdgfsh // 使用镜像ID删除镜像

创建镜像的三种方法:

1.基于已有的镜像的容器创建

1
2
3
sudo docker run -ti ubuntu:18.04 /bin/bash #(基于ubuntu18.04创建)
#记住容器ID xxxxx
sudo docker commit -m"Added a new file" -a "docker newbee" xxxxx test #test是tag

2.基于本地模版导入创建

1
sudo cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04

3.基于dockerfile创建

存入和载入镜像

1
2
3
4
5
#存入镜像
sudo docker save -o ubuntu_18.04.tar ubuntu:18.04

#载入镜像
sudo docker load —input ubuntu_18.04.tar 或者 sudo docker load < ubuntu_18.04.tar