概述:

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

docker能为我们带来什么?

今天开发应用程序所需要的不仅仅是编写代码。在每个生命周期阶段,工具之间的多种语言,框架,体系结构以及不连续的接口都会带来极大的复杂性。Docker简化并加速了您的工作流程,同时使开发人员可以自由选择每个项目的工具,应用程序堆栈和部署环境进行创新。

不论是Windows还是Linux的Docker容器均受Docker工具和API支持,可帮助您构建更好的软件:

  • 更快地上板,并避免浪费时间尝试建立开发环境,启动新实例并制作生产代码副本以在本地运行。
  • 启用多语言开发并使用任何语言,堆栈或工具,而无需担心应用程序冲突。
  • 通过将应用程序,配置和依赖项打包到一个隔离的容器中,消除了环境不一致和“在我的机器上工作”的问题。
  • 减轻对应用程序安全性的担忧

@

壹:docker安装

docker的安装其实非常简单,只需要下载他的安装包就能使用,但对于windows家庭版就不那么友好了,由于不支持Hyper-V,windows家庭版有两个选择:1、使用 docker toolbox来安装,非常简单,直接点下一步直到完成即可。本着不折腾不程序员的原则,显然我是会选择第二种。这才有了这篇教程。

如果你是windows专业版,企业版或教育版,请跳过第一步以及第三步。

一:使用docker toolbox安装

传送门

过程很简单,选择相应版本安装即可,反正我也没试过,略略略。

二:非docker toolbox安装

1、开启Hyper-V

新建.cmd文件,是用管理员身份运行,运行后重启电脑。

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

2、打开Hyper-V功能

打开你的控制面板,找到如下,勾选上Hyper-V功能功能模块。

3、伪装成专业版

打开注册表,找到HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion,点击CurrentVersion,在右侧找到EditionID,右键点击EditionID选择“修改“,在弹出的对话框中将第二项”数值数据“的内容改为Professional。

这里请注意,请不要改你注册表里的其他东西,很有可能会造成系统崩溃,改了这个没关系,只是骗骗系统,并且,它的值会在你下一次重启时修改回来,也不会影响你使用docker。

4、安装docker

安装地址:传送门

点击get docker,即可下载,下载完成后直接安装即可。

贰:安装kitematic

Kitematic是一个 Docker GUI 工具,它可以更快速、更简单的运行Docker容器,虽然说我们安装的docker有简单的图形可视化,但Kitematic使用起来使一切变得更加的方便。

当然,你也可以选择不安装这个软件,使用起来也是没问题的。

1、下载软件

传送门

2、安装

他的安装很简单,你只需要把他解压到docker安装目录的同级目录即可。

叁:配置docker

docker其实不需要配置什么,唯一需要配置的就是他的镜像源和他的环境变量,因为它默认使用国外的镜像源,下载起来非常的慢,所以我们只需要配置国内的镜像源就可以愉快的玩耍了。

1、环境变量:在他安装的时候就自动配置好了,如果没有配置,就把他的C:\Program Files\Docker\Docker\resources\binC:\ProgramData\DockerDesktop\version-bin配置到path下即可,路径根据自己的来。

2、配置镜像源:打开docker,看到如下,输入registry-mirrors的参数,你可以选择其一:

肆:docker初体验

一:创建容器方法一

以安装rabbitmq为例,如果你要安装任何的镜像,可以到docker的官方仓库搜索:传送门

  • 1、搜索镜像

    使用仓库,搜索到的结果,Description一般会描述这个镜像,并且告诉你怎么启动它,tags就是这个软件所有版本的镜像,你只要找到你需要的版本就行了,右边的命令就是你下载镜像的命令,你只需要在命令行中输入即可。



除此之外你可以使用命令行搜索,命令:docker search rabbitmq,其中official就是标志是否为官方版本,推荐使用官方的版本。

  • 2、下载:

    我需要的是rabbitmq:3.7-management-alpine,所以我的命令是:
docker pull rabbitmq:3.7-management-alpine
  • 3、启动

    启动之前,使用docker images查看abbitmq的images id
docker run -d -p 5672:5672 -p 15672:15672  --name rabbitmq {上面查看的images id}

-p为端口映射,容器端口映射到主机端口
-name为你的容器名称
-d为后台运行
  • 4、查看启动
docker ps
  • 5、相关命令:
1、查看所有镜像
docker images
2、查看正在运行的容器
docker ps
3、查看所有容器
docker ps -a
4、运行已存在的容器
docker start {id}
5、停止已存在的容器
docker stop {id}
6、删除容器 (必须先停止容器)
docker rm {容器id}
7、删除镜像
docker rmi {镜像id}
8、进入容器,推荐使用
docker exec -it {容器id} /bin/bash
9、进入容器
docker attach {容器id}
10、查看容器ip:
docker inspect --format='{{.Name}} - {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

注:进入容器的后一种相对于前一种有着明显的缺陷:当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

二:创建容器方法二

第二种方法就是使用kitematic来安装,使用kitematic安装变得非常简单,kitematic官方文档:传送门

打开软件,搜索相关镜像点击create即可。



除了安装容器之外,我们可以使用他来管理我们的容器例如停止、重启、进入容器等操作以及容器相关的一些设置等,并且,你可以在这里看到你的容器的日志。

作者有话

对我而言,作为学生,docker给我带来的最大的感受就是方便、快捷,节省了我电脑资源的开销以及跨平台可移植性,这无疑就是与dcoker采用的虚拟技术有关,以前安装一个应用需要去找安装包,安装、配置环境等等一系列操作,并且这个软件不管你是否用不用,都会占用你的一部分内存,自从我用了docker之后,所有的操作变得非常简单,简单到我只用cmd的几行命令就能轻松的使用。

