资讯专栏INFORMATION COLUMN

Docker 入門

draveness / 551人阅读

摘要:它对于每一个容器来说都是唯一的,所以我们可以使用它。首先,我们要确保容器正在运行。命令可以查询进程的所有容器。创建成功后会返回这个镜像的信息。请先自行注册我们登陆吧输入对应的,,后,提示表示登陆成功上传自己的镜像等待上传完毕即可。。。。

什么是Docker?
简介:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 
Docker通常用于如下场景:

web应用的自动化打包和发布;

自动化测试和持续集成、发布;

在服务型环境中部署和调整数据库或其他的后台应用;

从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

Docker 的安装 ubuntu环境下的安装

在Ubuntu中只需要运行一行命令即可实现Docker的安装:

sudo apt-get install docker.io

完成后输入(显示docker的信息):

sudo docker info

显示如下(即成功):

Mac OS X, Windows环境下安装

Mac OS X : https://docs.docker.com/installation/mac/

Windows :https://docs.docker.com/installation/windows/

运行容器(入门操作)

安装好之后,我们可以开始一些简单的入门级别的操作:

先理解两个概念:

镜像(image):跟平常使用的虚拟机的镜像文件一个意思,相当于一个模板
容器(container):container则是images运行时的的状态(可以理解乘,container引用image开启一个docker的应用)

我们可以通过官方提供给我们的镜像来进行学习。比如我们想在Docker中运行一个Ubuntu系统,很简单,Docker中得pull命令是用来获取镜像的,执行下面的命令,就会从官方仓库里获取Ubuntu 14.04版本的系统:

docker pull ubuntu:16.04

查看docker本地的image

docker images

显示如下图:

我们把刚刚的镜像运行起来,运行起来的镜像就叫做容器了,容器是可读写的,这样我们就可以在容器里做很多有意思的事情了。run 命令就是将镜像运行起来的,运行:

docker run -it ubuntu:14.04

会发现终端交互的用户名改变了,说明进入了容器的内部了,如下图:

现在在当前状态所有的操作都是对应容器,不会影响本身的系统,我们可以尝试在里面安装软件(nginx):

sudo apt-get install -y nginx

查看nginx的版本信息:

nginx -v

显示如下图(表示安装成功):

注意:如果不成功提示

Unable to locate package nginx

可以尝试先更新下源:

sudo apt-get update

最好我们可尝试退出容器,回到本机环境:

exit

好我们已经学会了如何去获取image和创建对应的container了,那么我么现在来说说,小伙伴在操作的过程中可能会遇到的问题吧:

nginx -v

我们可以看到容器里面有我们刚安装的nginx的信息,可是当我们退出容器后:

exit

在重写运行:

docker run -it ubuntu:14.04

然后再去查看nginx的版本信息

nginx -v

你会发下nginx 并不存在,也许你会觉得很神奇。。。明明安装了nginx,现在却发现他不见了。。。哈哈!如果你觉得神奇,那么,就说明你还不理解上面的image和container 的概念!(我们再来梳理下吧)
退出容器,回到原来的系统,输入:

sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

结果如图:

这个的意思与我们在在终端输入:

/bin/sh -c "while true; do echo hello world; sleep 1; done"

的作用并没有差异,只是将对应的执行命令的对象转换到容器中执行;

结果如图:

这是一个忠实的 hello world 进程:一个脚本会一直输出 "hello world"

为什么我们看不到的一大堆的 "hello world" ? 而是docker返回的一个很长的字符串:

这个长的字符串叫做容器ID(container ID)。它对于每一个容器来说都是唯一的,所以我们可以使用它。

注意:容器 ID 是有点长并且非常的笨拙,稍后我们会看到一个短点的 ID,某些方面来说它是容器 ID 的简化版。

首先,我们要确保容器正在运行。我们可以使用 docker ps 命令来查看。docker ps 命令可以查询 docker 进程的所有容器。

这里我们看到了以进程模式运行的容器。docker ps 命令会返回一些有用的信息,这里包括一个短的容器

我们也可以停止他:

sudo docker stop containerID
将容器转化为镜像

查看所有的容器

docker ps -a 

结果如图:

启动刚刚容器,并进入容器

