zoukankan      html  css  js  c++  java
  • Docker

    Docker安装

    https://www.cnblogs.com/xishuai/p/ubuntu-install-docker.html

    Docker

    ##################### ubuntu安装docker  #####################
    
    1. 安装前检查
    
        - 内核版本
            unamae -a
        - 检查Device Mapper是否存在
            ls -l /sys/class/misc/device-mapper
    
    2. Docker推荐安装
    
        - whereis curl                        #查看curl命令是否存在
        - sudo apt-get install curl
        - curl -sSL https://get.docker.com/ubuntu/ | sudo sh
        - sudo docker version
    
    3. 运行一个容器
    
        - sudo decker run ubuntu echo "Hello world"
    
    4. 普通用户不用加sudo
    
        - sudo groupadd docker                    #增加一个用户组
        - sudo gpasswd -a ${USER} docker        #将当前用户增加到用户组中
        - sudo service docker restart             #重启服务
        - 重新进入shell
    
    5. 创建容器两种方式:
    
        - docker run IMAGE [COMMAND] [ARG...]    #创建容器的格式
        - docker run --name=自定义名 -i -t IMAGE /bin/bash
    
        1. 执行一次就结束
            - sudo decker run ubuntu echo "Hello world"
        2. 交互式容器        
            - docker run -i -t IMAGE /bin/bash
                -i --interactive=true|false        #默认是false,接收输入
                -t --tty=true|false              #默认是false,分配一个伪终端
            - docker run -i -t ubuntu /bin/bash 
    
    6. 查看容器
        
        1. docker ps -a                  #查看所有的容器
        2. docker inspect 容器id            #查看某个容器的详细信息
    
    
    7. 重启容器
    
        - docker start -i 容器id
    
    8. 守护式容器
    
        - control + Q                                 #退出,容器还在运行
        - docker run -d 镜像名 [COMMAND] [ARG...]    #启动守护式进程
    
    9. 查看日志
    
        docker logs [-f] [-t] [--tail] 容器名
            -f  --follow=true|false           #默认为false,一直跟踪日志
            -t  --timestamps=true|false     #默认为false,为日志加上时间
            --tail                             #显示多少行日志,默认显示所有日志
    
    10. 在已经运行的容器中启动新进程
    
        - docker exec [-d] [-i] [-t] 容器名[COMMAND] [ARG...]
    
    11. 查看容器中的进程
    
        - docker top 进程id
    
    12. 停止容器
    
        - docker stop 容器id                    #发送一个信号,等待容器的停止
        - docker kill 容器id                    #直接停止容器
    
    13. 在容器中部署静态网站 - 设置容器的端口映射
    
        - run [-P] [-p]
    
            -P --publish-all=True|false                  #默认为false,为容器暴露所有的端口映射
                docker run -P -i -t ubuntu /bin/bash
    
            -p --publish=[]
                docker run -p 80 -i -t ubuntu /bin/bash                    #只指定容器的端口,宿主机的端口是随机映射的
                docker run -p 8080:80 -i -t ubuntu /bin/bash            #指定宿主机的端口和容器的端口
                docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash            #指定ip和容器的端口
                docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash    #指定ip宿主机端口和容器端口
    
    14. 在容器中部署静态网站 - Nginx部署流程
    
        - 创建映射80端口的交互式容器
            docker run -p 80 --name web -i -t ubuntu /bin/bash
    
        - 安装Nginx
            apt-get install -y nginx
    
        - 安装文本编辑器vim
            apt-get install vim
    
        - 创建静态页面
            mkdir -p /var/www/html
            cd /var/www/html
            vim index.html
                <h3>我是一只小小鸟</h3>
    
        - 修改Nginx配置文件
            whereis nginx
            ls /etc/nginx/sites-enabled
            vim /etc/nginx/sites-enabled/default
                root /var/www/html;    
                                    #将网站的根目录切换
        - 运行Nginx
            nginx
            ps -ef
            control + q
    
        - 验证网站访问
            docker ps                             #查看正在运行的进程
            docker port web                        #查看端口映射
            docker top web                        #查看容器中的进程
            curl http://127.0.0.1:宿主机端口
    
        - 停止容器
            docker stop web
    
        - 启动容器
            docker start -i web
            ps -ef                             #发现重启后并没有nginx
            control + q
            docker exec web nginx              #在宿主机上启动容器的nginx
            docker top nginx                 #但是ip和端口都发生改变

    Docker镜像

    - 列出本地镜像
        - docker images [optsions] [REPOSTITORY]
            -a --all=False                 #列出所有镜像
            -f --filter=[]                #过滤
            --no-trunc=false            #不截断显示id
            -q --quiet=false             #只显示镜像的唯一id
    
        - docker images
            -REPOSITORY                 #镜像所属的仓库名
            -TAG                        #镜像所属的标签名
            -IMAGE ID                     #镜像的id名
            -CREATED                    #镜像的创建时间
    
    
    - 查找远程镜像:
        1. Docker Hub的官方网站
            https://registry.hub.docker.com
    
        2. docker search [options] TERM
            --automated=false
            --no-trunc=false            #不截断显示id
            -s --stars=0                   #用来限定显示结果的最低星级
    
    - 拉取镜像
        - docker images -a               #查看本地有哪些镜像
        - docker pull ubuntu:14.04        #拉取镜像
        - docker images -a              #再次查看
    
    - 推送镜像
        - docker push ...
    
    - 构建镜像两种方式:
    
        - docker commit                 #通过容器构建
        - docker build                    #通过Dockerfile文件构建
    
        #方式一:
        - docker commit [options] container [repository[:TAG]]
            -a             #指定作者
            -m          #详细信息
            -p             #commit会将正在运行的容器暂停,-p可以将正在运行的容器不暂停
        
        - 事例(构建容器,用于制作镜像):
            docker run -it -p 80 --name commit_test ubuntu /bin/bash
            api-get update
            api-get nginx
            exit
            docker ps -l         #显示所有镜像
            docker commit -a "小小鸟" -m "my nginx"  commit_test  xxx/commit_test       #xxx可以为dockerhub的名字
    
        #方式二:
    
        - 事例(通过dockerfile构建镜像):
            mkdir -p dockerfile/df_test
            vim dockerfile/df_test/file
                FROM ubuntu:14.04
                MAINTAINER dormancypress ....
                RUN apt-get update
                RUN apt-get install -y nginx
                EXPOSE 80
            docker build -t="镜像名称" .

    Dockerfile 

    Dockerfile
        - #注释
    
        - FROM
            FROM <image>
            FROM <image>:<tag>
    
        - MAINTAINER
            MAINTAINER 作者  联系心心
    
        - RUN  (镜像构建时运行)
            RUN <command> (shell模式)
            RUN ["executable","param1","param2"]  (exec模式)
    
        - EXPOSE
    
        - CMD  (容器运行时运行,如果使用 docker run启动一个容器时,如果指定了容器运行时候的命令,那么CMD命令将不再运行)
            CMD ["executable""param1""param2"] (exec模式)
            CMD command param1 param2 (shell模式)

    Docker 数据卷 

    - 为容器增加数据卷
        docker run -v ~/宿主机目录:/容器目录 -it --name test ubuntu /bin/bash
    
    - 为容器增加数据卷加权限
        docker run -v ~/宿主机目录:/容器目录:ro -it --name test ubuntu /bin/bash
    1、安装
    
    yum -y install docker
    systemctl start docker
    docker search centos
    docker pull centos
    docker images
    
    
    2、运行
    
    docker run centos /bin/echo 'Hello World'
    docker ps -a
    
    3、运行并进入
    docker run --name mydocker -t -i centos /bin/bash
    
    
    4、常用命令
    docker ps -a               #显示所有运行的容器
    docker ps                  #显示正在运行的容器
    docker start 7c44c65cd00a  #启动容器
    
    
    5、进入容器
    
    1)、进入正在运行的容器,退出后终止运行
    docker attach b9fa8da3a46f 
    ps axu
    
    2)、退出后容器依然在运行
    yum -y install util-linux(nsenter)
    docker inspect --format "{{.State.Pid}}" b9fa8da3a46f      #获取正在运行的容器的pid
    nsenter -t 14788 -u -i -n -p                               #进入容器
    
    3)、通过脚本进入
    vim in.sh
        #/bin/sh
        PID=$(docker inspect --format "{{.State.Pid}}" $1)
        nsenter -t $PID -u -i -n -p
    chmod +x in.sh
    ./in.sh b9fa8da3a46f
    
    
    6、随机端口映射启动nginx
    docker pull nginx
    docker run -d -P --name mynginx1 nginx
    docker ps -l
    http://192.168.8.132:32769/   #浏览器访问
    docker logs ee2e6673daa8      #查看nginx的日志
    
    7、指定端口映射
    
    docker run -d -p 91:80 --name mynginx2 nginx
    http://192.168.8.132:91/   浏览器访问
    
    
    8、数据卷
    docker run -it --name volume-test1 -v /data centos
    cd /data
    touch a.txt
    
    docker inspect e2a4852dc057          #实体机查看挂载信息,发现在虚拟机/data/目录下创建的文件在实体机中找到
    ll /var/lib/docker/volumes/324ab57cad681a0fe657338666bd825c85289222a8b2c1363bbc6a29e4f11930/_data
    
    
    指定目录挂载
    docker run -it --name volume-test2 -h nginx -v /opt:/opt centos
    
    
    9、数据卷挂载,多个容器可以使用同一个目录
    
    docker run -d --name nfs  -v /data centos
    docker run -it --name test --volumes-from nfs centos  #底下容器使用上面容器的磁盘,两者使用同一个
    
    10、手动镜像(安装nginx)
    
    docker run --name nginx-man -it centos
    yum install -y wget gcc gcc-c++ make openssl-devel vim
    cd /usr/local/src/
    wget http://nginx.org/download/nginx-1.9.3.tar.gz 
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
    useradd -s /sbin/nologin -M www
    tar zxf pcre-8.39.tar.gz
    tar zxf nginx-1.9.3.tar.gz
    cd nginx-1.9.3 && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.39/
    make && make install
    
    设置开机启动
    vim /usr/local/nginx/conf/nginx.conf
        daemon off;
    退出做镜像
    exit
    docker ps -l
    docker commit -m "my nginx" cce145f94a2a showei/my-nginx:v8
    利用新创建的镜像开启服务
    docker images
    docker run -d -p 92:80 showei/my-nginx:v8 /usr/local/nginx/sbin/nginx
    
    
    11、docfile镜像
    
    
    mkdir /opt/docker-file/nginx -p
    cd /opt/docker-file/nginx
    wget http://nginx.org/download/nginx-1.9.3.tar.gz 
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
    vim Dockerfile
    
        # this is first Dockfile
        # Version 1.0
        # Author: shaowei
    
        #Base images
        FROM centos
    
        #MAINTAINER
        MAINTAINER shaowei
    
        ADD pcre-8.39.tar.gz /usr/local/src/
        ADD nginx-1.9.3.tar.gz /usr/local/src/
    
        #RUN
        RUN yum install -y wget gcc gcc-c++ make openssl-devel vim
        RUN useradd -s /sbin/nologin -M www
    
        #WORKDIR
        WORKDIR /usr/local/src/nginx-1.9.3
    
        #RUN
        RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/
        pcre-8.39 && make && make install
        RUN echo "daemon off;" >> /usr/local/nginx/nginx.conf
    
        ENV PATH /usr/local/nginx/sbin:$PATH
        EXPOSE 80
    
        CMD  ["nginx"]
    
        
    docker build -t nginx-file:v1 .
    docker images
    
    
    12、创建私有仓库
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    #####################################
    
    
    1、安装
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    yum -y install docker-io
    /etc/init.d/docker start
    docker search centos
    docker pull centos
    docker images
    
    
    docker run centos /bin/echo 'Hello World'
    docker ps -a
    
    
    docker run --name mydocker -it centos /bin/bash
    
    docker run -d --name mydocker1 centos
    
    2、后台运行nginx,并运行
    docker run -d --name mynginx nginx
    
    yum -y install util-linux
    docker ps -l
    docker inspect --format "{{.State.Pid}}" mynginx
    nsenter --target 27879 --mount --uts --ipc --net --pid
    
    
    3、脚本进入后台运行的docker
    
    vim in.sh
        #!/bin/sh
        CNAME=$1
        CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
        nsenter --target "$CPID" --mount --uts --ipc --net --pid
    ./in.sh mynginx
    ip ro li 查看路由表
    
    
    brctl show
    
    4、随机端口映射启动
    
    docker run -d -P --name mynginx1 nginx
    docker ps -l
    http://192.168.8.128:32769/   浏览器访问
    
    
    5、指定端口映射
    
    docker run -d -p 91:80 --name mynginx2 nginx
    
    http://192.168.8.128:91/   浏览器访问
    
    
    6、数据卷
    docker run -it --name volume-test1 -h nginx -v /data centos    #主机名写错了,随便
    docker inspect -f {{.Volumes}} volume-test1   #查看容器的信息
    
    指定目录挂载
    docker run -it --name volume-test2 -h nginx -v /opt:/opt centos
    
    
    7、数据卷容器
    
    docker run -it --name volue-test4 --volumes-from volume-test1 centos
    
    8、手动镜像(安装nginx)
    
    docker run --name nginx-man -it centos
    yum install -y wget gcc gcc-c++ make openssl-devel vim
    cd /usr/local/src/
    wget http://nginx.org/download/nginx-1.9.3.tar.gz 
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
    useradd -s /sbin/nologin -M www
    tar zxf pcre-8.39.tar.gz
    tar zxf nginx-1.9.3.tar.gz
    cd nginx-1.9.3 && ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.39/
    make && make install
    
    设置开机启动
    vim /usr/local/nginx/conf/nginx.conf
        daemon off;
    退出做镜像
    exit
    docker ps -l
    docker commit -m "my nginx" cce145f94a2a showei/my-nginx:v8
    利用新创建的镜像开启服务
    docker images
    docker run -d -p 92:80 showei/my-nginx:v8 /usr/local/nginx/sbin/nginx
    
    
    9、docfile镜像
    
    mkdir /opt/docker-file/nginx -p
    cd /opt/docker-file/nginx
    wget http://nginx.org/download/nginx-1.9.3.tar.gz 
    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
    vim Dockerfile
    
        # this is first Dockfile
        # Version 1.0
        # Author: shaowei
    
        #Base images
        FROM centos
    
        #MAINTAINER
        MAINTAINER shaowei
    
        ADD pcre-8.39.tar.gz /usr/local/src/
        ADD nginx-1.9.3.tar.gz /usr/local/src/
    
        #RUN
        RUN yum install -y wget gcc gcc-c++ make openssl-devel vim
        RUN useradd -s /sbin/nologin -M www
    
        #WORKDIR
        WORKDIR /usr/local/src/nginx-1.9.3
    
        #RUN
        RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/
        pcre-8.39 && make && make install
        RUN echo "daemon off;" >> /usr/local/nginx/nginx.conf
    
        ENV PATH /usr/local/nginx/sbin:$PATH
        EXPOSE 80
    
        CMD  ["nginx"]
    
        
    docker build -t nginx-file:v1 .
    docker images
    
    
    10、压测
    
    
    安装压力测试stress
    cd /opt/docker-file/stress
    wget http://mirrors.aliyun.com/repo/epel-6.repo
    vim Dockerfile
        FROM centos
        ADD epel-6.repo /etc/yum.repos.d/
        RUN yum -y install stress && yum clean all
        ENTRYPOINT ["stress"]
    docker build -t stress .
    
    查看CPU分配的情况(不要在物理机下执行)
    docker run -it --rm stress --cpu 1 
    docker run -it --rm stress -c 512 --cpu 1
    
    查看内存分配的情况(不要在物理机下执行)
    
    docker run -it --rm -m 128m stress --vm 1 --vm-bytes 120m --vm-hang 0
    
    
    
    
    11、网络
    
    brctl show   #查看网络
    
    
    12、创建私有仓库
    
    docker pull registry
    docker run -d -p 5001:5000 registry
    把nginx的id加入私有仓库
    docker tag e25b44da7031 192.168.8.128:5001/test/es:v1 
    
    docker push 192.168.8.128:5001/test/es:v1
    
    
    
    
    docker run -it -d --name shipyard-rethinkdb-data --entrypoint /bin/bash shipyard/rethinkdb -l
    centos环境
  • 相关阅读:
    57.纯 CSS 创作一双黑暗中的眼睛
    b1.关于em和px的关系
    56.纯 CSS 描述程序员的生活
    55.1拓展之边框border-width属性。
    55.纯 CSS 创作一个太阳、地球、月亮的运转模型
    54.纯 CSS 创作一副国际象棋
    53.纯 CSS 创作一个文本淡入淡出的 loader 动画
    52.纯 CSS 创作一个小球绕着圆环盘旋的动画
    ps
    05
  • 原文地址:https://www.cnblogs.com/golangav/p/9192557.html
Copyright © 2011-2022 走看看