你不得不了解的应用容器引擎---Docker
最近突然想搭一个redis集群玩玩,因为公司的电脑同时开2个虚拟机就卡的不行,所以我就想到用Docker开启多个redis-server来搭建。然后在网上找着找着发现,使用Docker,哪需要搭建啊,直接Docker pull一个镜像就OK了。加上之前使用Docker,五分钟搭建一个类似github的Gogs项目平台和Rancher云,不得不感叹,Docker给用户带来了太多的方便。
1、写在最前面
要是在几年前,你说你不了解Docker,那还情有可原。现如今再不了解甚至不知道Docker,那我只能说,兄弟,过分了啊?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
说的通俗易懂点,本人是一个php开发者,比如刚买了一个Linux服务器,需要部署项目到服务器上,以前我们是这么干的:安装php-安装mysql-安装Nginx/Apache,然后再部署项目。这中间的过程老司机都懂有多痛苦。
那么有了Docker后,我们可以这么干:
- 去DockerHub上找一个你喜欢的镜像,可以是php-nginx/Apache-mysql的,也可以是php-nginx,然后把mysql单独出来的,我使用的就是后一种。也推荐大家使用这种,这样这个mysql容器就可以被多次使用。
- 运行Docker pull imagesName,下载你的镜像。
- 使用Docker run 运行你的容器吧。
好了,到这里就结束了,你可以部署你的项目了。(这里先说个流程,具体的操作命令后面会说。)
2、我眼中的Docker
Docker提倡”Build once,Run anywhere“。当然,它也做到了。想了解Docker,就必须知道他的三个特性:
- 镜像
Docker镜像是面向Docker引擎的一个只读模板,它也是创建容器的必需品。
- 容器
每一个容器的创建都必须依赖于一个镜像,但一个镜像可以被用来创建多个容器。你可以想虚拟机一样去操作它-开始,停止,重启,删除。。
- 仓库
其实也就是镜像的仓库,目前镜像基本都放在DockerHub上,其上存放了大量的镜像供用户下载。
3、安装Docker
https://docs.docker.com/engine/installation/ 官方安装文档。虽然是英文的,但还是很全的,不要怕看不懂,实在看不懂的时候咱就右键->翻成中文(简体)

