docker学习3-镜像的基本使用
前言
Docker的三大核心概念:镜像、容器、仓库。初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似
我们可以把镜像看作类,把容器看作类实例化后的对象。
docker | 面向对象 |
---|---|
镜像 | 类 |
容器 | 实例 |
查看镜像列表
使用docker images查看本地已经下载的镜像
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签,区分不同版本
- IMAGE ID:镜像ID,16进制组成,唯一标识
- CREATED:镜像创建时间
- SIZE:镜像大小
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#
我们本地下载的镜像文件是从仓库下载过来的,每个镜像在仓库源都有个名称,也就是 REPOSITORY,同一个镜像源可以有不同的版本,同标签(TAG)区分
下载镜像
直接使用 docker pull centos 默认是下载的最新的latest版本
docker pull centos
[root@yoyo ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
8ba884070f61: Already exists
Digest: sha256:b5e66c4651870a1ad435cd75922fe2cb943c9e973a9673822d1414824a1d0475
Status: Downloaded newer image for centos:latest
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
centos latest 9f38484d220f 3 months ago 202MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#
搜索镜像
docker search搜索相关的镜像文件
[root@yoyo ~]# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5424 [OK]
ansible/centos7-ansible Ansible on Centos7 121 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.6.1810 x86… 110 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 91 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 57 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 54
tutum/centos Simple CentOS docker image with SSH access 44
centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 37
kinogmt/centos-ssh CentOS with SSH 27 [OK]
如果我想下载一个centos7.5的镜像版本,该如何找到呢?
查找TAG版本
如果要找到指定的TAG版本,需打开docker官网https://hub.docker.com/search/?type=image,搜索框输入:centos搜索。
点击详情,找到TAGS,就可以看到不同的标签版本了
接下来指定TAG名称下载,后面加个冒号:标签名称
docker pull centos:centos7.5.1804
[root@yoyo ~]# docker pull centos:centos7.5.1804
centos7.5.1804: Pulling from library/centos
5ad559c5ae16: Pull complete
Digest: sha256:7a45e4a1efbaafc1d9aa89925b6fdb33288a96d35ea0581412316e2f0ad3720a
Status: Downloaded newer image for centos:centos7.5.1804
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
centos centos7.5.1804 cf49811e3cdb 3 months ago 200MB
centos latest 9f38484d220f 3 months ago 202MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#
更新镜像
上面下载的TAG名称是centos7.5.1804,这个太长了不太好记,可以改成一个自己喜欢的TAG名称,比如7.5
更新镜像需先启动容器
docker run -d centos:centos7.5.1804
[root@yoyo ~]# docker run -d centos:centos7.5.1804
64cc20e825e3cb70bdbb5c22dac72b061fba77895e794ae7a06d57d2ddfb8a96
[root@yoyo ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
64cc20e825e3 centos:centos7.5.1804 "/bin/bash" 38 seconds ago Exited (0) 35 seconds ago recursing_ardinghelli
fefdcbb9c662 centos/python-36-centos7 "container-entrypoin…" 24 hours ago Exited (0) 24 hours ago quirky_cray
9df329b5effd centos/python-36-centos7 "container-entrypoin…" 24 hours ago Exited (0) 24 hours ago nifty_roentgen
启动之后,查看到容器id号64cc20e825e3,根据容器id,去修改
- -m:提交的描述信息
- -a:指定镜像作者
- e218edb10161:容器ID
- runoob/ubuntu:v2:指定要创建的目标镜像名
docker commit -m="update tag name" -a="yoyo" 64cc20e825e3 centos:7.5
[root@yoyo ~]# docker commit -m="update tag name" -a="yoyo" 64cc20e825e3 centos:7.5
sha256:254d4dfe9df7765ccf511bd8e7ff1f5de96b0b5a0af2542ee4cd30c8ac0575b3
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.5 254d4dfe9df7 8 seconds ago 200MB
centos latest b9af5ce31055 35 seconds ago 200MB
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#
设置镜像TAG
如果只是修改镜像TAG名称,可以用docker tag给镜像取个新的tag名称, 这里的id是镜像的id
docker tag 254d4dfe9df7 centos:v7.5
[root@yoyo ~]# docker tag 254d4dfe9df7 centos:v7.5
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.5 254d4dfe9df7 9 minutes ago 200MB
centos v7.5 254d4dfe9df7 9 minutes ago 200MB
centos latest b9af5ce31055 9 minutes ago 200MB
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#
这时候会多了一个v7.5的标签
删除镜像
上面多了个7.5的TAG,并且IMAGE ID是重复的,可以使用docker rmi 删掉它,可以加-f参数强制删除
- -f :强制删除;
- --no-prune :不移除该镜像的过程镜像,默认移除;
[root@yoyo ~]# docker rmi centos:7.5
Untagged: centos:7.5
[root@yoyo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos v7.5 254d4dfe9df7 12 minutes ago 200MB
centos latest b9af5ce31055 12 minutes ago 200MB
centos/7.5 latest 62a395cab78e 13 minutes ago 200MB
centos/python-36-centos7 latest b8d15efaa8ec 2 months ago 651MB
centos centos7.5.1804 cf49811e3cdb 3 months ago 200MB
centos <none> 9f38484d220f 3 months ago 202MB
ubuntu 15.10 9b9cb95443b5 2 years ago 137MB
training/webapp latest 6fae60ef3446 4 years ago 349MB
[root@yoyo ~]#
想在别人的基础上重新做一个镜像,需要创建一个 Dockerfile 文件,后面讲 Docker 如何构建我们的镜像。
python接口QQ群:717225969