zoukankan      html  css  js  c++  java
  • 你不得不了解的应用容器引擎---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数据备份就要你们自己来了。

  • 相关阅读:
    html中<a>标签_top和_parent的区别
    HTML基础练习
    HTML <!DOCTYPE>标签 各版本对应的标签是否有无
    HTML <!DOCTYPE>标签
    doctype声明 过渡transitional 严格strict 框架frameset
    xhtml1-frameset.dtd
    【xunsearch】笔记
    python 根据文件创建时间排序
    wkhtmltopdf
    linux:/lib/libc.so.6: version `glibc_2.7′ not found【没有解决】采用新方法达到目的
  • 原文地址:https://www.cnblogs.com/johnson108178/p/8043879.html
Copyright © 2011-2022 走看看