docker

docker 生命周期

快速实践,使用docker,来切换不同的发行版本,内核使用的都是宿主机的内核

#利用docker获取不同的发行版本镜像

[root@master ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@master ~]# uname -r
3.10.0-1160.71.1.el7.x86_64

root@master ~]# docker pull centos:7.8.2003

[root@master ~]# docker pull ubuntu

#确认当前宿主机发行版本


[root@master ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

#运行centos7.8.2003发行版

运行centos7.8.2093发行版
#运行容器,且进入容器内
# 参数 解释 -i 交互式命令操作  -t 开启一个终端afb6fca791e 是镜像的id bash 进入容器后,执行的命令

[root@master ~]# docker run -it afb6fca791e0 bash

#查看容器内的发行版本
[root@c680f55253e4 /]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

[root@master ~]# docker run -it ba6acccedd29 bash
root@7d2e5947b269:/# 


#查看容器的发行版本

总结:

1.一个完整的系统,是由Linux的内核+发行版,才组成了一个可以使用的完整的系统

2.利用docker容器,可以获取不同的发行版本镜像,然后基于该镜像,运行出各种容器去使用

docker镜像

1.原理

2.原理2

#进入到正在运行的容器内,命令是
[root@master ~]# docker exec -it 8063e8de1ebe bash

获取镜像

1.从dockerhub获取镜像

#1.获取镜像,镜像托管仓库,好比Yum源一样
#默认的docker仓库是,dockerhub,有大量的优质的镜像,以及用户自己上传的镜像 centos容器 vim nginx ... 提交为镜像,上传到dockerhub

docker search 镜像名:tag tag就是具体的标签版本

docker search centos

#查看本地的镜像文件有哪些

[root@master ~]# docker images

[root@master ~]# docker images ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

#下载docker镜像 

docker pull centos #默认的是 centos:latest
docker pull centos:7.8.2003

#查看docker镜像的存储路径




[root@master ~]# docker info  | grep Root
 Docker Root Dir: /var/lib/docker

[root@master ~]# ls /var/lib/docker/image/overlay2/imagedb/content/sha256/ -l

#该文件作用是
记录 镜像 和容器的配置关系

#使用不同的镜像,生成容器
#-it 开启一个交互式的终端  --rm  容器退出时删除该容器
[root@master ~]# docker run -it --rm centos bash

2.本地镜像导出、导入

3.私有的docker仓库

查看镜像

#查看具体的镜像
[root@master ~]# docker images nginx
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   22 months ago   141MB
[root@master ~]# docker images ubuntu
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ba6acccedd29   2 years ago   72.8MB

#可以指定具体tag

[root@master ~]# docker images centos:7.8.2003 
REPOSITORY   TAG        IMAGE ID       CREATED       SIZE
centos       7.8.2003   afb6fca791e0   3 years ago   203MB


#值列出镜像的id
-q  --quiet 只列出id

[root@master ~]# docker images -q
605c77e624dd
7614ae9453d1
ba6acccedd29
5d0da3dc9764
afb6fca791e0
d9e50bf28896

格式化显示镜像
[root@master ~]# docker images --format "{{.ID}}--{{.Repository}}"
605c77e624dd--nginx
7614ae9453d1--redis
ba6acccedd29--ubuntu
5d0da3dc9764--centos
afb6fca791e0--centos
d9e50bf28896--opensuse


#以表格形式显示,美化
[root@master ~]# docker images --format  "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID       REPOSITORY   TAG
605c77e624dd   nginx        latest
7614ae9453d1   redis        latest
ba6acccedd29   ubuntu       latest
5d0da3dc9764   centos       latest
afb6fca791e0   centos       7.8.2003
d9e50bf28896   opensuse     latest


#搜索dockerhub的镜像
docker search 镜像名

删除镜像

下载
[root@master ~]# docker pull hello-world


#根据镜像的 id 名字 摘要等
#被删除的镜像不得有依赖的容器记录
docker rmi   hello-world


docker ps -a
#删除容器记录

[root@master ~]# docker rm  4c7039868be4

[root@master ~]# docker rmi hello-world:latest 
Untagged: hello-world:latest
Untagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359
[root@master ~]# docker images
REPOSITORY   TAG        IMAGE ID       CREATED         SIZE
nginx        latest     605c77e624dd   22 months ago   141MB
redis        latest     7614ae9453d1   22 months ago   113MB
ubuntu       latest     ba6acccedd29   2 years ago     72.8MB
centos       latest     5d0da3dc9764   2 years ago     231MB

#指定前三位

[root@master ~]# docker images
REPOSITORY    TAG        IMAGE ID       CREATED         SIZE
nginx         latest     605c77e624dd   22 months ago   141MB
redis         latest     7614ae9453d1   22 months ago   113MB
ubuntu        latest     ba6acccedd29   2 years ago     72.8MB
hello-world   latest     feb5d9fea6a5   2 years ago     13.3kB
centos        latest     5d0da3dc9764   2 years ago     231MB
centos        7.8.2003   afb6fca791e0   3 years ago     203MB
opensuse      latest     d9e50bf28896   4 years ago     111MB

[root@master ~]# docker rmi  feb
Untagged: hello-world:latest
Untagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359

镜像管理

#批量删除镜像的用法,rm
#批量删除镜像,慎用
 [root@master ~]# docker rmi `docker images -aq`

[root@master ~]# docker rm `docker images -aq`

#导出镜像
#比如默认运行的centos镜像,不提供vim功能,运行该容器后,在容器内安装vim
#然后提供该镜像,再到处该镜像为压缩文件,可以发给其他人用
#放在容器管理篇学习
docker commit

#导出镜像的命令
[root@master ~]# docker image save centos:7.8.2003 > /opt/centos7.8.2003.tgz

#导入镜像的命令
#docker images
[root@master ~]# docker image load -i /opt/centos7.8.2003.tgz 

#查看镜像详细信息
#查看docker服务的信息
docker indo

docker image inspacet 镜像id