zoukankan      html  css  js  c++  java
  • Dcker的使用

              Docker

    .           一、容器

    容器是一种基础工具;泛指任何可用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳、存储、运输物品;

    人类使用容器的历史至少有十万年,甚至有数百万年的历史

    如:瓶、罐、箱、桶、袋

    .            二、LXC

    主机级虚拟化

           Type-I:

           Type-II:VMware、kvm、zen

     Linux Namespace:

    UTS:以名称空间为单位进行隔离,在同一个内核上创建多个名称空间,每个空间可以有单独的名称

    Mount:也是名称空间,可以把挂载的文件系统切分为多个

    IPC:内核级管理的资源,可以再内核切换为Docker,每一个里边的进程可以IPC通信,但是不能跨边界

    PID:不同用户的进程就是通过pidnamespace隔离开的,且不同 namespace 中可以有相同PID

    User:每个container可以有不同的 user 和 group id, 也就是说可以以container内部的用户在container内部执行程序而非Host上的用户。

    Net:有了 pid namespace, 每个namespace中的pid能够相互隔离,但是网络端口还是共享host的端口。网络隔离是通过netnamespace实现的

    nmp

    machine + swarm + compose

    mesos + marathon

    kubernetes à k8s

    .           三、Docker 的安装使用

    安装

           清华大学镜像网源:wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

           [root@C7-1 yum.repos.d]#vim docker-ce.repo

           %s@https://download.docker.com/@https://mirrors.tuna.tsinghua.edu.cn/docker-ce/@g         # 下载后是docker的官方源,修改为清华大学源

           yum install docker-ce            # 安装

    配置文件

           docker-ce:/etc/docker/daemon.json

    docker镜像加速

           docker cn

           阿里云加速器

           中国科技大学

    {

      "registry-mirrors": ["https://registry.docker-cn.com"]

    }

    配置加速

    [root@C7-1 ~]#mkdir /etc/docker

    [root@C7-1 ~]#vim /etc/docker/daemon.json

    docker

           docker version

           docker info

    常用操作

    docker search:搜索

    docker pull:下载到本地

                  [root@C7-1 ~]#docker pull quay.io/coreos/flannel:v0.11.0-arm64

    docker images:

           [root@C7-1 ~]#docker image pull nginx:1.14-alpine        # 下载镜像

           [root@C7-1 ~]#docker image ls        # 查看下载的镜像

           docker container:

                         docker container run           # 创建并启动

                                -t:打开tty终端

                                -i:交互式

                                --name:名字

                                --network:网络

                                --rm :停止容器后直接删除

                                -d --detach:后台

                         docker container exec

           docker commit    # 制作镜像

                  -a --author string:作者

                  -c --change list:修改原有基础镜像的指令

                  -p --pause:现将容器暂停

           docker tag         # 打标签

           docker push

           docker login

                  -u,--username    用户名   registry.cn-hangzhou.aliyuncs.com   后便可以跟服务器地址

           docker logout

           docker save    导出

                  -o:名字

           docker load    导入

                   

    docker network

                  docker network ls   # 查看网络

    [root@C7-1 ~]#docker inspect web1

    使用例子

    [root@C7-1 ~]#docker pull busybox    # 下载
    
    [root@C7-1 ~]#docker image pull nginx:1.14-alpine
    
    [root@C7-1 ~]#docker container run --name b1 -it busybox:latest    # latest是标签
    
    [root@C7-1 ~]#docker container run --name web1 -d nginx:1.14-alpine    # 后台运行
    
    [root@C7-1 ~]#docker container run --name kvstor1 -d redis:4-alpine    # 如果没有则会从网络中下载
    
    [root@C7-1 ~]#docker container exec -it kvstor1 /bin/sh     # 进入容器的终端

      

    联合挂载使用到的文件

           Aufs(advanced multi-layered unfication filesystem):高级多层统一文件系统,Aufs是之前UnionFS的重新实现,由Junjiro Okajima开发

           Storage:现在Centos7使用的就只这种文件系统,overlay2需要建立在也已经用的文件系统上,所以在Cetno7中,前端使用overlay2后端使用xfs

     

    Registry

           由某特定的docker镜像的所有迭代版本组成的镜像仓库

           每个仓库明可以包含多个tag,每个tag对应一个镜像,每个镜像可以对应多个tag

    制作镜像:docker commit

           生成途径

                  dockerfile

                  基于容器制作

                  Docker Hub automated builds

           居于容器制作:

    [root@C7-1 ~]#docker run --name b1 -it busybox    # 制作一个容器
    
    / # mkdir -p /data/html      # 创建目录
    
    / # echo "<h1>busybox httpd server.</h1>" > /data/html/index.html   # 创建主页文件
    
    # 再开一个终端,应为如果退出的话容器就会停止
    
    [root@C7-1 ~]#docker commit -p b1           # -p暂停容器
    
    [root@C7-1 ~]#docker image ls   # 查看
    
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    
    <none>                   <none>              7cfd827c15d4        6 seconds ago       1.2MB
    
    [root@C7-1 ~]#docker tag 7cfd827c15d4 p-pp/busybox_httpd:v0.1-1    # 打标签
    
    [root@C7-1 ~]#docker image ls   # 打完标签后查看
    
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    
    p-pp/busybox_httpd       v0.1-1              7cfd827c15d4        2 minutes ago       1.2MB
    
    [root@C7-1 ~]#docker tag p-pp/busybox_httpd:v0.1-1 p-pp/busybox_httpd:latest   # 打一个新的标签
    
    [root@C7-1 ~]#docker image ls    # 再次查看,可以看到两个,Id是一样的
    
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    
    p-pp/busybox_httpd       latest              7cfd827c15d4        4 minutes ago       1.2MB
    
    p-pp/busybox_httpd       v0.1-1              7cfd827c15d4        4 minutes ago       1.2MB
    
     
    
    [root@C7-1 ~]#docker commit  -a "Mrxuan<www.p-pp.cn>"  -c 'CMD [ "/bin/httpd","-f","-h","/data/html" ]' -p b1 p-pp/busybox_httpd:v0.2-1
    
    [root@C7-1 ~]#docker run --name p2 p-pp/busybox_httpd:v0.2-1
    
     
    
    # 再打开一个终端,使用命令查看ip
    
    [root@C7-1 ~]#docker inspect p2
    
                        "Gateway": "172.17.0.1",
    
                        "IPAddress": "172.17.0.3",
    
    [root@C7-1 ~]#curl 172.17.0.3
    
    <h1>busybox httpd server.</h1>
    
     

    将自己的docker镜像保存至dockerhub:docker push 

    申请账号:https://hub.docker.com/signup

     

           示例:

    [root@C7-1 ~]#docker login -u dong9205   #登录,用户名为dong9205
    
    Password:
    
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    
    Configure a credential helper to remove this warning. See
    
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
     
    
    Login Succeeded    # 登录成功的提示
    
    [root@C7-1 ~]#docker image ls    # 名字要和创建的仓库名一致
    
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    
    dong9205/busybox         v0.2-1              8f6be032912d        31 minutes ago      1.2MB
    
    dong9205/busybox         v0.1-1              7cfd827c15d4        About an hour ago   1.2MB
    
    [root@C7-1 ~]#docker push dong9205/busybox   # 像dockerhub推送

     

           镜像推到阿里云仓库

    注册阿里云账号,之后打开网站:https://cr.console.aliyun.com,或https://dev.aliyun.com

     

     

    [root@C7-1 ~]#docker tag dong9205/busybox:v0.2-1 registry.cn-hangzhou.aliyuncs.com/dong9205/busybox:v0.2-1   #标签更改一致
    
    [root@C7-1 ~]#docker logout   # 退出dockerhub的账号
    
    [root@C7-1 ~]#docker login --username=socket轩 registry.cn-hangzhou.aliyuncs.com    # 登录,密码为单独设置的密码
    
    Password:
    
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    
    Configure a credential helper to remove this warning. See
    
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
     
    
    Login Succeeded
    
    [root@C7-1 ~]#docker push registry.cn-hangzhou.aliyuncs.com/dong9205/busybox   # 推送

     

      

    镜像的导入导出

    [root@C7-1 ~]#docker save -o myimages.gz dong9205/busybox:v0.2-1 dong9205/busybox:v0.1-1
    
    [root@C7-1 ~]#docker load -i myimages.gz
  • 相关阅读:
    nginx 特定目录禁止php执行
    linux awk命令详解
    漫谈大型网站架构
    ThinkPHP 自动验证实例
    使用jquery时一些小技巧的总结
    fputcsv 导出CSV、Excel DownLoad
    文件操作总结
    rc.local 开机自启脚本无法启动
    Windows pycharm Terminal使用Anaconda 的Prompt
    解决hash冲突方法
  • 原文地址:https://www.cnblogs.com/-xuan/p/10831079.html
Copyright © 2011-2022 走看看