一、初步了解
1、docker run运行容器
我们运行第一个 docker 容器 hello-world,过程如下图:
1.Docker 客户端执行 docker run 命令。
2.Docker daemon 发现本地没有 hello-world 镜像。
3.daemon 从 Docker Hub 下载镜像。
4.下载完成,镜像 hello-world 被保存到本地。
5.Docker daemon 启动容器。
2、docker images查看镜像
docker images
可以查看到 hello-world 已经下载到本地。
root@ubuntu:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest f2a91732366c 5 days ago 1.85kB
3、docker ps查看容器
docker ps -a
显示所有状态的容器。
root@ubuntu:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10bc3a9e3bfc hello-world "/hello" 14 minutes ago Exited (0) 14 minutes ago youthful_hodgkin
4、查看其Dockerfile文件
Dockerfile地址为:https://github.com/docker-library/hello-world/blob/master/amd64/hello-world/Dockerfile
只有短短三条指令。
FROM scratch
此镜像是从白手起家,从 0 开始构建。
COPY hello /
将文件“hello”复制到镜像的根目录。
CMD ["/hello"]
容器启动时,执行 /hello
镜像 hello-world 中就只有一个可执行文件 “hello”,其功能就是打印出 “Hello from Docker ......” 等信息。
/hello 就是文件系统的全部内容,连最基本的 /bin,/usr, /lib, /dev 都没有。
hello-world 虽然是一个完整的镜像,但它并没有什么实际用途。通常来说,我们希望镜像能提供一个基本的操作系统环境,用户可以根据需要安装和配置软件。这样的镜像我们称作 base 镜像。
二、Docker 知识问答
小结
Docker 借鉴了集装箱的概念。标准集装箱将货物运往世界各地,Docker 将这个模型运用到自己的设计哲学中,唯一不同的是:集装箱运输货物,而 Docker 运输软件。
每个容器都有一个软件镜像,相当于集装箱中的货物。容器可以被创建、启动、关闭和销毁。和集装箱一样,Docker 在执行这些操作时,并不关心容器里到底装的什么,它不管里面是 Web Server,还是 Database。
用户不需要关心容器最终会在哪里运行,因为哪里都可以运行。
开发人员可以在笔记本上构建镜像并上传到 Registry,然后 QA 人员将镜像下载到物理或虚拟机做测试,最终容器会部署到生产环境。
使用 Docker 以及容器技术,我们可以快速构建一个应用服务器、一个消息中间件、一个数据库、一个持续集成环境。因为 Docker Hub 上有我们能想到的几乎所有的镜像。
不知大家是否意识到,潘多拉盒子已经被打开。容器不但降低了我们学习新技术的门槛,更提高了效率。
如果你是一个运维人员,想研究负载均衡软件 HAProxy,只需要执行docker run haproxy,无需繁琐的手工安装和配置既可以直接进入实战。
如果你是一个开放人员,想学习怎么用 django 开发 Python Web 应用,执行 docker run django,在容器里随便折腾吧,不用担心会搞乱 Host 的环境。
不夸张的说:容器大大提升了 IT 人员的幸福指数。