zoukankan      html  css  js  c++  java
  • docker 架构

    Docker 架构

    三个基本概念

    • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
    • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
    • 仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

    Docker 容器通过 Docker 镜像来创建。

    Docker daemon(Docker 守护进程):

    运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互。

    Images(镜像):

    将软件环境打包好的模板,用来创建容器的,一个镜像可以创建多个容器。

    Containers(容器):

    Docker的运行组件,启动一个镜像就是一个容器,容器与容器之间相互隔离,并且互不影响。

    常用命令

    查找镜像

    docker search 关键词
    

    下载镜像

    docker pull 镜像名:TAG
    

    Tag表示版本,有些镜像的版本显示latest,为最新版本

    查看镜像

    docker images
    

    删除镜像

    docker rmi -f 镜像ID或者镜像名:TAG
    

    -f 表示强制删除

    获取元信息

    docker inspect 镜像ID或者镜像名:TAG
    

    运行镜像

    docker run --name 容器名 -i -t -p 主机端口:容器端口 -d -v 主机目录:容器目录:ro 镜像TD或镜像名:TAG
    
    docker run --name how2jtmall -dit --privileged -p21:21 -p80:80 -p8080:8080 -p30000-30010:30000-30010 how2j/tmall:latest /usr/sbin/init # --name 指定容器名,可自定义,不指定自动命名
    

    --privileged 启动容器的时候,把权限带进去。 这样才可以在容器里进行完整的操作

    -i 以交互模式运行容器

    -t 分配一个伪终端,即命令行,通常组合来使用

    -p 指定映射端口,将主机端口映射到容器内的端口

    -d 后台运行容器

    -v 指定挂载主机目录到容器目录,默认为rw读写模式,ro表示只读

    容器列表

    docker ps -a -q 
    

    -a 查看所有容器(运行中、未运行)

    -q 只查看容器的ID

    启动容器

    docker start 容器ID或容器名
    

    停止容器

    docker stop 容器ID或容器名
    

    删除容器

    docker rm -f 容器ID或容器名
    

    -f 表示强制删除

    查看日志

    docker logs 容器ID或容器名
    

    进入正在运行容器

    docker exec -it 容器ID或者容器名
    

    /bin/bash 进入正在运行的容器并且开启交互模式终端

    /bin/bash是固有写法,作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。

    也可以用docker exec在运行中的容器执行命令

    拷贝文件

    docker cp 主机文件路径 容器ID或容器名:容器路径 
    

    主机中文件拷贝到容器中

    docker cp 容器ID或容器名:容器路径 主机文件路径
    

    容器中文件拷贝到主机中

    获取容器元信息

    docker inspect 容器ID或容器名
    

    创建镜像

    更新镜像

    先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用docker commit命令提交为一个新的镜像(tomcat为例)。

    1.根据基础镜像,创建容器
    docker run --name mytomcat -p 80:8080 -d tomcat 
    
    2.修改容器内容
    docker exec -it mytomcat /bin/bash cd webapps/ROOT rm -f index.jsp echo hello world > index. html exit 
    
    3.提交为新镜像
    docker commit -m="描述消息" -a="作者" 容器ID或容器名 镜像:TAG # 例: # docker commit -m="修改了首页" -a="测试" mytomcat zong/tomcat:v1.0 
    
    4.使用新镜像运行容器
    docker run --name tom -p 8080:8080 -d zong/tomcat:v1.0
    
    使用Dockerfile构建镜像

    Dockerfile是一个包含创建镜像所有命令的文件,使用docker build命令可以根据Dockerfile的内容创建镜像(以tomcat为例)。

    1.创建一个Dockerfile文件vi Dockerfile
    #注意dockerfile指令须大写
    FROM tomcat
    MAINTAINER zong
    RUN rm -f /usr/local/tomcat/webapps/ROOT/index.jsp
    RUN echo "<h1>hello world2<h1>" > /usr/local/tomcat/webapps/ROOT/index.html 
    
    2.构建新镜像
    docker build -f Dockerfile -t zong/tomcat:v2.0 . 
    # -f Dockerfile路径,默认是当前目录 
    # -t 指定新镜像的名字以及TAG
    
    使用Dockerfile构建Spring Boot应用镜像

    —、准备

    1. 把你的spring boot项目打包成可执行jar包
    2. 把jar包上传到Linux服务器

    二、构建

    1.在jar包路径下创建Dockerfile文件vi Dockerfile

    # 指定基础镜像,本地没有会从dockerHub pull下来 FROM java:8 # 可执行jar何复制到基础镜像的根目录下 ADD test.jar /test.jar # 镜像要暴露旳端口,如要使用端口,在执行docker run命令时使用-p生效 EXPOSE 8080 # 在镜像运行为容器后执行旳命令 ENTRYPOINT ["java", "-jar", "/test.jar"]

    2.使用docker build命令构建镜像,基本语法

    docker build -f Dockerfile -t zong/mypro:v1 . # -f 指定Dockerfile文件的路径 # -t 指定镜像名字和TAG # . 指当前目录,这里实际上需要一个上下文路径

    三、运行

    运行自己的Spring Boot镜像

    docker run --name pro -p 80:80 -d 镜像名:TAG

  • 相关阅读:
    POJ 3635 Full Tank?
    ZOJ 2112 Dynamic Rankings
    POJ 3468 A Simple Problem with Integers (2)
    FJOI2007 轮状病毒
    HDU 3308 LCIS
    POJ 2449 Remmarguts' Date
    Adroid平台图表案例源码
    Android项目——实现时间线程源码
    关于Ubuntu上Eclipse不显示手机设备
    自定义ListView下拉弹起效果
  • 原文地址:https://www.cnblogs.com/mumuyinxin/p/12124135.html
Copyright © 2011-2022 走看看