OK,有了Docker的基本命令,那就完全可以使用Docker了,下面简单拉取一个精简版的CentOS作为Docker的初步使用。
拉取CenOS基础镜像
执行命令 docker pull centos
它默认去国外的仓库去拉取,但由于我们配置了阿里云的镜像仓库,所以从国内拉取,速度非常快。使用 docker images 来查看拉取下来的镜像。
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 75835a67d134 4 weeks ago 200 MB
创建容器并运行
执行命令 docker run -it 75835a67d134
-it表示以交互方式运行,也就是执行完命令后直接进入容器内部,然后执行 ls -l 会发现,完完全全跟linux系统无异。使用命令 cat /etc/redhat-release 查看系统版本,如下:
[root@40e3d7ba1402 /]# ll
total 56
-rw-r--r-- 1 root root 12030 Oct 6 19:15 anaconda-post.log
lrwxrwxrwx 1 root root 7 Oct 6 19:14 bin -> usr/bin
drwxr-xr-x 5 root root 360 Nov 12 10:58 dev
drwxr-xr-x 1 root root 4096 Nov 12 10:58 etc
drwxr-xr-x 2 root root 4096 Apr 11 2018 home
lrwxrwxrwx 1 root root 7 Oct 6 19:14 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Oct 6 19:14 lib64 -> usr/lib64
drwxr-xr-x 2 root root 4096 Apr 11 2018 media
drwxr-xr-x 2 root root 4096 Apr 11 2018 mnt
drwxr-xr-x 2 root root 4096 Apr 11 2018 opt
dr-xr-xr-x 87 root root 0 Nov 12 10:58 proc
dr-xr-x--- 2 root root 4096 Oct 6 19:15 root
drwxr-xr-x 1 root root 4096 Nov 12 10:58 run
lrwxrwxrwx 1 root root 8 Oct 6 19:14 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 Nov 12 10:58 sys
drwxrwxrwt 7 root root 4096 Oct 6 19:15 tmp
drwxr-xr-x 13 root root 4096 Oct 6 19:14 usr
drwxr-xr-x 18 root root 4096 Oct 6 19:14 var
[root@40e3d7ba1402 /]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
查看镜像大小
执行命令 docker images
一个CentOS系统大小竟然才200M,用过VMware的都知道,一般镜像大约4个G,为何这个虚拟镜像才这么点,其实是Docker对虚拟镜像的Linux系统进行了裁切,将跟我们软件运行无关的硬件系统全部裁剪掉了,比如声卡,显卡等等吧仅仅留下了一个运行的内核Kernel。
CentOS镜像的DockerFile
FROM scratch
ADD centos-7-docker.tar.xz /
LABEL org.label-schema.schema-version="1.0"
org.label-schema.name="CentOS Base Image"
org.label-schema.vendor="CentOS"
org.label-schema.license="GPLv2"
org.label-schema.build-date="20181006"
CMD ["/bin/bash"]
以上就是CentOS的DockerFile了,其中scratch就相当于java中的Object类,它就是所有镜像的父类,所有的镜像都是依据DockerFile来创建的,下一章会介绍一下DockerFile是什么,如何简单编写。