zoukankan      html  css  js  c++  java
  • 001-docker概述、架构、window安装、基本测试

    一、概述

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    Docker 官网:http://www.docker.com

    Github Docker 源码:https://github.com/docker/docker

    参看地址:http://www.runoob.com/docker/docker-tutorial.html

    二、docker架构

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

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

    容器与镜像的关系类似于面向对象编程中的对象与类。

    Docker面向对象
    容器 对象
    镜像

      

      具体

      

    Docker 镜像(Images)

    Docker 镜像是用于创建 Docker 容器的模板。

    Docker 容器(Container)

    容器是独立运行的一个或一组应用。

    Docker 客户端(Client)

    Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。

    Docker 主机(Host)

    一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

    Docker 仓库(Registry)

    Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

    Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

    Docker Machine

    Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

    三、window下安装

      dockerToolbox是使用VirtualBox虚拟机软件来构建一个叫default的linux系统,从来来使用docker的。

      docker for windows是使用Hyper-V来构建linux系统,Hyper-V的性能比VirtualBox高,所以windows建议这么安装。 但是docker for windows只能在windows10有Hyper-V的版本上安装,且windows8可能没有Hyper-V,同理所有版本的windows7都不支持Hyper-V,即windows7只能安装dockerToolbox。

       windows10可以安装dockerToolbox或docker for windows(推荐这种),两者的区别目测就是模拟linux的虚拟机不同(因为docker只能安装在linux上,所以windows系统需要先虚拟一个linux系统),windows7的docker使用的比较少,不是说会挂,因为没人会在生产环境使用windows7或者10来部署docker,都是linux系统或者windowsServer来部署。 

      如果您的系统不符合运行Docker for Windows的要求,则可以安装Docker Toolbox,Dockbox Toolbox使用Oracle Virtual Box而不是Hyper-V。

    3.1、docker for windows安装

    https://docs.docker.com/docker-for-windows/

    Docker for Windows安装包括:安装提供Docker Engine,Docker CLI客户端,Docker Compose,Docker Machine和Kitematic。

    1、开启因特尔虚拟化技术  

      电脑硬件【thinkpad 按键F1→BIOS→Security→visualization→inter…… enabled即可】

      win10系统开启Hyper-V,程序→启用或关闭Windows功能→选中Hyper-V

    2、下载

      官方地址:地址 ,三方地址:地址   

    3、安装

      下载好安装包后,安装即可.

      1、配置镜像:http://hub-mirror.c.163.com

        

      2、配置下本地镜像地址,setting,advanced中

    四、测试

    查看docker版本:docker version
    帮助:docker --help
    概要信息:docker info
    镜像查看:docker images
    容器查看,即进程查看,docker ps -a

    5.1、hello world

    docker pull hello-world
    docker run hello-world

    此时会下载,运行docker,成功后会显示 Hello from Docker! 等信息

    docker run 镜像名:创建一个新的容器并运行一个命令
    docker images:镜像查看:
    docker ps -a:容器查看,即进程查看,
    docker start 容器ID:启动一个或多个已经被停止的容器
    docker stop 容器ID :停止一个运行中的容器
    docker restart 容器ID:重启容器

    五、基本docker命令

    查看npm版本:npm -v
    查看docker版本:docker version
    启动:systemctl start docker.service 开机启动:systemctl enable docker.service 帮助:docker --help 概要信息:docker info 镜像查看:docker images 容器查看,即进程查看,docker ps -a

    5、测试安装nginx

    (1)下载镜像,docker pull nginx
    (2)启动容器,docker run -d -p 8080:80 nginx
      把容器内的nginx的80端口,映射到当前服务器的8080端口,当前服务器的ip是192.168.1.120,浏览器输入http://192.168.1.120:8080/,就可以看到nginx已启动,
    (3)再启动多一个容器,docker run -d -p 8081:80 nginx
      浏览器输入http://192.168.1.120:8081/,就可以看到另外一个nginx已启动 也可以通过curl 127.0.0.1:8081 来测试是否打开相应端口
    (4)到这里就能体现出Docker部署应用和传统部署应用的区别了,传统部署的话,需要人工拷贝多一份nginx,再配置端口,而Docker部署的话,在已制作好的镜像基础上,一条命令就可以部署一个新的应用

    6、删除测试的nginx

    (1)docker ps -a
    可以显示容器id
    停止容器
    (2)docker stop 8dc6a2b6f903
    删除容器
    (3)docker rm 8dc6a2b6f903

     7、指定容器nginx的参数

    docker run --name nginx-001 -d -p 8081:80 -v /home/docker/nginx/html:/usr/share/nginx/html nginx

    -p 参数是把 宿主的8081端口映射到容器的80端口 
    这里要注意-v是数据卷,可以主机和容器之间共享/home/Docker/nginx/html这个目录,在容器里面就是/usr/share/nginx/html。其实这就是我们的代码目录,调试代码就是靠共享目录实现的,很方便!

    可以使用curl 127.0.0.1:8081查看,会出现403 下面介绍

     8、修改容器里面的配置文件

    #进入容器
    docker exec -it nginx-001 bash
    #安装工具
    apt-get update
    apt-get install vim
    #查看和修改nginx的配置信息
    vim /etc/nginx/conf.d/default.conf

    修复网页访问403错误

    由于在容器里面 nginx配置的web根目录是 /usr/share/nginx/html ,对应到系统的目录是/home/docker/nginx/html 。 会有权限的问题。
    这个实现需要关闭SELinux重新发布一次
    vim /etc/selinux/config 
    将SELINUX=enforcing改为SELINUX=disabled
    然后重启
    删除原来的容器,重新发布一下容器。
    访问
    退出容器:exit

    参看地址

    http://blog.csdn.net/remote_roamer/article/details/51916893

    9、docker基础命令

    查看
    docker ps -a
    1)删除一个容器
    docker rm <containerID>
    2)强制删除一个容器
    docker rm -f <containerID>
    3)强制删除全部容器
    docker rm -f $(docker ps -aq)
    4)删除一个镜像:
    docker rmi <imageID>
    5强制删除一个镜像:
    docker rmi -f <imageID>
    6)强制删除全部镜像
    docker rmi -f $(docker images -q)
    查看ip
    docker inspect 容器Id 或 docker inspect 容器Id |grep IPAddress

     全部的操作命令

    1.停止所有的container,这样才能够删除其中的images:
    docker stop $(docker ps -a -q)
    
    如果想要删除所有container的话再加一个指令:
    docker rm $(docker ps -a -q)
    
    2.查看当前有些什么images
    docker images
    
    3.删除images,通过image的id来指定删除谁
    docker rmi <image id>
    
    想要删除untagged images,也就是那些id为<None>的image的话可以用
    docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
    
    要删除全部image的话
    docker rmi $(docker images -q)
  • 相关阅读:
    打印二叉树和为某一值的路径
    顺时针打印数组
    算术表达式
    堆内存与栈内存详解
    【腾讯校招在线考试附加题】将一个10进制数转换为四位定长的36进制数
    反转链表
    记录github出错及解决方案
    centos7操作防火墙
    无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]解决方法
    MyBatis联表查询——别名方式
  • 原文地址:https://www.cnblogs.com/bjlhx/p/7121875.html
Copyright © 2011-2022 走看看