zoukankan      html  css  js  c++  java
  • docker 1

    docker1

    标签(空格分隔): docker


    docker是一种容器

    保护不被其他所影响。

    容器的前世今生

    freebase jail bsd -----------> linux vserver

    chroot 根是隔离的 ---> 完整的根文件系统(FHS)

    namespace

    PID 进程隔离
    NET 管理网络接口
    IPC 管理进程通信
    MNT 挂载点
    UTS 隔离内核和版本标识

    cgroups 资源的分配和监控

    blkio 块设备
    cpu cpu
    cpuacct cpu资源报告
    cpuset 多处理平台上的cpu集合
    devices 设备访问
    freezer 挂起或回复任务
    memory 内存使用量
    pref_event 对cgroup中的任务进行统一性能测试
    net_cls cgroup中的任务创建的数据报文的类别标识符

    通过比较复杂的代码开发的过程 调用以上三项技术

    容器的一生

    实现容器的创建 ---》 管理 ----》 销毁

    LXC

    LXC LinuXContainer
    对于原有的常用功能进行了封装,方便我们做容器的生命周期
    ----> DOCKER (dotcloud)
    在LXC 标准上加入镜像技术

    docker ce 开源
    docker ee 企业


    docker的安装

    yum源准备

    curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    curl -o /etc/yum/repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    安装依赖包

    yum-utils device-mapper-persistent-data lvm2 docker-ce

    docker服务

    systemctl restart docker
    docker version
    docker info
    

    配置镜像加速

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://你的aliyun加速地址.mirror.aliyuncs.com"]
    }
    EOF
    
    sudo systemctl restart daemon-reload
    sudo systemctl restart docker
    

    docker 体系结构

    两种角色
    daemon 和 client

    docker的镜像基础管理

    docker search centos
    docker pull centos:6.9
    docker pull centos:7.5
    docker pull nginx 
    
    docker image ls
    

    标识镜像唯一性

    docker image ls --no-trunc

    查看全部 只看id

    docker image ls -q

    查看详情 加唯一标识

    docker image inspect 82f3b5f3c58f

    删除

    docker image rm 355

    docker image rm -f 'docker image ls -q'

    导出

    docker image save 355515151e > /tmp/ubu.tar

    导入

    docker image load -i /opt/nginx.tar.gz

    改信息

    docker image tag 6262edasd ubu:latest

    容器的管理

    运行容器

    docker container run -it #交互式启动
    
    docker container run -it --name='mydocker1' #唯一码
    
    docker container run -d 后台工作 nginx:1.14
    
     #交互式容器 测试使用 退出就删除
    docker container run -it --name='centos22' --rm 唯一码
    
    
     #后台服务容器 映射端口 加-p
    docker container run -d -p 8080:80  --name='nginxd' nginx:1.14
    
    外面的端口:docker里的端口
    

    查看容器启动状态

    docker container ls

    docker container ls -a

    container id 容器的唯一号码
    names 容器的名字(自动生成,也可以手工指定)
    status 容器的运行状态

    docker 重启

    守护式
    docker container start 容器id

    交互式
    docker container start -i 容器id

    docker 关闭

    守护式 交互式
    docker container stop 容器id

    docker 容器的连接

    docker container attach 容器id
    这种登录退出 容器也会关闭

    子进程的登录
    docker container exec -it 容器id /bin/bash
    这种登录退出 容器不会关闭

    查看各种io

    docker container stats

    测试nginx

    curl -I 172.17.0.3

    删除容器

    docker container rm -f 'docker container ls -a -q'

    docker container rm -f 容器id

    容器一致运行

    1.ctrl + P,Q
    2.使用sleep
    3.让程序前台一直运行(夯在前台)
    制作守护式容器时,常用的方法

    容器的网络访问

    指定映射 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 container run -d -p 10.0.0.100:8081:80 --name='n3' nginx:1.14

    随意端口 32768 开始

    docker container run -d -p 80 --name 'n4' nginx:1:14

    docker container run -d -p 172.16.1.200::80 --name='n6' nginx:1.14

    udp 映射

    docker container run -d -p 855:8011/udp --name='n6' nginx:1.14

    多端口映射

    docker container run -d -p 855:8011/udp -p 855:8011/udp -p 855:8011/udp --name='n6' nginx:1.14

    容器的其他管理

    docker ps -a -q -l
    docker top testxx
    docker logs testxx
    docker logs -t testxx
    docker logs -tf testxx
    docker logs -tf -tail 10 test xx
    docker logs -tf -tail 0 testxx

    最近一个

    docker container -a -q -l

    docker image

                search
                pull
                ls
                inspect
                rm
                save
                load
    

    docker container

                run
                ls
                start
                stop
                restart
                kill
                attach
                exec -it 
                top
                logs
                tag
                inspect
    

    docker的持久化


    制作本地局域网yum源

    yum install -y vsftpd

    启动
    systemctl restart vsftpd

    创建yum仓库

    mkdir -p /var/ftp/centos6.9
    mkdir -p /var/ftp/cetnos7.5

    写配置文件
    cat > /yum.repos.d/ftp.repo <<EOF

    [ftp]
    name=ftpBase
    baseurl=ftp://10.0.0.100/centos6.9
    enable=1
    gpgcheck=0

    docker cp拷贝

    docker container cp index.html qww21323:/usr/share/nginx/html/

    volumn 数据卷的使用

    实现主机和容器的数据共享 作用:数据持久化
    -v
    docker run -d --name="n1" -p 80:8080 -v /opt/html:/usr/share/nginx/html/ nginx

    查看 挂载了什么数据卷
    docker container inspect

    -v a:a -v b:b

    数据卷使用

    mkdir -p /opt/Volume/a
    mkdir -p /opt/Volume/b

    生成数据卷容器
    docker run -it --name 'nginx_volume' -v /opt/Volume/a:/opt/a -v /opt/Volume/b:/opt/b exec centos7 /bin/bash

    docker run -d -p 8080:80 --volumes-from nginx_volume --name 'n8080' nginx

    docker run -d -p 8081:80 --volumes-from nginx_volume --name 'n80802' nginx


    镜像制作

    ssh

    openssh-server

    docker image commit 镜像名字 镜像自己定义的名字
    hywhyme/centos7:v1

    启动容器
    docker container run -d --name=ssh1 /etc/init.d/sshd start 后台
    docker container run -d --name=ssh1 /etc/init.d/sshd -D 前台启动

    启动基础镜像容器
    安装需要的包
    打包镜像
    docker image commit 镜像名字 镜像自己定义的名字
    hywhyme/centos7:v1
    启动镜像
    docker container run -d --name=sshd222 -p 222:22 镜像id /usr/sbin/sshd -D

    构建企业网站定制镜像

    启动基础镜像

    docker run -it --name='bbs' -v /opt/vol/mysql:/var/lib/mysql /opt/vol/html:
    /var/www/html centos

    优化yum源

    mv /etc/yum.repos.d/*.repo /tmp
    echo -e "[ftp]
    name=ftp
    baseurl=ftp://ip/centos7
    gpgcheck=0" > /etc/yum.repos.d/ftp.repo
    yum makecache fast && yum install openssh-server httpd mysql php php-mysql -y 
    

    安装bbs
    上传bbs代码到宿主机/opt/vol/html并解压
    安装

    docker commit bbs hywhye/cents_bbs:v2

    创建启动脚本

    vim init.sh

    #!/bin/bash
    /etc/init.d/mysqld
    /etc/init.d/httpd
    /usr/sbin/sshd -D
    chmod 777 init.sh
    

    启动容器 映射端口 挂载数据卷 自动启多服务

    docker container run -d --name='bbs' -v /opt/vol/mysql:/var/lib/mysql /opt/vol/html:/var/www/html centos -p 22222:22 -p 8080:80 -p 33060:3306 cents_bbs:v2 /var/www/html/init.sh
    

    centos7

    sshd 的安装 需要自己初始化

    mkdir /var/run/sshd
    echo 'UserDNS no' >> /etc/ssh/sshd_config
    sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
    echo 'root:123456' | chpasswd
    /usr/bin/ssh-keygen -A
    

    docker build -t

    进入dockerfile 然后
    docker build -t 容器名

  • 相关阅读:
    弱爆程序员的特征值
    快捷渐变效果
    做事务性的发布数据库日志会越来越大
    判断MS SQLSERVER临时表是否存在
    SQLite实现加密
    CentOS6.4下安装TeamViewer8
    安装CDT
    CentOS中安装Courier New字体
    VS2012的Windows程序不显示DOS窗口
    log4cpp安装使用
  • 原文地址:https://www.cnblogs.com/hywhyme/p/14462239.html
Copyright © 2011-2022 走看看