如何开始docker - docker镜像及镜像仓库
docker 镜像
Linux 在内核启动之后,就加载 root 文件系统,为用户提供用户空间的支持,而在 docker 中,没有内核,直接加载 root 文件系统,因此,docker 镜像一般就是包含一套完整的 root 文件系统。
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
docker 封层存储
docker 镜像中的 root 文件系统一般是由一组或者多组文件组成。
镜像构建时,会一层层构建,前一层是后一层的基础。
每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。
在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。
因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。
搜索镜像
docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5205 [OK]
ansible/centos7-ansible Ansible on Centos7 120 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 106 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 80 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 50 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 47
tutum/centos Simple CentOS docker image with SSH access 43
gluster/gluster-centos Official GlusterFS Image [ CentOS-7 + Glust… 40 [OK]
openshift/base-centos7 A Centos7 derived base image for Source-To-I… 39
centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 37
centos/python-35-centos7 Platform for building and running Python 3.5… 33
kinogmt/centos-ssh CentOS with SSH 25 [OK]
centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or bui… 21
openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w… 20
centos/php-56-centos7 Platform for building and running PHP 5.6 ap… 19
pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 10
openshift/wildfly-101-centos7 A Centos7 based WildFly v10.1 image for use … 6
openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x ima… 4
darksheer/centos Base Centos Image -- Updated hourly 3 [OK]
pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 2
pivotaldata/centos Base centos, freshened up a little with a Do… 2
pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 1
blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK]
smartentry/centos centos with smartentry 0 [OK]
jameseckersall/sonarr-centos Sonarr on CentOS 7 0 [OK]
第一列是镜像的名称,第二列是镜像的命令,第三列是 stars 标记(有点想 github 的 star),第四列是是否是 docker hub 官方镜像,第五列是 aotmetad 镜像(通过通过代码版本管理网站结合 docker hub 提供的接口生成的, 例如 github, bitbucket)
docker search [包名] --filter "is-official=true"
只显示官方版本
docker search --filter=is-official=true centos
只显示 automated 版本
docker search --filter=is-automated=true centos
显示 stars 前十的镜像
docker search --filter=stars=10 centos
查询结果显示 5 个镜像
docker search --limit 5 centos
查询结果显示完整的字段内容
docker search --no-trunc centos
下载镜像
docker 运行容器前,需要本地先存在镜像,如果本地没有镜像,docker 默认会自动从 docker hub 公共注册服务中的仓库下载。
Docker Registry 是提供镜像仓库服务的。docker pull 就可以直接从仓库里面直接下载,如果不谢 Docker Registry 地址就是从 docker hub 下载。
命令格式:
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
6cf436f81810: Pull complete
987088a85b96: Pull complete
b4624b3efe06: Pull complete
d42beb8ded59: Pull complete
Digest: sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
Status: Downloaded newer image for ubuntu:latest
docker 镜像是多层存储构成的,下载的时候就是一层层下载,并非单个文件。
官方的镜像仓库 docker hub 在国内访问速度比较慢,可以阿里云或者网易云的镜像,直接到 web 去搜索比较方便,直接通过链接 pull 下来使用即可。
列出镜像
docker pull 之后就可以使用命令查看本地存在的镜像:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 47b19964fb50 2 weeks ago 88.1MB
debian latest d508d16c64cd 2 weeks ago 101MB
centos latest 1e1148e4cc2c 2 months ago 202MB
列表包含了仓库名、标签、镜像 ID、创建时间以及所占用的空间。
镜像查找
如果镜像过多就会导致,一长串的显示结果,不方便查找。
可以通过 grep 镜像关键字过滤
docker images | grep centos
查找镜像名称和标签为 none 的镜像:
docker images -f dangling=true
只显示镜像 ID
docker images -q
显示 ID 和名称
docker images --format "{{.ID}}: {{.Repository}}"
显示 ID、名称和标签
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
运行容器
docker run -i -t -d centos:latest
-i :交互式操作 -t :终端 -d:是后台进行并返回容器 ID。
进入容器
docker exec -it [容器ID] /bin/sh
- 原文作者:Linux运维菜
- 原文链接:https://www.opcai.top/post/2019/2019-02/docker3/
- 版权声明:本作品采用进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。