打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
第一次使用docker
userphoto

2023.07.29 泰国

关注

友情提醒:这篇文章,完全是以小白的身份来写Docker的使用,用来和Docker的初用者、以及还未使用过Docker的朋友探讨Docker的技术和知识,不感兴趣的Docker熟手、高手可以飘过。

这两年,一直听大家讲Docker,可我不仅没有碰过Docker,甚至头脑中连Docker的基本概念都没有,终于,在这个凉爽的周末,无所事事的我决定尝试一下Docker。

1、Docker的起源

Docker的英文含义是“码头工人”,但如果看Docker的标志,会发现这个“码头工人”是一条体型庞大的鲸鱼,这条鲸鱼搬运着巨大的集装箱,每个集装箱中又运行着各种各样的软件,包括Nginx、Hadoop等:

Docker的起源和一家名为dotCloud的公司相关。

从名字来看,dotCloud的业务应该和互联网、云相关,事实也确实如此。dotCloud于2010年在美国旧金山,由几个程序员成立,公司的发展方向是PaaS,开发LXC相关的容器技术。

dotCloud公司虽然不大,但技术强悍,尤其是公司的Docker项目做得非常好。

不过和公司的技术能力相比,公司的运营能力却非常一般,公司成立以来,一直步履艰难。2013年,公司实在撑不下去,快倒闭了,Docker的开发者,也是公司的创始人之一的Solomon Hykes,为了不让自己的辛勤成果烟消云散,决定将Docker开源。

Solomon Hykes的无奈之举,不仅挽救了Docker,也挽救了dotCloud公司。

Docker取得了极大的成功,成为了十年来最火爆的开源技术之一,得到了广大程序员和大型IT公司的热烈支持,dotCloud公司甚至直接将自己的名字改为Docker公司。

2、Docker的作用

Docker是一个应用容器引擎,使用Docker,我们可以把我们要运行的应用、以及应用依赖的软件包,打包到一个容器中运行。

Docker的容器,对于应用来说,就像一个虚拟的操作系统,应用完全意识不到Docker容器的存在。

Docker的底层技术是LXC,LXC是Linux Container的缩写。

大家看Docker和LXC技术,肯定觉得有点眼熟,有点像Virtual Box、VMWare和OpenStack。

对于应用程序来说,使用Docker、Virtual Box、VMWare还是OpenStack,甚至使用实际的操作系统确实没感觉到什么差异。

Docker、Virtual Box、VMWare、OpenStack对于应用程序来说,都可以看作是运行的平台,这几个平台之间的主要差异是轻重量级不同。

OpenStack可以看作是一个重量级的虚拟化技术,它是位于一堆硬件资源和一堆操作系统之间的虚拟化系统,为一堆操作系统分配资源。

Virtual Box、VMWare是我们大家在PC机上使用过的虚拟机软件,可以认为是中等量级的虚拟化技术,它位于底层操作系统和一堆操作系统之间的虚拟化系统,常常用于在Windows上再安装一个完整的Windows或Linux操作系统。

Docker则是轻量级的虚拟化技术,我们建立的Docker容器并未真正安装完整的操作系统,可以在几十秒内完成(第一次比较慢),而我们如果使用Virtual Box则会完整安装一套操作系统,需要数十分钟甚至数小时。

3、Docker的理念

Docker通过两句口号,向使用者传递了Docker的理念:

(1)Build, Ship and Run。直译就是“构建、运送、运行”,这句口号说出了Docker的使用方式,我们可以将构建的系统,送到另外一个地方运行;

(2)Run any App,anywhere。直译就是“在任何地方运行任何应用程序”,这句口号我们当年见过的Java语言广告很像,Java的广告是:“Build once,run anywhere”。

4、Docker的核心概念

Docker的核心概念有三个:镜像,容器,仓库。

镜像(Image):一套系统,包含容器运行需要的程序、库、资源和配置等。镜像是个静态概念,是容器的模板,有点类似于文件系统,不包含动态数据,构建后不会改变。

容器(Container):容器是镜像的运行实例。

仓库(Repository):集中存储和分发镜像的服务器。

5、Docker的安装

我的操作系统是Ubuntu Server18.04,安装Docker很简单,root用户下执行这三条命令即可:

apt updateapt upgradeapt install docker.io

Docker安装完成后,docker就成为Ubuntu的一个服务,我们可以使用下面的命令进行服务器的启动、停止、重启、查看状态:

启动docker:service docker start停止docker:service docker stop重启docker:service docker restart查看docker状态:service docker status

在命令行下,启动、停止、重启都没有任何回应,查看状态命令可以看到docker的状态:

我们也可以使用docker version命令,查询Docker的版本信息:

6、docker的简单使用

现在,我尝试使用Docker,下面是详细步骤。

第1步:编写一个C程序welcome.c:

#include <unistd.h>#include <stdio.h>int main(){while (1){printf('Welcome to the world of Docker!\n');sleep(5);}return 0;}

第2步:使用gcc对程序进行编译,得到可执行的welcome文件:

第3步:编辑/etc/docker/daemon.json文件,加上下面的信息:

{'registry-mirrors': ['https://registry.docker-cn.com']}

这里是修改镜像仓库的地址,改为国内的镜像仓库,提升下载速度。

第4步:执行下面的命令,重启docker,是的上面的配置信息生效:

#service docker restart

第5步:在当前路径下建立Dockerfile文件,内容如下:

FROM ubuntu:18.04COPY ./welcome /WORKDIR /CMD ./welcome

解释:基础镜像为Ubuntu18.04版本,将welcome程序拷贝到镜像的/app目录,镜像的工作目录是/app,在镜像中执行./welcome命令。

第6步:在当前路径下执行docker image build -t welcome .命令,建立镜像:

第一次执行超级慢,以后就会快很多:

这是执行结束时的截图:

第7步:执行docker image ls,可以看到,已经成功制作了welcome镜像:

第8步:执行docker container run welcome命令,启动welcome容器。

执行后,由于welcome是死循环程序,不会退出,所以不会停止:

换一个Linux控制台登录,执行docker container ls命令,可以看到welcome容器正在运行中:

此时,我们会发现welcome容器的ID是42e7472e910b,执行docker container stop 42e7472e910b命令,可以停止容器的执行:

第9步:如果我们希望welcome容器执行时,能够在控制台显示标准输出,在执行命令时,带上-it参数即可:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
docker,你真的搞明白了吗?
Docker 的前世今生
CentOS 7 上安装 Docker 详解
docker学习前述
『中级篇』什么是Container(15) – IT人故事会
2016年容器技术思考:Docker, Kubernetes, Mesos将走向何方?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服