最近突然想搭一个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的更多相关文章

  1. 【开发工具 docker】值得学习的应用容器引擎docker安装

    概述: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何 ...

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

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

  3. Kubernetes将弃用Docker!与 containerd容器引擎

    时间戳:2022-06-07 20:32:19 星期二 撰写文档参考:(阿良-腾讯课堂)Kubernetes将弃用Docker 参考博客k8s入坑之路(3)containerd容器 container ...

  4. 史上最全面的Docker容器引擎使用教程

    目录 1.Docker安装 1.1 检查 1.2 安装 1.3 镜像加速 1.4 卸载Docker 2.实战Nginx 3.Docker命令小结 4.DockerFile创建镜像 4.1 Docker ...

  5. Centos7下安装与卸载docker应用容器引擎

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...

  6. 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 ...

  7. 操作系统-容器-引擎容器-百科:Docker

    ylbtech-操作系统-容器-引擎容器-百科:Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上 ...

  8. 【转帖】技术选型之Docker容器引擎

    技术选型之Docker容器引擎 https://segmentfault.com/a/1190000019462392 图过不来的 原作者写的挺好的 题外话 最近对Docker和Kubernetes进 ...

  9. 【应用容器引擎】Docker笔记

    一.Docker是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化.它是一个轻量级容器技 ...

随机推荐

  1. uploadify 配置后,页面显示无效果

    uploadify使用的是Flash版本 谷歌浏览器:默认没有开启Flash,进行如下图设置即可

  2. Lua的函数调用和协程中,栈的变化情况

    Lua的函数调用和协程中,栈的变化情况 1. lua_call / lua_pcall   对于这两个函数,对栈底是没有影响的--调用的时候,参数会被从栈中移除,当函数返 回的时候,其返回值会从函数处 ...

  3. 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 ...

  4. 暑假练习赛 007 E - Pairs

    E - Pairs Description standard input/outputStatements In the secret book of ACM, it’s said: “Glory f ...

  5. 暑假练习赛 006 E Vanya and Label(数学)

    Vanya and LabelCrawling in process... Crawling failed Time Limit:1000MS     Memory Limit:262144KB    ...

  6. Eddy's picture(最小生成树)

    Eddy's picture Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  7. eclipse禁用svg文件Validation

    1.打开window>preferences>validation找到xml validator 2.点击xml validator最右侧的按钮打开xml校验规则窗口,选中exclude ...

  8. 【翻译】.Net Core的意义

    想要了解.Net Core的意义,就必须要了解拥有很长历史的.Net Framework,.Net Framework1.0于2002年发布.从那开始,每隔两年就会有一个主版本推出.伴随着Visual ...

  9. Struts2知识整理

    准备找工作了.好忐忑!!! 整理整理知识,好好准备. 其实现在Struts2好像不是特别流行,不过还是有用武之地的. struts2简介 struts2是基于mvc开发模型的框架,属于表现层框架 核心 ...

  10. Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址

    我们在客户端设置邮箱或者使用 PHPMailer 发送邮件的时候,我们都会去查找这些邮箱的 IMAP/SMTP/POP3 地址,这里就列出 Gmail, QMail, 163邮箱这三个常用邮箱的这些地 ...