docker start containerID

docker attach containerID

回到本地系统打包:

使用 commit 命令用来将容器转化为镜像,运行下面的命令,我们可以讲刚刚的容器转换为镜像:

sudo docker commit -m "Added nginx from ubuntu16.04" -a "xiaozhen" containerID xiaozhen/ubuntu-nginx:v1

其中,-m 参数用来来指定提交的说明信息;-a可以指定用户信息的;containerID 代表的时容器的id;xiaozhen/ubuntu-nginx:v1指定目标镜像的用户名、仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。注意的是,你一定要将 xiaozhen 改为你自己的用户名。因为下文还会用到此用户名。

辛苦了这么久,终于有了自己的镜像了,赶紧装上去爽一爽吧!

sudo docker run -it xiaozhen/ubuntu-nginx:v1

赶紧看看nginx在不在!

nginx -v

结果如图:

存储镜像

我们刚刚已经创建了自己的第一个镜像,尽管它很简单,但这已经非常棒了,现在,我们希望它能够被更多的人使用到,此时,我们就需要将这个镜像上传到镜像仓库,Docker的官方Docker Hub应该是目前最大的Docker镜像中心,所以,我们就将我们的镜像上传到Docker Hub。(请先自行注册)

我们登陆Docker Hub吧:

sudo docker login

输入对应的Username,Password,Email 后,提示Login Success 表示登陆成功

上传自己的镜像

docker push mexiaozhen/ubuntu-nginx:v1

等待上传完毕即可
。。。。

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

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

相关文章

  • 【譯】Headless Chrome 入門指南

    摘要:確切位置因平台而異。如果以編程方式使用,這個頁面也是一個強大的調試工具,能看到所有原始的協議命令通過連線,於瀏覽器進行通信。警告協議可以做很多有趣的事,但作為入門選項他令人沮喪。目前,提供了比協議高級別的。 本文翻譯自:Getting Started with Headless Chrome原文更新時間:July 28,2017作者:Eric Bidelman(Engineer @ G...

    toddmark 评论0 收藏0
  • [譯 + 補充] Webpack 2 入門

    摘要:目錄許多開發者會把的目錄命名為但這並不強迫。所有的檔案都會使用從被編譯成。同時有個小小的重點那就是我們可已觀察編譯後的檔案大小。在專案目錄下執行可以觀察截至目前為止的結果。我們的目標是要把編譯封裝到我們的中。 在今時今日,webpack 已經成為前端開發非常重要的工具之一。本質上它是一個 Javascript 模組封裝工具,但透過 loaders 和 plugins 它也可以轉換封裝其...

    betacat 评论0 收藏0
  • 通配符證書有什麼好處?常用通配符SSL證書有哪些?

    摘要:便宜通配符證書通配符證書是一款全球最大的數字證書頒發機構之一,是旗下證書品牌。通配符證書原是全球著名,也是全球證書佔有率最高的證書頒發機構。SSL證書根據保護域名數量可以分為單域名證書、多域名證書和通配符證書。單域名和多域名SSL證書比較好理解,但很多人對通配符SSL證書的理解有誤。下面我們就聊聊通配符證書。 什麼是通配符SSL證書? 通配符SSL證書又稱為泛域名證書,它...

    honhon 评论0 收藏0
  • 前端基础

    摘要:谈起闭包,它可是两个核心技术之一异步基于打造前端持续集成开发环境本文将以一个标准的项目为例,完全抛弃传统的前端项目开发部署方式,基于容器技术打造一个精简的前端持续集成的开发环境。 这一次,彻底弄懂 JavaScript 执行机制 本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。 不论你是javascript新手还是老鸟,不论是面试求职,还是日...

    graf 评论0 收藏0
  • Docker实战之Quick Start

    摘要:如果使用操作系统自带包安装,目前安装的版本是比较旧的。之前版本如果是较低版本的系统,需要先更新内核。然后重复上面的步骤即可。 Quick Start Installation Ubuntu 通过系统自带包安装 Ubuntu 14.04 版本系统中已经自带了 Docker 包,可以直接安装。 $ sudo apt-get update $ sudo apt-get install -y ...

    alaege 评论0 收藏0

发表评论

0条评论

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