回到目录

docker是最近比较流行的容器工具,它可以帮助我们快速部署应用,尤其是在“微服务”环境下,成百个服务要去启动,停止,部署一次太麻烦,而如果把它部署到docker里,下一次应用就方便多了,如果需要几行代码就搞定了!

百度百科定义

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

镜像和容器

镜像:就是我们windows里的ISO文件,就是一个打包好的东西,也类似于GHOST这种工具包

容器:将镜像启动后,它会生产一个容器,我们可以在容器里添加新的组件,然后生产新的镜像!

应用场景

环境管理复杂
从各种OS到各种中间件到各种app, 一款产品能够成功作为开发者需要关心的东西太多,且难于管理,这个问题几乎在所有现代IT相关行业都需要面对。
云计算时代的到来
AWS的成功, 引导开发者将应用转移到 cloud 上, 解决了硬件管理的问题,然而中间件相关的问题依然存在 (所以openstack HEAT和 AWS cloudformation 都着力解决这个问题)。开发者思路变化提供了可能性。
虚拟化手段的变化
cloud 时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需使用的需求以及保证可用性和隔离性。然而无论是KVM还是Xen在 docker 看来,都在浪费资源,因为用户需要的是高效运行环境而非OS, GuestOS既浪费资源又难于管理, 更加轻量级的LXC更加灵活和快速
LXC的移动性
LXC在 linux 2.6 的 kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可迁移性,决定其构建出的环境难于迁移和标准化管理(相对于KVM之类image和snapshot的概念)。docker 就在这个问题上做出实质性的革新。这是docker最独特的地方。

在centos上的部署

一 安装并添加服务和自启动项

[root@localhost ~]# yum install docker

[root@localhost ~]# systemctl start docker.service

[root@localhost ~]# systemctl enable docker.service

二 docker几个常用的命令

docker ps

令查看容器

docker info

检查Docker的安装是否正确,如果没有找到此命令,则表示Docker没有正确安装

docker pull busybox

拉取一个预建的镜像

sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done")

以后台进程的方式运行hello docker
sample_job命令会隔一秒打印一次Docker,使用Docker logs可以查看输出。如果没有起名字,那这个job会被分配一个id,以后使用命令例如Docker logs查看日志会变得比较麻烦。

docker help

所有Docker命令

docker logs $sample_job

运行Docker logs命令来查看job的当前状态:

docker stop $sample_job

停止名为sample_job的容器

docker restart $sample_job

重新启动该容器

docker stop $sample_job docker rm $sample_job

如果要完全移除容器,需要将该容器停止,然后才能移除

docker commit $sample_job job1

将容器的状态保存为镜像

docker images

令查看所有镜像的列表

安装.netCore的镜像

从仓库中拉取一个镜像

#下载dotnet的镜像
sudo docker pull microsoft/dotnet

查看一下这个镜像

sudo docker images

这个过程可以是空的,因为上面的下载速度很慢,毕竟是大老美的服务器,呵呵!

通过镜像,运行一个容器

 docker run -it --name mycoreContainer 2cef2b382ef0

在这个容器中进行操作

root@2cef2b382ef0:~/hello# 

退出当前的容器

root@2cef2b382ef0:/# exit

查看刚才建立的容器

docker ps -a

从容器创建一个新的镜像

 docker commit -a "lind.zhang" -m "netcore a  image" 3b063cca6a8a netcore:v1 

参数说明

  • -a :提交的镜像作者;

  • -c :使用Dockerfile指令来创建镜像;

  • -m :提交时的说明文字;

  • -p :在commit时,将容器暂停。

删除所有未运行 Docker 容器

docker rm $(docker ps -a -q)

删除所有未打 tag 的镜像

docker rmi $(docker images -q | awk '/^<none>/ { print $3 }')

删除所有镜像

docker rmi $(docker images -q)

根据格式删除所有镜像

docker rm $(docker ps -qf status=exited)

下讲我们将学习如何去部署一个netcore网站在docker里!

回到目录

