docker

目录

概述

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

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

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

Docker的三个概念:

镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。

容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。

仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

返回目录

实现技术

容器实际上是一种特殊的进程,使用docker启动容器进程,即是在启动进程时指定一组Namespace,使容器只能看到当前Namespace所限定的资源、文件、设备、状态或者配置。
Namespace技术是用来修改进程视图的主要方法,即决定该进程所能看到的内容。

容器的缺点:容器只是在宿主机上运行的一种特殊的进程,那么多个容器之间使用的就还是同一个宿主机的操作系统内核,这就决定了无法在windows宿主机上运行Linux容器,或者在低版本的Linux宿主机运行高版本的Linux容器。

Linux Cgroups (Linux control groups),Linux内核中用来为进程设置资源限制的一个功能。

Cgroup的作用:

  • 限制一个进程组能够使用的资源上限,包括CPU、内存、磁盘、网络带宽等
  • 对进程优先级进行设置、审计,将进程挂起和恢复

cgroup向用户暴露出来的操作接口是文件系统,它是以文件和目录的方式组织在操作系统的/sys/fs/cgroup路径下。

/sys/fs/cgroup有很多cpuset、cpu、memory、blkio的子目录,也叫子系统,这些都是可以被cgroup限制的资源种类。

返回目录

安装

# 下载安装docker-ce源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装docker-ce
yum install docker-ce

返回目录

管理

启动实例:

docker run -d -p 8080:80 -v /data/jumpserver:/opt/data/media --name jms_server wojiushixiaobai/jumpserver:1.4.1

-d	docker 容器后台执行
-p	映射容器端口80到本机8080端口
-v	将容器/opt/data/media目录挂载在本机/data/jumpserver目录
--name	指定容器名称,可随意指定
wojiushixiaobai/jumpserver:1.4.1			镜像名称版本

修改docker挂载目录:

centos7
vim /usr/lib/systemd/system/docker.service       修改Execstart指令,增加--graph参数
ExecStart=/usr/bin/dockerd --graph /data/docker/lib

访问docker容器bash:

docker exec -it jms_server bash

配置本地docker仓库:

修改/etc/docker/daemon.json
{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
"insecure-registries": ["reg.ops.dev.wormpex.com","reg.vip.blibee.com"],
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

docker push 上传镜像:

给镜像打上标记:docker tag sjnwk213123ss1  reg.ops.dev.wormpex.com/wurendian/openpose_v1
push: docker push reg.ops.dev.wormpex.com/wurendian/openpose_v1

docker 日志大小限制:

1.修改docker-compose.yml文件,添加如下选项
logging: 
    driver: “json-file” 
    options: 
      max-size: “5g”

2.修改docker主进程配置文件
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["http://f613ce8f.m.daocloud.io"],
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"}
}

修改docker0 IP:

vim /etc/docker/daemon.json,添加IP设置"bip":"192.168.200.1/24"
{
  "registry-mirrors": ["http://f613ce8f.m.daocloud.io"],
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"},
  "bip":"192.168.200.1/24"
}

修改docker-compose 网卡IP:

vim docker-compose.yml
version: '2.3'
networks:
  front:
    ipam:
      config:
        - subnet: 192.168.201.0/24
          gateway: 192.168.201.1

services:
  godeye_10000000:
    image: ubuntu:16.04
    volumes:
      - /etc/localtime:/etc/localtime
    networks:
      - front
    command:
      - /bin/bash
      - -c
      - |
          while true; do echo hello world; sleep 3; done

返回目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值