zoukankan      html  css  js  c++  java
  • CentOS 7 x64 docker 使用点滴

    CentOS 7 安装 docker

    yum search docker  查看是否 有docker包

    yum info docker  版本为1.3.2

    yum -y install docker 安装docker

    docker --version

    Docker version 1.3.2, build 39fa2fa/1.3.2

    关闭 firewalld  与 Selinux

    service docker start 启动

    systemctl enable docker 设置开机启动

    打开 Linux 内核 转发 添加:

    vi /etc/sysctl.conf

    net.ipv4.ip_forward = 1 

    保存 运行 sysctl -p 生效

    修改docker 环境变量 docker 容器存储路径 ( 默认路径为 /var/lib/docker

    docker info    查看环境变量

    vi /etc/sysconfig/docker

    OPTIONS=--selinux-enabled -H fd://

    修改为如下

    OPTIONS=--selinux-enabled --graph=/opt/docker/images -H fd://

    重启docker    

    systemctl restart docker.service

    docker info  查看是否已经变更

    获取CentOS 镜像

    docker pull centos:latest    下载最新版本的镜像

    或者

    docker pull centos:centos6   下载centos6镜像等

    查看安装镜像的情况

    docker images

    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

    centos              7                   8efe422e6104        2 weeks ago         224 MB

    centos              centos7             8efe422e6104        2 weeks ago         224 MB

    centos              latest              8efe422e6104        2 weeks ago         224 MB

    在docker下运行 shell bash

    docker run -i -t <IMAGE ID>  /bin/bash      //<IMAGE ID> 通过docker images命令获取,这里为510cf09a7986

    docker run -i -t 8efe422e6104 /bin/bash   

    docker run -i -t <IMAGE ID>  /bin/bash    //此方式运行的容器,退出后容器就会自动关闭, 此方式是创建一个新的容器.

    docker run -i -t -v /opt/software:/opt/software <IMAGE ID> /bin/bash    //-v 为挂载本地目录, 第一个/opt/software 为本地目录 : 后面为容器目录,目录不存在会自动创建

    执行以后切换到 

    [root@8efe422e6104 /]#

    在容器下安装 ssh  passwd  

    yum -y install tar unzip openssh-server passwd lrzsz bzip2 

    安装完毕以后 修改root 密码

    passwd  

    修改 时区 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    修改字符编码  echo 'LANG="en_US.UTF-8"' >> /etc/locale.conf

    -------------------------------------------------------------------------------

    centos 7 启动sshd 提示如下:

    Could not load host key: /etc/ssh/ssh_host_rsa_key

    Could not load host key: /etc/ssh/ssh_host_ecdsa_key

    创建key

    ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key

    ssh-keygen -t ecdsa -b 521 -f /etc/ssh/ssh_host_ecdsa_key

    -------------------------------------------------------------------------------

    然后再 安 装jdk 和 tomcat !!  

    安装过程与物理机安装过程相同 安装完毕以后

    返回 物理机  

    docker ps -a  可查看运行的docker shell 

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS               

    c6291c68a800        centos:7            "/bin/bash"         3 hours ago         Exited (0) 3 minutes ago        

    docker commit <CONTAINER ID> <name>      //修改镜像IMAGE名称

    docker commit c6291c68a800 tomcat     //将此镜像的名称保存为 tomcat

    docker images

    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

    tomcat-1            latest              983e0f7ea1fd        37 minutes ago      779.8 MB

    docker ps -a

    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                  

    ed1efc2c7d01        tomcat:latest     "/bin/bash"         9 minutes ago       Exited (0) 3 minutes ago     

    docker start <CONTAINER ID>         //<CONTAINER ID> 通过docker ps -a命令获取 启动此容器

    docker attach <CONTAINER ID>        //返回到此容器中

    docker start -i <CONTAINER ID>      // 启动此容器后连接到此容器中

    启动容器的SSH 并映射端口

    docker run -d -p 50001:22 <IMAGE ID> /usr/sbin/sshd -D    //<IMAGE ID> 为docker images 获取 需要获取tomcat的IMAGE ID

    ssh -p 50001 127.0.0.1    进入容器

    启动tomcat    查看容器ip

    返回物理机

    curl -I 容器ip:8080  查看是否正常 

    -------------------------------------------------------------------------------------------------------

    其他运行命令

    查看 docker 运行日志

    docker logs -f <CONTAINER ID>        

    删除某个容器

    docker rm  <CONTAINER ID>                //<CONTAINER ID> 通过docker ps -a命令获取

    删除所有容器

    docker rm `docker ps -a -q`

    停止所有容器

    docker stop `docker ps -a -q`

    删除某个镜像

    docker rmi <IMAGE ID >                  //<IMAGE ID> 通过docker images命令获取

    导出某个镜像

    docker save <IMAGE ID> > /tmp/myimage.tar

    导入某个镜像

    docker load < /tmp/myimage.tar

    -------------------------------------------------------------------------------------------------------------------------------

    -------------------------------------------------------------------------------------------------------------------------------------

    docker 设置独立IP 并映射端口          ( 必须开启 Linux 内核转发 net.ipv4.ip_forward )

    物理机 单网卡 绑定多IP ..  如 em1   绑定 em1:1     

    (CentOS 7  绑定网卡  必须有 DEVICE=em1:1  这种名称)

        

    em1  ip 为 172.24.0.11       绑定em1:1  IP 为 172.24.0.100     em1:2  IP 为 172.24.0.101  以SSH 端口 为例操作如下

    物理机 不能与容器端口冲突, 容器与容器之间可以。  

    修改 172.24.0.11 的SSH 端口为 999    映射 IP 172.24.0.100  与  172.24.0.101 端口

    docker run -h="web1" --name web1 -d -p 172.24.0.100:22:22 <images ID> /etc/rc.local

    docker run -h="web2" --name web2 -d -p 172.24.0.101:22:22 <images ID> /etc/rc.local

    -------------------------------------------------------------------------------------------------------------------------------------

    docker 自建私有仓库

    首先创建存储 镜像的目录 

    mkdir -p /opt/registry

    默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下.

    执行

    docker pull registry                 #安装docker私有仓库

    启动 registry

    docker run -d -e SETTINGS_FLAVOR=dev -e STORAGE_PATH=/tmp/registry -v /opt/registry:/tmp/registry -p 5000:5000 registry

    --------------------------------------------------------------------------

     可用 http://ip:5000    来访问 

    ---------------------------------------------------

     提示如下 表示启动完成

    ""docker-registry server""

    ----------------------------------------------------

    在客户机上面:

    #docker images

    dev                    latest              a7efdd5c0690        5 days ago          989.2 MB

    #docker tag a7efdd5c0690 172.24.0.14:5000/dev  

    #docker images

    dev                    latest              a7efdd5c0690        5 days ago          989.2 MB

    172.24.0.14:5000/dev   latest              a7efdd5c0690        5 days ago          989.2 MB

    #docker push 172.24.0.14:5000/dev

    -------------------------------------------------------------------------------------------------------------------------------------------------

    提示如下:

    2015/03/16 15:34:35 Error: Invalid registry endpoint https://172.24.0.12:5000/v1/: Get https://172.24.0.12:5000/v1/_ping: dial tcp 172.24.0.12:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 172.24.0.12:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/172.24.0.12:5000/ca.crt

    -------------------------------------------------------------------------------------------------------------------------------------------------

    解决办法 禁用https 验证

    vi /etc/sysconfig/docker

    在 OPTIONS=--selinux-enabled 后面添加  --insecure-registry 172.24.0.14:5000  

    然后重启 docker !! 

    在次运行

    #docker push 172.24.0.14:5000/dev

    提示如下 为成功

    ----------------------------------------------------------------------------------------------------------------------

    The push refers to a repository [172.24.0.14:5000/dev] (len: 1)

    Sending image list

    Pushing repository 172.24.0.14:5000/dev (1 tags)

    511136ea3c5a: Image successfully pushed 

    5b12ef8fd570: Image successfully pushed 

    88f9454e60dd: Image successfully pushed 

    a7efdd5c0690: Image successfully pushed 

    Pushing tag for rev [a7efdd5c0690] on {http://172.24.0.14:5000/v1/repositories/dev/tags/latest}

    -------------------------------------------------------------------------------------------------------------------------

    私有仓库查询方法

    curl http://172.24.0.14:5000/v1/search

    如下所示  有 dev 表示 上传成功

    --------------------------------------------------------------------------------------------------------------------------

    {"num_results": 1, "query": "", "results": [{"description": "", "name": "library/dev"}]}

    --------------------------------------------------------------------------------------------------------------------------

    在其他客户机上访问和下载私有仓库的镜像

    docker pull 172.24.0.14:5000/dev

    ----------------------------------------------------------------------------------------------------------------------------

    docker pull 172.24.0.14:5000/dev

    Pulling repository 172.24.0.14:5000/dev

    88f9454e60dd: Download complete 

    511136ea3c5a: Download complete 

    5b12ef8fd570: Download complete 

    Status: Image is up to date for 172.24.0.14:5000/dev:latest

    ----------------------------------------------------------------------------------------------------------------------------

    docker 使用 crontab 服务

    yum 安装 crontab

    yum -y install cronie

    启动服务

    /usr/sbin/crond

    crontab -e   添加服务

    docker 下使用 logrotate 服务 切割日志

    安装 logrotate 服务

    yum -y install logrotate

    创建 切割规则 

    cd /etc/logrotate.d

    vi  nginx

    ------------------------------------------------------------------

    /opt/local/nginx/logs/*.log

    {

    daily                 #每天轮询一次

    create 644 upload upload

    dateext               #使用日期作为轮转后的日志文件的后缀

    delaycompress         #推迟压缩

    rotate 7              #一次将存储7个归档日志。对于第8个归档,时间最久的归档将被删除。

    sharedscripts         #只为整个日志组运行一次的脚本

    postrotate            #引入在轮换过日志之后要运行的脚本

        if [ -f /opt/local/nginx/nginx.pid ]; then

            kill -USR1 `cat /opt/local/nginx/nginx.pid`

        fi

    endscript

    }

    -------------------------------------------------------------------

    ps:  docker 下不默认没有crond 必须启动crond 才能自动轮询

    yum -y install cronie

    启动服务

    /usr/sbin/crond

    logrotate 的启动脚本为

    /etc/cron.daily/logrotate

  • 相关阅读:
    微信 token ticket jsapi_ticket access_token 获取 getAccessToken get_jsapi_ticket方法
    PHP 日志 记录 函数 支持 数组 对象 新浪 sae 环境 去掉 空格 换行 格式化 输出 数组转字符串
    原生 原始 PHP连接MySQL 代码 参考mysqli pdo
    PHP 数字金额转换成中文大写金额的函数 数字转中文
    使用PHPMailer发送带附件并支持HTML内容的邮件
    设置输出编码格式 header 重定向 执行时间 set_time_limit 错误 报告 级别 error_reporting
    html5 bootstrap pannel table 协议 公告 声明 文书 模板
    指向指针的指针
    二级指针
    c语言:当指针成为参数后
  • 原文地址:https://www.cnblogs.com/jicki/p/5548605.html
Copyright © 2011-2022 走看看