至于他的平台可移植性,你在windows上的使用过的所有镜像、容器以及数据,他都能移植到linux等其他平台上,在重装系统后,相信大部分人都要安装自己所需要的软件、库等,而我只需要将docker的镜像复制过来,那么我又能拥有之前的数据了,并且,docker还提供了免费的仓库,供你去使用,你可以把自己的镜像、容器上传到你自己的仓库,等你使用的时候再去下载就可以使用了。

并且,在我使用的几个开发软件上都提供了docker的接口,你只需要简单的配置,就可以是你的开发工具连接到你的docker容器。

总的来说,docker绝对是值得学习的。

【开发工具 docker】值得学习的应用容器引擎docker安装的更多相关文章

  1. Android开发人员必须掌握的10 个开发工具+应该深入学习的10个开源应用项目

    一.Android开发人员必须掌握的10 个开发工具 Android SDK 本身包含很多帮助开发人员设计.开发.测试和发布 Android 应用的工具,在本文中,我们将讨论 10 个最常用的工具. ...

  2. Docker的学习(一)Windows下安装docker环境以及基础的配置

    Docker是什么我这里就不多做介绍了,相信大家都清楚,网上有很多介绍的文章所以作为菜鸟的我就不用我的眼光以及理解来为大家介绍了,还是那句话,这篇文章主要是用作记录学习过程,希望不会误导新人,也希望各 ...

  3. 你不得不了解的应用容器引擎---Docker

    最近突然想搭一个redis集群玩玩,因为公司的电脑同时开2个虚拟机就卡的不行,所以我就想到用Docker开启多个redis-server来搭建.然后在网上找着找着发现,使用Docker,哪需要搭建啊, ...

  4. 【ARM-Linux开发】【CUDA开发】【深度学习与神经网络】Jetson Tx2安装相关之三

    JetPack(Jetson SDK)是一个按需的一体化软件包,捆绑了NVIDIA®Jetson嵌入式平台的开发人员软件.JetPack 3.0包括对Jetson TX2 , Jetson TX1和J ...

  5. Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布

    微服务系统架构实践 开发语言Java 8 框架使用Spring boot 服务治理框架Dubbo 容器部署Docker 持续集成Gitlab CI 持续部署Piplin 注册中心Zookeeper 服 ...

  6. Docker&K8S学习笔记(一)—— Docker安装

    最近一年在工作上经常使用Docker与K8S,除了利用其打镜像,部署服务外,还基于Docker与K8S开发了一套CICD流水线平台,为了加深相关知识点的理解,所以从今天开始会定期更新学习笔记,本套学习 ...

  7. python 标准库基础学习之开发工具部分1学习

    #2个标准库模块放一起学习,这样减少占用地方和空间#标准库之compileall字节编译源文件import compileall,re,sys#作用是查找到python文件,并把它们编译成字节码表示, ...

  8. 【开发工具IDE】eclipse的web项目的tomcat安装部署问题

    一.发现问题 在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并 ...

  9. 07-java学习-方法重载-idea集成开发工具学习-项目-模块-包

    方法重载的概念? 方法重载的好处? 集成开发工具idea的学习 下载 安装 设置 建项目 导入项目 建模块 导入模块 建包 复制粘贴包 建类 复制粘贴类 运行 调试

随机推荐

  1. JS数组与字符串相互转化

    <script type="text/javascript"> var obj="new1abcdefg".replace(/(.)(?=[^$]) ...

  2. python __import__动态模块

    1.只限解释器内部自己使用. 条件:test.lianx_2.py中的代码: class a(object): def __init__(self,name): self.name=name def ...

  3. Docker 运行容器 CentOS7 使用systemctl 启动报错 Failed to get D-Bus connection: Operation not permitted

    原系统:Centos 7 Docker 版本:1.12.6 操作:安装并运行 Tomcat 问题:在创建好容器之后,并且进入系统运行启动tomcat [root@cd11558d3a22 /]# sy ...

  4. 简单的员工管理系统(Mysql+jdbc+Servlet+JSP)

    员工管理系统 因为学业要求,需要完成一个过关检测,但是因为检测之前没有做好准备,且想到之前用mysql+jdbc+Struts2+bootstrap做成了一个ATM系统(主要有对数据的增删改查操作), ...

  5. Python——详解collections工具库

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天为大家介绍Python当中一个很好用也是很基础的工具库,叫做collections. collection在英文当中有容器的意思,所以顾 ...

  6. SQL基本操作总结

    1.SQL简介 结构化查询语言 (层次模型,网状模型,关系模型) 关系模型是目前的主流 (Oralce,mysql mssql ) SQL标准:ANSI (1992 1997 2002 ISO) 方言 ...

  7. java网络编程——socket实现简单的CS会话

    还记得当年学计网课时用python实现一个简单的CS会话功能,这也是学习socket网络编程的第一步,现改用java重新实现,以此记录. 客户端 import java.io.*; import ja ...

  8. CSS中"position:relative"属性与文档流的关系

    前言 近期遇到一个问题--"position:relative"到底会不会导致元素脱离文档流?主流观点是不会,但都给不出一个有说服力的论据.最后我自己佐证了一番,总算有了个结果:& ...

  9. a标签嵌套href默认行为与子元素click事件存在影响

    2018-08-07 Question about work 开发过程中遇到问题,简单写个demo 运行环境为Chrome 68 描述一下这个问题,当<a>标签内部存在嵌套时, 父元素&l ...

  10. 自己查与写的批量比较bash

    前言:互测的时候一个一个输入感觉太麻烦,于是尝试写自己的对拍,又想到os刚学了bash命令行处理,于是想把两者结合一下减轻自己的工作量 分两步: 将所有人的工程导出成jar文件 放到linux下用ba ...