4、Docker基本命令
下面给大家介绍一些Docker常见的基本命令。
docker images : 查看本地镜像 -a 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
docker pull 镜像名 :从仓库拉取镜像到本地
docker run :运行容器(说下这条命令的一些常用参数)
--name 为容器指定一个名称
-p 端口映射,即宿主机的端口映射容器端口,可以指定多个
-v 数据挂载,即将容器内的数据挂载到宿主机上,可自动同步
-d 后台运行容器
--link 可用来连接两个容器
-m 设置容器使用内存最大值
docker ps :列出本地容器 -a 列出所有本地容器
docker exec -it 容器ID /bin/bash :以终端交互模式进入容器
docker login -u 用户名 -p 密码:用户名和密码都是dockerhub平台的
docker push 镜像名:tags :上传本地镜像到镜像仓库
docker commit 容器ID 镜像名:tags:从容器创建一个新的镜像
这个镜像名的命名格式应该为:dockerhub的用户名/镜像名 。否则你生成的镜像无法上传的自己的dockerhub镜像库。
-a 提交的镜像作者
-m 提交时的说明文字;
5、容器间的通信
- 使用--link参数连接
假设机器上已经通过docker pull下载了mysql镜像和php-nginx镜像。
1、启动mysql容器,并命名为myDB
docker run --name myDB -e MYSQL_ROOT_PASSWORD=111111 -d mysql
2、启动php-nginx容器
docker run --name php-nginx --link myDB:mysql -p 8002:80 -d webdevops/php-nginx
--link myDB:mysql 就是告诉要创建的容器,要使用myDB这个容器,并且起了一个别名叫mysql。这样在新创建的容器里就可以使用“mysql”来连接myDb这个容器。
但这种通信方式有一个局限性,就是只有运行在同一台服务器上的容器间可以通信,想要跨服务器通信,就看下面的另一种连接方式。
- 通过宿主机端口连接
这种方式更简单更容易理解。在创建mysql容器的时候与宿主机建立端口映射:docker run --name myDB -p 3306:3306 -e MYSQL_ROOT_PASSWORD=111111 -d mysql.
这样,假如你的宿主机IP是127.0.0.1.那么你就可以在任何地方用127.0.0.1:3306来连接mysql容器。推荐使用这种方式,因为方便我们使用Navicat等数据库图形工具来连接。
6、数据挂载
如果有一天你的mysql容器不小心被删除了,那么里面的数据随之也会不见,这是相当相当相当可怕的事情。所以这里我们就要用到数据挂载了。
docker run --name myDB -p 3306:3306 -e MYSQL_ROOT_PASSWORD=111111 -v /data/mysql:/var/lib/mysql -d mysql。
这样,mysql中的数据就会自动同步到你宿主机的/data/mysql目录中,若该目录不存在,则会自动创建。这里的mysql数据备份就要你们自己来了。
你不得不了解的应用容器引擎---Docker的更多相关文章
- 【开发工具 docker】值得学习的应用容器引擎docker安装
概述: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何 ...
- Java框架Spring Boot & 服务治理框架Dubbo & 应用容器引擎Docker 实现微服务发布
微服务系统架构实践 开发语言Java 8 框架使用Spring boot 服务治理框架Dubbo 容器部署Docker 持续集成Gitlab CI 持续部署Piplin 注册中心Zookeeper 服 ...
- Kubernetes将弃用Docker!与 containerd容器引擎
时间戳:2022-06-07 20:32:19 星期二 撰写文档参考:(阿良-腾讯课堂)Kubernetes将弃用Docker 参考博客k8s入坑之路(3)containerd容器 container ...
- 史上最全面的Docker容器引擎使用教程
目录 1.Docker安装 1.1 检查 1.2 安装 1.3 镜像加速 1.4 卸载Docker 2.实战Nginx 3.Docker命令小结 4.DockerFile创建镜像 4.1 Docker ...
- Centos7下安装与卸载docker应用容器引擎
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...
- Docker 1.3.3/1.4.0 发布下载,Linux 容器引擎
Docker 1.3.3 发布,下载地址: https://github.com/docker/docker/archive/v1.3.3.zip 改进记录包括: Security Fix path ...
- 操作系统-容器-引擎容器-百科:Docker
ylbtech-操作系统-容器-引擎容器-百科:Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上 ...
- 【转帖】技术选型之Docker容器引擎
技术选型之Docker容器引擎 https://segmentfault.com/a/1190000019462392 图过不来的 原作者写的挺好的 题外话 最近对Docker和Kubernetes进 ...
- 【应用容器引擎】Docker笔记
一.Docker是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化.它是一个轻量级容器技 ...
随机推荐
- 安装mayavi和VTK库的血泪史
一开始安装VTK库是从官网上下载,但是怎么都找不到whl文件,只有exe文件(vtkpython-7.1.1-Windows-64bit.exe).下载安装之后再PyCharm中import vtk出 ...
- Linux学习(十二)mkpasswd、su、sudo、限制root远程登录
一.mkpasswd mkpasswd用来生成随机密码字符串.可以指定长度和特殊字符的长度: [root@ruanwenwu01 ~]# mkpasswd O7.alw5Wq [root@ruanwe ...
- 使用ichartjs生成图表
官网:http://www.ichartjs.com/ ichartjs 是一款基于HTML5的图形库.使用纯javascript语言, 利用HTML5的canvas标签绘制各式图形. ichartj ...
- sublime 集成git插件,及git常用命令
以前用了很久的totoiseSVN,显然不够高大上,开发界的版本装x利器还得是git.然而git的命令行对没怎么用过linux的人可能觉得还不如用gitGUI,可是当你知道sublime可以集成git ...
- HTML5 文件上传
这篇随笔主要引用https://juejin.im/post/59598ecf5188250d8d141fff,只用于自己学习,不对外宣传. FileList 对象和 file 对象 input[ty ...
- 分页查询时,使用cookie保存上次的查询条件。jQuery实现方法以及中间遇到的坑
今天做分页查询时需要在跳转页面时保存上次查询的条件,如下: 实现的大致思路就是用cookie本地保存. 其中需要用到jQuery.Cookie插件. 使用方法很简单: 存数据:$.cookie(“ke ...
- Java钉钉开发_03_通讯录管理之 人员管理 和 部门管理
一.本节要点 1.通讯录权限 ISV(应用服务商)默认无管理通讯录的权限,企业应用默认有所有通讯录权限. 2.数据传输格式—JSON 请参见: Java_数据交换_fastJSON_01_用法入门 二 ...
- table固定头部,表格tbody可上下左右滑动
当表格头部固定时,需要分为两个表格来做:一部分是thead,一部分是tbody,具体实现方式如下: html代码: <div class="table_box_big"> ...
- 网页加速特技之 AMP
据统计,40%的人会放弃使用加载时间超过3秒的网站.对于加载慢的页面我也是没耐心等待的,同类型网站那么多,为什么不选择加载速度更快体验更好的呢.为了解决网页加载慢的问题,Google联合数十家技术机构 ...
- bash, sh, dash 傻傻分不清楚
原文链接,转载请注明出处: http://www.happycxz.com/m/?p=137 常见shell类型 Bourne shell (sh) UNIX 最初使用,且在每种 UNIX 上都可以使 ...