zoukankan      html  css  js  c++  java
  • 安装docker并部署web项目

    一.docker简介

    1、docker定义:docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以装笔,书包可以放书一样。你可以把“Hello World!”放到docker中,也可以把网站放到docker中,你可以把任何你想到的程序放到docker中。

    2、docker思想:

    (1)集装箱

    (2)标准化 (运输方式、存储方式、API接口)

    运输方式(docker鲸鱼负责运输) 

    存储方式(不用关心存在哪,存在哪个盘) 

    API接口的标准化:Docker提供了一系列的RESTFUL API接口,包含了对Docker也就是对应用的控制,其中包括停止 查看 删除等等

    (3)隔离:

    最底层的技术实际上是一种linux的一种内核的限制机制,叫做LXC,LXC是一种轻量级的容器虚拟化技术,最大效率的隔离了进程和资源,通过cgroup  namespace等限制隔离进程组所使用的物理资源,如CPU  I/O  Memory等等。

    3、docker解决的问题

    (1)docker解决了运行环境不一致带来的问题 

    (2)docker隔离性,每台服务器相互隔离,互不影响,可以保证自己运行的程序不受其他程序的影响。

    (3)一键化部署服务器(例如双11,服务器数量。。。),docker的标准化让快速扩展,弹性伸缩变得简单。

    4、docker的构成

    https://img.mukewang.com/5c84f2ad00015b2d09240415.jpg

    (1)Build - 构建镜像 - [镜像 类比 集装箱] :

    docker镜像就是image。从本质上来说镜像就是一系列的文件(包括应用程序的文件,也包括应用环境的文件),以联合文件系统分层的形式保存到本地;docker中的文件系统都是只读的。

    https://img2.mukewang.com/5c84f2b60001d49f05730417.jpg

    (2)Ship - 运输镜像(从仓库和我们的主机上运输)- [仓库 类比 超级码头] :

    构建镜像的目的:是为了在其他的服务器,其他的环境运行我们的程序。(为了在其他地方运行,我们就需要将构建的镜像传递到目的地才可以,仓库可以起到传输传递作用。)

    传输过程:先将构建的镜像传到docker仓库中,再由目的地去docker仓库将我们的镜像拉过去,这样就完成了传输过程。

    docker仓库的提供者:中央服务器

    中央服务器地址:hub.docker.com(国际)、c.163.com(国内)

    (3)Run - 运行镜像(运行的镜像就是一个容器)- [容器 就是 运行程序的地方] :

    Docker容器的本质是一个进程。Docker镜像的每一层都是只读的,而容器作为最上层,是可读可写的。如果程序需要对镜像进行修改,那么Docker会把要修改的镜像文件拷贝到最上层的容器中,然后再进行修改。往后对该文件的访问会优先从容器中读取,寻找文件的顺序是从下往下。

    Docker 运行过程: 去仓库把镜像拉倒本地,然后用一条命令把镜像运行起来变成容器!

    5.docker的运行流程

    https://img.mukewang.com/5c84f2c40001b7c709330498.jpg

    docker执行流程:

    (1)docker pull:首先客户端client向Docker daemon发送命令docker pull,告诉Docker daemon要拉取哪个镜像,Docker daemon会先在本机检查这个镜像是否存在,如果存在并且版本一致,它不会做任何操作;如果不存在,它会到Docker的镜像仓库中寻找,如果找到了,就会把仓库中的镜像拉取到本地。

    (2)docker run:客户端将docker run命令发送到Docker deamon中,Docker deamon会先检查这个镜像是否在本地已经存在,如果不存在,它会到仓库中寻找,把镜像下载到本地,下载之后它会通过一定的方式把镜像运行起来,变成docker容器

    二.安装docker

    环境准备:

    Ubuntu 64-bit系统

    Kernel 3.10+

    (1)检查系统的内核版本,返回的值大于3.10即可

    命令:uname -r

    https://img2.mukewang.com/5c84f2cf0001775e04700068.jpg

    (2)使用sudo或root权限的用户登入中端

    (3)保证apt-get是最新版本的,执行如下命令:

    命令:apt-get update

    https://img3.mukewang.com/5c84f2d90001109b10350210.jpg

    (3)安装docker:

    命令:apt-get install -y docker.io

    用此命令安装的可能不是docker的最新版本

    要想安装docker的最新版本可以使用如下命令:

    命令:curl -s https://get.docker.com | sh

    https://img3.mukewang.com/5c84f2e700015b4d16870542.jpg

    (4)安装完成后,检查是否安装成功,执行如下命令:

    命令:docker version

    https://img.mukewang.com/5c84f2f50001813806950507.jpg

    说明docker已经安装成功!

    如果执行docker version命令后,看不到Server部分,说明docker服务命令启动,可以执行如下命令启动docker服务:

    命令:service docker start

    之后再次执行docker version命令,就能查看到相关信息。

    三.在docker环境下部署Java Web项目

    1.安装tomcat镜像包

    命令:docker pull hub.c.163.com/library/tomcat:latest

    https://img2.mukewang.com/5c84f304000106ca12610389.jpg

    2.将自己打包好的war包上传到服务器

    2.创建Dockerfile文件:

    文件内容如下:

    1
    2
    3
    4
    5
    from hub.c.163.com/library/tomcat
      
    MAINTAINER lhf xxx@qq.com
      
    COPY lottery.war /usr/local/tomcat/webapps

    3.构建自己的镜像

    执行如下命令构建自己的镜像

    命令:docker build .

    https://img4.mukewang.com/5c84f3250001661e14390664.jpg

    可以看到已经构建成功,只是没有给镜像命名,执行以下命令给镜像命名以及指定版本并重新构建。

    命令:docker build -t lottery:latest .

    https://img.mukewang.com/5c84f3320001c7cf13670442.jpg

    4.运行自己的镜像

    执行以下命令启动自己的镜像,并指定映射端口为8080

    命令:docker run -d -p 8080:8080 lottery

    https://img4.mukewang.com/5c84f34100013d5610320144.jpg

    之后就可以成功访问了。

    四.docker常用命令

    1、docker pull [OPTIONS] NAME [:TAG]  :此命令的作用是从docker远程的仓库拉取镜像到本地 (命令中的NAME项是必填的代表我们需要拉取的镜像名称;  [:TAG]是可选的,是代表镜像的版本; [OPTIONS]是代表拉取的镜像参数)                      

    例如:拉取hello-world镜像命令:docker pull hello-world

    2、docker images [OPTIONS] [REPOSITORY[:TAG]]  :此命令是来查看我们本机都有哪些镜像,也可以验证我们的pull是否执行成功(命令中[OPTIONS]是镜像的参数; [REPOSITORY[:TAG]]是镜像的名称和版本)

    docker images命令的参数含义:

    REPOSTTORY  : 镜像名字

    TAG  : 版本(lastest 最新版)

    IMAGE ID  :  64 位的字符串,可以唯一标识镜像,这里只显示16位,后面的被截掉了。

    CREATED : 创建时间 (最后修改时间)

    SIZE : 大小

    3、docker run [OPTIONS] IMAGE [:TAG] [COMMAND] [ARG...]  :运行镜像,命令中IMAGE镜像名字项为必填项

    4、docker run -d 镜像名:  后台运行容器

    5、docker ps: 查看正在运行的容器

    6、docker exec  -it :在运行的容器中运行命令

    7、docker run --help: 可以查看docker run 都有哪些参数;

    8、docker pull hub.c.163.com/library/nginx:latest  拉取nginx镜像

    docker run hub.c.163.com/library/nginx  在前台运行Nginx;

    docker run -d hub.c.163.com/library/nginx 在后台运行Nginx并打印相应运行Id;

    9、 docker run -d -p 主机端口:容器端口 容器的名称:启动镜像,并执行映射端口

    比如:docker run -d -p 8080:80 hub.c.163.com/library/nginx

    docker run -d -P 容器名称: 启动镜像,并开放所有的端口与主机建立映射

    10、docker stop 容器Id :停止docker

    11、docker build -t 容器名称:版本 Dockerfile文件目录: 构建镜像

    如:docker build -t demo:latest .

    参考:https://www.imooc.com/learn/824
    来源:慕课网

  • 相关阅读:
    Call KernelIoControl in user space in WINCE6.0
    HOW TO:手工删除OCS在AD中的池和其他属性
    关于新版Windows Server 2003 Administration Tools Pack
    关于SQL2008更新一则
    微软发布3款SQL INJECTION攻击检测工具
    HyperV RTM!
    OCS 2007 聊天记录查看工具 OCSMessage
    CoreConfigurator 图形化的 Server Core 配置管理工具
    OC 2007 ADM 管理模板和Live Meeting 2007 ADM 管理模板发布
    Office Communications Server 2007 R2 即将发布
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/11823652.html
Copyright © 2011-2022 走看看