继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Docker入门(一)用hello world入门docker

慕姐8265434
关注TA
已关注
手记 1309
粉丝 222
获赞 1065

初识Docker

Docker是什么?

  Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从Apache2.0协议开源。
  Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

webp

Docker与传统虚拟化的不同之处

  Docker与传统虚拟化的不同之处在于:传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

Docker的优势

  Docker的五大优势为:

  • 持续集成

  • 版本控制

  • 可移植性

  • 隔离性

  • 安全性

关于其说明,具体可参考网址:http://dockone.io/article/389

Docker的安装

  本文以Mac系统为例,讲解Docker的安装,其它系统的安装方式可参考:安装 Docker

使用 Homebrew 安装

  HomebrewCask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:

brew cask install docker
手动下载安装

  如果需要手动下载,可以通过这个链接下载:https://download.docker.com/mac/stable/Docker.dmg 。如同 MacOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将鲸鱼图标拖拽到 Application 文件夹即可。

启动Docker

  从应用中找到 Docker 图标并点击,即可启动Docker,启动后在最上侧的菜单栏状态如下:

webp

启动docker

  启动终端后,通过命令可以检查安装后的 Docker 版本:

$ docker --version
Docker version 18.09.1, build 4c52b90

  接着我们运行docker中的hello world来验证docker是否安装且启动成功:

webp

docker run hello-world

Dockerhub账号注册

  为了方便展示以及后续的docker使用,我们最好在DockerHub上注册一个自己的账号。 DockerHub,类似于代码管理的Github,可以简单高效地管理我们的docker项目。
  DockerHub的注册地址为:https://hub.docker.com/signup,界面如下:

webp

DockerHub注册界面

  注册完DockerHub后,我们登录个人账号。点击Create Repository +按钮新建Docker仓库,名字为dockertest。如下:

webp

create repository

再点击Create按钮即可。创建后的dockertest项目如下:

webp

dockertest仓库

  至此,我们已经在DockerHub上创建了一个自己的账号,并且新建的一个dockertest仓库,尽管这个仓库里面没有任何东西。
  下一步,我们往dockertest这个仓库里面装点什么。

Docker使用实例:hello world

  首先,我们需要用docker在本地打包一个docker镜像,然后对其打标签(tag),然后将其推送(push)至个人的dockerhub账号中的dockertest仓库,最后将该镜像拉下来,并运行。

镜像打包
  1. 新建mydocker文件夹

$ tree mydocker
mydocker
├── src
│   └── test_docker.py
└── test_docker.build
  1. test_docker.py代码:

print "hello world from python!"print "this is from docker!"
  1. test_docker.build代码(利用Dockerfile打包镜像):

FROM centos:7.2.1511#环境变量硬编码及时区ENV ENVIRONMENT DOCKER_PROD
RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 拷贝并so加密代码COPY src /root/src# 工作目录WORKDIR /root/src/

这里,我们不再过多讲述上述Dockerfile中的命令,有兴趣的同学可移步:http://blog.51cto.com/wutengfei/2156797 , 笔者也会在后续的文章中给出Dockerfile命令的详细讲述。

  1. 命令行打包镜像:

cd ./mydocker
docker build -f test_docker.build -t hub.docker.com/dockertest:test.1111 .

webp

docker打镜像

列出镜像

  在打包完镜像后,我们可以列出docker的镜像,查看镜像的ID,方便后续操作。命令为docker images,如下:

webp

docker images

由此可知,我们新打包的docker镜像的ID为be236e996983。

推送镜像
  1. 打标签(tag)

docker tag be236e996983 jclian91/dockertest:hello_world_test_19.01.31.1100

镜像ID可通过docker images查看。

  1. 登录dockerhub账号

docker login

再输入自己的账号、密码即可。

  1. 推送(push)镜像

docker push jclian91/dockertest:hello_world_test_19.01.31.1100

所有命令的界面如下:

webp

docker推送镜像

此时,我们去dockerhub的dockertest仓库中去查看,发现已经上传一个镜像了,如下:

webp

docktest仓库多了一个镜像

运行镜像

  1. 为了运行新上传的镜像,我们先删除本地打包的镜像:

$ docker rmi -f be236e996983Untagged: jclian91/dockertest:hello_world_test_19.01.31.1100Untagged: jclian91/dockertest@sha256:c2ac02cb725a8256c2d752461133004cc05a6060390220b15a0aaefefc7c95e7Untagged: hub.docker.com/dockertest:test.1111Deleted: sha256:be236e996983339318796f588fd5acda1da5f942289a2559f948a4811d68428dDeleted: sha256:5c46baa463a1e86d0924c493bb0e12888fc6aaefdcaf128d8193406eb0ef4ed1Deleted: sha256:f76e87a3e84bf1a03e81dfdc53a569a7adce6cfc80bb56d7d2040e118e2848f7
  1. 拉取(pull)新上传的镜像

docker pull jclian91/dockertest:hello_world_test_19.01.31.1100
  1. 运行(run)该镜像

docker run -it be236e996983 bash

参数说明:其中 -i:交互式操作, -t:终端,如存在-d参数,-d:后台运行。
这样我们就能进入到这台用docker创建好的虚拟机内部了,我们在该Linux虚拟机内部运行命令,如下:

[root@ca9070ce82e1 src]# lstest_docker.py
[root@ca9070ce82e1 src]# python test_docker.py hello world from python!
this is from docker!

总结

   hello world是所有编程语言的入门例子,在本文中,我们用docker自己创建了一个hello world的例子,用来展示docker的基本用法,希望能给初入门的同学一个明显直观的例子。
   后续的文章将会更多地介绍docker方面的知识,欢迎大家关注,如有任何疑问,请在留言区留言。



作者:但盼风雨来_jc
链接:https://www.jianshu.com/p/7ad4008a218b


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP