zoukankan      html  css  js  c++  java
  • Docker

    核心概念
    Docker大部分的操作都围绕着它的三大核心概念: 镜像容器仓库

    ==============================================================================================================================================

    一、Ubuntu16.04安装docker(在线方式)

    ## 1.卸载可能存在的旧版本

    apt-get remove docker docker-engine docker-ce docker.io

    ## 2.更新apt包索引

    apt-get update

    ## 3.安装以下包以使apt可以通过HTTPS使用存储库(repository)

    apt-get install -y apt-transport-https ca-certificates curl software-properties-common

    ## 4.添加Docker官方的GPG密钥

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    ## 成功后应该显示OK

    ## 5.设置stable存储库

    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    

    ## 6.再更新一下apt包索引

    apt-get update

    ## 7.安装最新版本的Docker CE

    apt-get install -y docker-ce

    ## 8.验证
    ## 8.1查看docker服务是否启动

    systemctl status docker

    ## 或如下命令

    service docker status

    ## 8.2若未启动,则启动docker服务

    systemctl start docker

    ## 或如下命令

    service docker start

    ## 8.3经典的hello world

    docker run hello-world 

    ## 输入以上命令后,窗口有输出,表示docker安装成功

    二、镜像相关操作
    1.配置加速器


    国内从Docker Hub下载镜像速度很慢,我们可以配置阿里云专属加速器来解决
    1.浏览器访问并登陆阿里云(淘宝或支付宝帐号登陆也可以)
    https://www.aliyun.com/


    2.登陆后,进入阿里云“控制台”,搜索“容器镜像服务”,然后点击菜单:“镜像中心”-->“镜像加速器”
    最后,将容器右边的“加速器地址”复制下来即可
    https://10j3qd6u.mirror.aliyuncs.com

    3.设置容器镜像服务的密码(可选)
    容器镜像服务(Container Registry)提供多地域镜像托管能力,稳定的国内外镜像构建服务,便捷的镜像授权功能,
    方便用户进行镜像全生命周期管理。在开通流程中,您需要设置独立于账号密码的Registry登录密码,便于镜像的上传、下载。
    注1:此步骤为可选,如果需要使用阿里云来管理你的镜像 ,此步骤必须设置

    4.修改docker相关配置
    linux输入命令,
    vi /etc/docker/daemon.json
    添加下面内容(地址替换成上面的加速器地址):
    {
    "registry-mirrors":["你的阿里云专属加速器地址"]
    }
    例如:

    {"registry-mirrors":["https://10j3qd6u.mirror.aliyuncs.com"]}

    5.重新加载daemon

    systemctl daemon-reload

    6.重启docker

    systemctl restart docker
    

      

    1.搜索镜像
    docker search 镜像名称
    例如:docker search mysql

    2.下载镜像
    docker pull 镜像名

    例如, 获取一个 Ubuntu 16.04 系统的基础镜像可以使用如下的命令
    ## 未指定版本一般会使用latest(最新的)版本
    docker pull ubuntu
    ## 或者直接指定版本

    docker pull ubuntu:16.04 
    docker pull ubuntu:18.04

    3.查看宿主机上的镜像

    docker images 

    注1:查看image位置
    ## /var/lib/docker为docker默认安装目录

    cd /var/lib/docker/containers  
    ls
    

      

    4.删除镜像
    docker rmi 镜像ID/标签
    例如:

    docker rmi 2ca708c1c9cc
    docker rmi ubuntu:latest 或 docker rmi ubuntu:16.04

    注1:如果提示镜像被使用,需要先停止某个ID的容器,那么要先删除容器再删除镜像。或者强制删除镜像

    docker rmi -f ubuntu:16.04 

    -f, -force: 强制删除镜像, 即使有容器依赖它
    注意, 通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,
    先删除依赖该镜像的所有容器, 再来删除镜像

    ## 下面的内容后续再讲
    5.保存镜像

    docker commit -m="description about images" --author="author" {container_id} {repository/images_name:tag}

    6.推送镜像到代码仓库(以阿里云docker平台为例)

    docker login --username=your_username registry.cn-beijing.aliyuncs.com
    docker tag [ImageId] registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]
    docker push registry.cn-beijing.aliyuncs.com/[命名空间]/[仓库名称]:[镜像版本号]

    7.使用Dockerfile创建新的镜像(注意:末尾有一个点,表示当前路径)

    docker build -t "repository/images_name:tag" . 


    三、 Docker容器
    容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。所不同的是,
    镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时,容器中的应用进程处于运行状态

    如何理解:类->实例,镜像->容器

    常用操作
    1.启动、停止、重启容器命令
    docker start 容器ID或name
    docker stop 容器ID或name
    docker restart 容器ID或name

    2.查看当前运行的容器
    docker ps

    3.查看所有容器
    docker ps -a

    4.删除容器
    docker rm 容器ID

    注1:主要支持的选项包括
    -f, --force=false 是否强行终止并删除一个运行中的容器
    -1, --link=false :删除容器的连接 ,但保留容器;
    -v, --volumes=false :删除容器挂载的数据卷
    注2:删除容器,还可以参考附录三,可根据条件删除

    5.创建容器(重点)
    docker create -it ubuntu:latest
    docker create -it --name tomcat01 ubuntu:latest

    注1:命令说明
    create:关键字
    ubuntu:latest:即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像,
    不存在就从公有仓库下载
    -it:是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端
    --name:指定生成的容器的名字,允许空,如果不指定会自动生成

    注2:此时,通过如下命令,可以查看到刚刚创建的容器
    docker ps - a
    注3:create命令新建的容器处于停止状态,可以使用start命令来启动它
    docker start 容器ID
    注4:docker容器状态可参考“images/docker容器状态转换图.png”(重点~~~重点~~~重点~~~)

    6.启动容器(重点)
    docker start 容器ID/name

    注1:更多的时候,需要让 Docker 容器在后台以守护态( Daemonized )形式运行 此时,可以通过添加-d参数来实现
    docker start -d 容器ID/name

    注2:docker ps 查看已启动容器,注意:此时容器状态为UP

    注3:添加参数--restart=always,当Docker重启时,容器能自动启动。

    7.进入容器(重点)
    docker exec -it 容器ID/容器NAME /bin/bash
    ## 简写
    docker exec -it 容器ID/容器NAME bash

    注1:只有在容器启动的时候即UP状态才能进入容器终端

    8.创建启动进入容器(run=create+start)
    ## 新建->启动->进入容器
    docker run -it ubuntu:latest /bin/bash

    ## 指定了端口号
    docker run -it -p 7001:8001 ubuntu:latest /bin/bash

    ## 使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口
    docker run -it -P --name tomcat03 ubuntu:latest /bin/bash

    ## 此命令没有进入容器,可以之后再进入
    docker run -it -d --name webapp ubuntu:16.04
    docker exec -it webapp /bin/bash

    参数说明:
    -p:端口映射80为宿主端口,8080为容器端口
    -P: 注意是大写P,使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口
    -d:后台运行模式
    --name:容器的名字

    9.退出容器
    退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】
    如果不想继续运行:按【ctrl+d】或输入exit

    10.宿主机和docker容器之间复制文件(重点)
    docker cp 宿主机绝对路径 容器id:路径

    四、 查看Docker容器内部信息
    1.进入容器内部获取信息
    docker exec -it 容器ID/容器NAME /bin/bash
    如果此时已进入容器内部,可分别执行hostname、ip addr、env这三个命令可以获取相关信息
    hostname
    ip add
    env

    2.在宿主机,执行docker exec命令
    获取容器的hostname:docker exec tomcat001 hostname
    获取容器ip地址:docker exec tomcat001 ip addr
    获取容器环境变量:docker exec tomcat001 env

    3.在宿主机,使用docker inspect命令
    推荐使用docker inspect来获取信息,这个命令会返回一个json字符串,里面以key-value的格式准备了该容器相关的信息,
    内容十分丰富,可以一次性取得全部内容,也可以返回指定key对应的信息
    docker inspect 容器ID/容器NAME

    如果我们只对其中的一些感兴趣,例如hostname、ip地址、环境变量,该如何查看呢
    查看数据所在节点,根据节点位置编写命令,例如:
    hostname位于Config.Hostname这个节点位置,所以执行命令docker inspect -f {{.Config.Hostname}} tomcat001即可获取到hostname

  • 相关阅读:
    Cookie中文乱码问题
    [转]Resolving kernel symbols
    [转]Blocking Code Injection on iOS and OS X
    [转]About the security content of iOS 8
    [转]iOS: About diagnostic capabilities
    [转]iOS hacking resource collection
    [转]Patching the Mach-o Format the Simple and Easy Way
    [转]Use the IDA and LLDB explore WebCore C + + class inheritance
    [转]Avoiding GDB Signal Noise.
    [转]http://www.russbishop.net/xcode-exception-breakpoints
  • 原文地址:https://www.cnblogs.com/xiatian3452/p/12026535.html
Copyright © 2011-2022 走看看