docker~linux下的部署和基本命令的更多相关文章

  1. linux下如何部署php项目?

    linux下部署php项目环境可以分为两种,一种使用Apache,php,mysql的压缩包安装,一种用yum命令进行安装. 使用三种软件的压缩包进行安装,需要手动配置三者之间的关系.apache和p ...

  2. linux下安装部署ansible

    linux下安装部署ansible 介绍 Ansible是一种批量部署工具,现在运维人员用的最多的三种开源集中化管理工具有:puppet,saltstack,ansible,各有各的优缺点,其中sal ...

  3. nginx~linux下的部署

    一些概念     Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄 ...

  4. Linux下从零开始部署和使用Jaeger

    最近在折腾Jaeger,Jaeger官网都是介绍如何通过Docker部署,二进制部署文档基本没有(已咨询过作者,作者说没文档!你参考Docker自己部署好了!!!),所以打算写一篇Linux部署. J ...

  5. Linux下如何部署FTP服务器

    FTP 是 File Transfer Protocol 的缩写,即文件传输协议,它通过网络在服务器和客户端之间传输文件,现在已经成为一种广泛使用的标准工具 vsftpd 是 very secure ...

  6. Linux下tomcat部署

    进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 如果你想直接干掉Tomcat,你可以使用kill命令,直接杀死Tomcat进程 kill -9 7010 然后继续查看 ...

  7. Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)

    1.先配置好Docker阿里云加速,可以使用阿里云容器服务 (可自己在阿里云申请,要不然安装东西直接很慢)注意:https://XXXX.mirror.aliyuncs.com为阿里云加速服务分配地址 ...

  8. Docker环境下eShopOnContainers部署

    从头开始学eShopOnContainers--Visual Studio 2017环境配置 https://www.cnblogs.com/dusthunter/p/9973815.html 一.安 ...

  9. java+tomcat 在 linux下的部署

    一.配置JAVA运行环境 1.安装jdk. 从sun公司网站www.sun.com下载linux版本的jdk, 建议使用jdk1.6版本.地址http://java.sun.com/javase/do ...

随机推荐

  1. android Activity Application Context 的区别

    用了这么久的Context,对于Context究竟是个什么玩意一直不是很明白.看了网上十几篇文章的介绍 加上自己的理解总结一下.(自己想法,不对勿喷,不想照搬网上一些文字说法来糊弄自己,自己理解的就这 ...

  2. Python中的模块介绍和使用

    在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...

  3. map,zip,reduce函数

    lt=range(5,10) lw=range(8,13) def mul(a,b): return a*b def mul_list(param1,param2): return_list=[] f ...

  4. 基于Jmeter的轻量级接口压力测试(一)

    一.操作步骤: 1.在测试计划下新增一个线程组,并在线程组下新增一个http请求: 2.读取配置文件中的参数:在添加的http请求下添加配置元件-CSV DATA SET CONFIG 3.配置待测试 ...

  5. 零基础开始学python

    变量规则:在python中变量名不能有特殊字符和数字开头以及python里的一些关键字,可以使用下划线开头,在python里,变量是支持使用中文的,但尽量不要使用中文,为什么?因为这样会让你看起来太l ...

  6. java中的注解总结

    1. 什么是注解 注解是java5引入的特性,在代码中插入一种注释化的信息,用于对代码进行说明,可以对包.类.接口.字段.方法参数.局部变量等进行注解.注解也叫元数据(meta data).这些注解信 ...

  7. java 动态代理的实现

    http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html

  8. jquery判断按钮是否被选中了

    <script type="text/javascript"> function genjin_view2(elm){ if($(elm).attr("che ...

  9. 在线SVN仓库实现:金山快盘+TortoiseSVN(Win)+SCPlugin(Mac)

    前段时间一直在研究SVN在线托管,也尝试了网上推荐的免费托管网站. 但毕竟是是免费的,还是要受到比如空间大小.私有性等这样那样的限制,感觉有些麻烦. 而且,比较心疼自己在本地开发的时候积累的更新日志, ...

  10. Vue.js 基础指令实例讲解(各种数据绑定、表单渲染大总结)——新手入门、高手进阶

    Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架--只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...