zoukankan      html  css  js  c++  java
  • docker 入门

    • docker的介绍及部署

    Docker是通过内核虚拟化技术(namespaces及cgroups cpu、内存、磁盘io等)来提供容器的资源隔离与安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,提高资源利用率。

    docker的主要目标是"Build,Ship and Run any App,Angwhere",构建,运输,处处运行 

    构建:做一个docker镜像

    运输:docker pull

    运行:启动一个容器

    每一个容器,他都有自己的文件系统rootfs.

    kvm解决了硬件和操作系统之间的依赖

    docker解决了软件和操作系统环境之间的依赖,能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。

    docker容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。

    • docker 简介

    什么是容器?

       一种虚拟化的方案

    操作系统级别的虚拟化

    只能运行相同或相似内核的操作系统

    依赖于Linux内核特性:NamespaceCgroups(control Group)

    • 什么是Docker

      将应用程序自动部署到容器

    Go语言开源引擎 Github地址:https://github.com/docker/docker

    • docker的目标:

    提供简单轻量的建模方式

    职责的逻辑分离

    快速高效的开发生命周期

    鼓励使用面向服务的架构

    • docker的使用场景

    1、 使用docker容器开发、测试、部署服务

    2、 创建隔离的运行环境

    3、 搭建测试环境

    4、 构建多用户的平台即服务(pass)基础设施

    5、 提供软件即服务(saas)应用程序

    6、 高性能、超大规模单位宿主机部署 

    • docker 的安装

    yum install -y docker 

    docker的镜像管理

    • 搜索镜像

    docker search
    选镜像的建议:
    1,优先考虑官方
    2,starts数量多

    • 获取镜像

    docker pull(push)
    镜像加速器:阿里云加速器,daocloud加速器,中科大加速器,Docker 中国官方镜像加速:https://registry.docker-cn.com

    docker pull centos:6.8(没有指定版本,默认会下载最新版)

    ##配置docker镜像加速
    vi /etc/docker/daemon.json
    {
    "registry-mirrors": ["https://registry.docker-cn.com"]
    }

    ##第三方docker镜像仓库,使用方法:
    docker pull index.tenxcloud.com/tenxcloud/httpd:latest

    • 查看镜像

    docker images

    • 删除镜像

    docker rmi 例子:docker image rm centos:latest

    • 导出镜像

    docker save 例子:docker image save centos > docker-centos7.4.tar.gz

    • 导入镜像

    docker load 例子:docker image load -i docker-centos7.4.tar.gz

    docker的容器管理


    docker run -d -p 80:80 nginx
    run(创建并运行一个容器)
    -d 放在后台
    -p 端口映射
    -v 源地址(宿主机):目标地址(容器)

    nginx docker镜像的名字

    docker run -it --name centos6 centos:6.8 /bin/sh
    -it 分配交互式的终端
    --name 指定容器的名字
    /bin/sh覆盖容器的初始命令

    • 启动容器

    docker run image_name
    docker run -it image_name CMD

    docker run ==== docker create + docker start

    • 停止容器

    docker stop CONTAINER_ID

    • 杀死容器

    docker kill container_name

    • 查看容器列表

    docker ps
    docker ps –a

    • 进入容器

    *** docker exec (会分配一个新的终端tty)
    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    docker exec -it 容器id或容器名字 /bin/bash

    docker attach(使用同一个终端)
    docker attach [OPTIONS] CONTAINER
    nsenter(安装yum install -y util-linux)

    • 删除容器

    docker rm

    • 批量删除容器

    docker rm -f `docker ps -a -q`

    总结:docker容器内的第一个进程必须一直处于前台运行的状态(必须夯住),否则这个容器,就会处于退出状态!

    • docker容器的网络访问

    指定映射(docker 会自动添加一条iptables规则来实现端口映射)
    -p hostPort:containerPort
    -p ip:hostPort:containerPort
    -p ip::containerPort(随机端口)
    -p hostPort:containerPort:udp
    -p 81:80 –p 443:443

    随机映射
    docker run -P 80(随机端口)

    • docker的数据卷管理

    /usr/share/nginx/html

    数据卷(文件或目录)
    -v /data
    -v src(宿主机的目录):dst(容器的目录)
    数据卷容器
    --volumes-from

    • 手动将容器保存为镜像

    docker commit 容器id或者容器的名字 新的镜像名字[:版本号可选]

    1):基于容器制作镜像
    docker run -it centos:6.8
    ######
    yum install httpd
    yum install openssh-server
    /etc/init.d/sshd start

    vi /init.sh
    #!/bin/bash
    /etc/init.d/httpd start
    /usr/sbin/sshd -D

    chmod +x /init.sh

    2)将容器提交为镜像
    docker commit centos:6  centos6-ssh-httpd:v1

    3)测试镜像功能是否可用

    •  docker-容器的基本操作

    docker  run  IMAGE [COMMAND][ARG]

             run 在新容器中执行命令

    [root@jinqiu ~]# docker run 5182e96772bf echo 'hello'

    hello

    启动交互式容器

       docker run -i -t IMAGE /bin/bash

          -i --interactive=ture|false 默认是false 

          -t --tty=true|false 默认是false

    [root@jinqiu ~]# docker run -it 5182e96772bf /bin/bash

    [root@168b47a3f377 /]# ps -ef

    查看容器:

       docekr ps [-a] [-l]

         -a 查看所有容器

         -l  查看最新创建的容器

       docker inspect 容器ID

          查看容器的详细信息

    自定义容器名字:

        docker run --name=自定义名 -it IMAGE /bin/bash

        [root@jinqiu ~]# docker run --name=centos7.1 -it 5182e96772bf /bin/bash

    [root@c989d1727358 /]#

     

    重新启动停止容器:

        docker start [-i] 容器名

        [root@jinqiu ~]# docker start -i centos7.1

    [root@c989d1727358 /]#

    删除停止的容器

        docker  rm  容器ID

    docker rm -f `docker ps -a -q`   删除多个容器

     

       

    docker守护式容器:

       能够长期运行

       没有交互式会话

       适合运行应用程序和服务

    以守护形式运行容器:

      docker run -i -t IMAGE /bin/bash

      Ctrl +P  

      Ctrl +Q

     

    docker run --name=自定义名字 -it  -d  容器ID

    a63bd654266b4e3d028ee094f8288a0e9fcc0550c7fb520c63a4abf375dcee3b

     

     

    进入容器

      [root@jinqiu ~]# docker attach 1577ab130215

    [root@1577ab130215 /]#

    [root@jinqiu ~]# docker exec -it 容器ID  /bin/bash

    [root@3eab758d74af /]# ls

    Docker 资源

    Docker 国内镜像

    阿里云的加速器:https://help.aliyun.com/document_detail/60750.html

    网易加速器:http://hub-mirror.c.163.com

    官方中国加速器:https://registry.docker-cn.com

    ustc 的镜像:https://docker.mirrors.ustc.edu.cn

    daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

  • 相关阅读:
    WSGIRequest对象 和querydict对象
    限制请求method及页面重定向
    ORM模型里连接数据库常用方法和QuerySet API
    orm模型(关于时区时间)
    spring mvc 前后端数据交互方式(整理)
    java 国际化(转载)
    spring 基础学习笔记
    (转载)java nio 原理解析
    collection 所有集合的接口。
    java.lang.String类
  • 原文地址:https://www.cnblogs.com/yuanjinqiu/p/9952467.html
Copyright © 2011-2022 走看看