资讯专栏INFORMATION COLUMN

新手学Docker(1)Hello World

caige / 3386人阅读

摘要:经过我们的处理就像在仓库里修改了文件一样,将修改后的打快照固化为,这便是生态的流动源泉。我们启动过的所有的将会在这里显示。输入,这一步我们不仅仅启动了一个,还传输了一个命令进去执行了。我们试着再次启动一个容器。

Docker从哪儿下载?

由于我们访问Docker官网一般情况下会非常慢,所以我们不得不把目光投向国内的镜像站,还好,DaoCloud为我们扫清了一系列障碍,点击前往。

你只需要以下步骤:

注册一个DaoCloud账号

进入下载页面,根据自己的系统下载合适的镜像包

安装完成后配置Docker加速器

打开命令行,执行docker version,观察Docker是否安装成功

入门锦囊

名词解释

Image

Image是一堆文件的集合体,从用户角度来看,它是一个镜像包,它的特征是只读的,它是别人(或者我们自己)构建好的一个环境,在Docker世界里,我们会经常寻找第三方包,来支持我们的工作,如nginx,centos,我们不修改它,我们基于它实例出的container进行工作。

container

Image是只读的,我们是不可能也没必要去修改Image的,我们要做的就是实例化Image,即称为container,我们所做的修改都是基于container的,如图所示,container其实就是Image的一份拷贝,但是多了一部分可读写的区域,我们就是对这部分进行加工处理的,container其实也是一系列文件,真正支持我们交互的是Running container,它多出了一个进程,此进程提供我们与container读写区域沟通的途径,我们才得以有机会运行Docker

container经过我们的处理就像在git仓库里修改了文件一样,将修改后的container打快照固化为Image,这便是Docker生态的流动源泉。起初,我们可能只是一个壳子,人们陆陆续续为其增添功能,并且固化,经过一系列的串行作业后,这个壳子镜像凝结了前人的智慧,傲娇地展示在我们面前。

命令解释

docker run [Image Name]

检查本地是否有Image Name

如果没有的话,则从远端仓库下载

加载Image并且实例化container(实际上执行了 docker create && docker start

docker ps

默认显示当前正在运行container

加上-a可以显示创建过的所有的container

小提示:按住Ctrl + C 可以中断当前前台进程(占用着你的Shell,让你无法继续进行操作的那个进程)

Hello World 1

输入docker run hello-world,命令行会打印以下信息

$ docker run hello-world

Unable to find image "hello-world:latest" locally
latest: Pulling from library/hello-world
535020c3e8ad: Pull complete
af340544ed62: Pull complete
Digest: sha256:a68868bfe696c00866942e8f5ca39e3e31b79c1e50feaee4ce5e28df2f051d5c
Status: Downloaded newer image for hello-world:latest

Hello from Docker.

执行docker ps -a,将会显示一个列表,显示错乱往往是因为你的命令行工具太窄了,你可以试着全屏显示。我们启动过的所有的container将会在这里显示。

为什么不能直接执行docker ps?hello-world这个Image在创建好container以后,打印信息,然后自动stop这个container,所以它已经不在正在运行的container列表里了。

Hello World 2

输入docker run centos /bin/echo "hello world",这一步我们不仅仅启动了一个container,还传输了一个命令进去执行了。

    docker run centos /bin/echo "Hello world"

    Hello world

输入docker run -it centos可以启动一个交互性的centos,如同你正在远程ssh连接服务器。

神器容器在哪里?

目前为止,我们大约执行了3次docker run命令,不过目前看来,我们还是回到了自己的shell进程上,那么刚才执行的那些容器在哪里呢?我们试着再次输入docker ps -a,仔细观察打印出的数据,我们曾经启动过的容器都在这儿,虽然它们都不处于运行状态,观察最右边的NAMES字段,Docker会为每一个容器起一个名字,小猫小狗随机取,如果我们想自己起名的话,请在执行run命令时加上--name [you_define_name]参数试试看。

我们当然也可以再次唤醒我们的容器们,执行docker start [container_name]即可。

我们试着再次启动一个容器。

# 新建一个名为 小明 的容器
docker run -it --name xiaoming centos
# Ctrl + c 退出交互进程
docker stop xiaoming
# 查看最近创建的一个容器 -l -> latest 我们将会看到小明被打印了
docker ps -l
# 我们再次重启小明,但是发现回不到命令行交互模式了
docker start xiaoming

有时候,我们可能会有想进入容器内部,就像一直很熟悉的ssh连接一样,但是在Docker里,要尽量规避这种想法,我们可以通过docker exec去实现这种需求,详情见扩展阅读。

扩展阅读

10张图带你深入了解Docker容器和镜像

了解原理后,图解Docker的运行命令,非常值得一看!!!

前端开发者的Docker之旅

作为一名正经前端,当然也要对Docker尝尝鲜,在DaoCloud官网上发现了一篇非常不错的文章,大家可以据此了解Docker

Docker入门教程:15个Docker进阶命令

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26975.html

相关文章

  • 新手Docker(2)熟悉Run命令

    摘要:准备应用我们在本机新建一个项目文件夹,在里面创建我们的静态资源文件,随后往随便写点内容,执行下命令获取一下当前文件夹所在路径。现在访问便可以得到同端口一样的效果了,试试看看目前运行中的信息吧。 本篇概览 在本小节里,我们将从Image仓库里拉取并运行Nginx,尝试下将本地文件和container文件相映射,Nginx相比hello-world多了些启动参数,我们将逐个攻破。 准备应用...

    Enlightenment 评论0 收藏0
  • docker 新手向 - 防止容器自动退出的解决方案

    摘要:其实我们可以更优雅的使用容器的和参数来将系统必有命令作为前置命令开启常驻运行,如此容器便不会自动退出了。 本文主要简单介绍 docker 容器与前置进程的关系,以及如何编写 Dockerfile/docker-compose.yml 优雅的让容器可以常驻运行。 docker 容器的生命周期是同容器中的前置进程相关在一起的,这也是我们平时可能会遇到一些容器只是运行几秒便自动退出的原因:因...

    Miyang 评论0 收藏0
  • Docker习之Container容器(4)

    摘要:容器是又一核心概念。启动已终止容器可以利用命令,直接将一个已经终止的容器启动运行。此外,当容器中指定的应用终结时,容器也自动终止。只用参数时,由于没有分配伪终端,界面没有我们熟悉的命令提示符,但命令执行结果仍然可以返回。 容器是 Docker 又一核心概念。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境...

    Benedict Evans 评论0 收藏0
  • 使用Docker创建Ionic2 PWA开发环境 1

    摘要:它使用作为其开发语言。关于为了避免环境搭建污染我的,我选择将我的开发环境限制在一个容器中,同时避免了自制软件和不可逆的本地安装程序。我们将使用来构建一个新的镜像创建一个新的。下一篇文章将详细介绍如何用搭建真正用于生产环境的项目。 我想创建一个简单的渐进式Web应用程序(PWA),在移动设备上运行,接收用户数据并将其保存到后台。 我选择了Ionic 2(忽略了它创建本地应用程序的能力),...

    cod7ce 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<