简介:Docker是一个开源的引擎,能够轻松的为任何应用建立一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试经过的容器能够批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其余的基础应用平台。
web应用的自动化打包和发布;nginx
自动化测试和持续集成、发布;web
在服务型环境中部署和调整数据库或其余的后台应用;docker
从头编译或者扩展示有的OpenShift或Cloud Foundry平台来搭建本身的PaaS环境。数据库
在Ubuntu中只须要运行一行命令便可实现Docker的安装:ubuntu
sudo apt-get install docker.io
完成后输入(显示docker的信息):windows
sudo docker info
显示以下(即成功):学习
Mac OS X : https://docs.docker.com/installation/mac/测试
Windows :https://docs.docker.com/installation/windows/spa
安装好以后,咱们能够开始一些简单的入门级别的操做:code
先理解两个概念:
镜像(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
等待上传完毕便可。。。。