• docker基础


    https://www.docker.com    #官网地址

    https://hub.docker.com    #docker hub地址,很多镜像都在里面

    rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm   #安装epel源

    https://opsx.alibaba.com/mirror    #docker阿里镜像

    cd /etc/yum.repos.d

    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo      ##下载docker  yum文件

    安装

    yum install -y yum-utils device-mapper-persistent-data lvm2

    yum   -y   install docker-ce   #安装docker 

    启动docker

    systemctl start docker

    systemctl enable docker 开机自启动

    查看docker版本和信息

    docker --version

    docker info

    获取镜像和查看 导出 导入 删除镜像

    docker search centos    ##搜索镜像

    docker pull centos    ##下载镜像

    docker images  #查看本地镜像

    docker save  -o centos.tar centos;lastest   ##导出镜像

    docker load --input centos.tar    ##导入镜像

     docker rmi  ID    ###删除镜像

    docker rmi -f 镜像名称   ##强制删除镜像

    启动容器 停止 查看  进入 删除

    docker run --name -h hostname

    docker run --name mydocker  -it  nginx  /bin/bash   #启动并进入容器

    docker start coentos 启动容器

    docker stop CONTANINER ID   ##停止容器

    docker ps  -a -l

    docker ps  -a -q    #显示所有容器ID

    docker exec |nsenter

     docker rm -f  容器ID   #删除容器

    docker attach mydocker   进入docker容器

    yum  -y install util-linux  #安装nsenter

     docker inspect mydocker   #获取docker容器详情

    docker inspect --format   "{{ .State.Pid }}"    mydocker   获取容器第一个进程的PID

    nsenter --target 3767 --mount -uts --ipc --net --pid    #进入容器

    docker exec mydocker whoami    ##在一个正在执行的容器里直接执行命令

    docker exec -it CONTAINER ID /bin/bash  #进入docker容器

    docker run  --rm centos /bin/echo   "hehe"   #容器执行完毕自动退出并删除  

    docker run  -d  -p 3333:80   --name  nginx-demo   nginx  #后台启动容器 指定端口

     docker run -d --rm --name nginx-test1 -v /data  nginx   #容器退出自动删除

    docker  run  -d  --name  volume-demo   -v /data:/data   nginx   ##宿主机的data目录挂载到容器的/data目录

    docker run -d  --name   nginx-volume-demo   --volumes-from  volume-demo  nginx   ##使用volume-demo的存储

    构建镜像

    手动

    docker run --name mynginx -it centos /bin/bash   #进入mynginx容器

    yum   -y   install   nginx

    docker commit -m "My ningx" 9b78cd5667cb  mynginx:v1  ##提交

    docker run -d -p 91:80 mynginx:v1 nginx  ##启动镜像

    通过dockerfile自动构建

    mkdir -p  /opt/dockerfile/mynginx

    #cat Dockerfile

    #Base Image
    FROM centos

    #Maintainer
    MAINTAINER    LIU  xxxxxx@abc.com

    #RUN
    RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
    RUN yum -y install nginx --enablerepo=epel
    RUN echo "daemon off;" >>/etc/nginx/nginx.conf
    ADD index.html /usr/share/nginx/html/index.html
    EXPOSE 90
    CMD  ["nginx"]

    FROM:每个dockerfile的第一条指令都是FROM。指定一个已经存在的镜像作为基础镜像

    MAINTAINER:指定作者及联系地址

    RUN:当前镜像中运行的指令

    EXPOSE:告诉docker该容器内的应用程序会使用指定端口

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

    docker build -t mynginx:v2 .

    通过supervisor管理容器多进程

    yum -y install  supervisor

    ls -l /etc/supervisord.*

    以构建centos镜像+ssh为例

     1 #Base Image
     2 FROM centos
     3 
     4 #Maintainer
     5 MAINTAINER liumengjie@koolearn.com
     6 
     7 #RUN
     8 RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
     9 RUN yum install -y wget sudo git tree net-tools supervisor  openssh-clients openssh-server openssl-devel&& yum clean all
    10 RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
    11 RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
    12 RUN ssh-keygen -A -t dsa -f /etc/ssh/ssh_host_dsa_key
    13 
    14 #set root pwd
    15 
    16 RUN echo "root:123.com"| chpasswd
    17 
    18 #For Supervisor
    19 ADD supervisord.conf  /etc/supervisord.conf
    20 ADD sshd.ini  /etc/supervisord.d/sshd.ini
    21 
    22 #Outside port
    23 EXPOSE 22
    24 
    25 CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
    cat sshd.ini
    
    [program:sshd]
    command=/usr/sbin/sshd -D       
    process_name=%(program_name)s 
    autorestart=true         
    

      

    修改  nodaemon=true

    docker build -t system/centos .    ##构建镜像

    docker run -d --name centos-ssh-supervisor -p 2222:22 system/centos    ##启动镜像

    ps -aux   #查看进程

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.8  0.1 115572 14692 ?        Ss   13:39   0:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
    root        10  0.0  0.0 112724  4216 ?        S    13:39   0:00 /usr/sbin/sshd -D
    root        11  1.1  0.0 155144  5968 ?        Ss   13:40   0:00 sshd: root@pts/0
    root        13  0.2  0.0  15252  1916 pts/0    Ss   13:40   0:00 -bash
    root        26  0.0  0.0  55140  1796 pts/0    R+   13:40   0:00 ps aux
    

     supervisorctl   status   ##查看supervisor管理的进程

     构建JDK+TOMCAT运行环境

    mkdir  -p  /opt/dockerfile/runtime/tomcat  #新建目录

    wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz     #下载tomcat

    cat  DOckerfile
    
    #Base Image
    FROM system/centos
    
    #Maintainer
    MAINTAINER liumengjie@koolearn.com
    
    #RUN
    RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel && yum clean all
    ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk
    
    #Tomcat
    ADD apache-tomcat-8.5.35.tar.gz /usr/local
    RUN ln -s /usr/local/apache-tomcat-8.5.35 /usr/local/tomcat
    
    #For Supervisor
    ADD tomcat.ini  /etc/supervisord.d/tomcat.ini
    ENV TOMCAT_HOME /usr/local/tomcat
    
    #Outside port
    EXPOSE 22 8080
    
    CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
    

      

    cat tomcat.ini
    
    [program:tomcat]
    command=/usr/local/tomcat/bin/catalina.sh run
    process_name=%(program_name)s 
    autorestart=true
    

      

    docker build -t runtime/tomcat .   #构建

    docker run -d --name tomcat-demo -p 8080:8080  -p 8888:22 runtime/tomcat   ##启动

    http://10.1.1.1:8080/     访问测试

     使用harbor构建私有仓库

    # wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.0-rc1.tgz     ###下载

    tar zxvf harbor-offline-installer-v1.7.0-rc1.tgz      #解压

    cd harbor/

    yum -y install python-pip

    pip install docker-compose   #安装依赖

    cat /etc/docker/daemon.json   #添加信任

    {
    "registry-mirrors": ["https://tdimi5q1.mirror.aliyuncs.com"],
    "insecure-registries": ["http://10.155.20.195"]
    }

    systemctl restart docker    #重启docker

    修改 harbor.cfg

    hostname = 10.155.20.195

    ./install.sh   #启动

    浏览器访问  http://10.10.20.10/harbor

    docker tag app/jenkins 1010.20.10/app/jenkins:v1    #给镜像打标签

    docker push 1010.20.10/app/jenkins    #推送到harbor

  • 相关阅读:
    python全栈开发day54-mysql库操作、表操作、数据类型、完整性约束
    CentOS7.5安装nodejs 转
    python全栈开发day53-mysql
    python全栈开发day52-bootstrap的运用
    python全栈开发day51-jquery插件、@media媒体查询、移动端单位、Bootstrap框架
    机器学习之交叉验证和网格搜索
    机器学习之混淆矩阵
    机器学习之朴素贝叶斯算法
    机器学习之TF-IDF
    机器学习之K-近邻算法
  • 原文地址:https://www.cnblogs.com/liumj0305/p/9980321.html
Copyright © 2020-2023  润新知