你不得不了解的应用容器引擎---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机器上,也可以实现虚拟化.它是一个轻量级容器技 ...
随机推荐
- uploadify 配置后,页面显示无效果
uploadify使用的是Flash版本 谷歌浏览器:默认没有开启Flash,进行如下图设置即可
- Lua的函数调用和协程中,栈的变化情况
Lua的函数调用和协程中,栈的变化情况 1. lua_call / lua_pcall 对于这两个函数,对栈底是没有影响的--调用的时候,参数会被从栈中移除,当函数返 回的时候,其返回值会从函数处 ...
- Can you solve this equation?
Problem Description Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,can you find its sol ...
- 暑假练习赛 007 E - Pairs
E - Pairs Description standard input/outputStatements In the secret book of ACM, it’s said: “Glory f ...
- 暑假练习赛 006 E Vanya and Label(数学)
Vanya and LabelCrawling in process... Crawling failed Time Limit:1000MS Memory Limit:262144KB ...
- Eddy's picture(最小生成树)
Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- eclipse禁用svg文件Validation
1.打开window>preferences>validation找到xml validator 2.点击xml validator最右侧的按钮打开xml校验规则窗口,选中exclude ...
- 【翻译】.Net Core的意义
想要了解.Net Core的意义,就必须要了解拥有很长历史的.Net Framework,.Net Framework1.0于2002年发布.从那开始,每隔两年就会有一个主版本推出.伴随着Visual ...
- Struts2知识整理
准备找工作了.好忐忑!!! 整理整理知识,好好准备. 其实现在Struts2好像不是特别流行,不过还是有用武之地的. struts2简介 struts2是基于mvc开发模型的框架,属于表现层框架 核心 ...
- Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址
我们在客户端设置邮箱或者使用 PHPMailer 发送邮件的时候,我们都会去查找这些邮箱的 IMAP/SMTP/POP3 地址,这里就列出 Gmail, QMail, 163邮箱这三个常用邮箱的这些地 ...