zoukankan      html  css  js  c++  java
  • Docker学习--docker的基本认识

    1、Docker 架构

        Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

        Docker 容器通过 Docker 镜像来创建。

        容器与镜像的关系类似于面向对象编程中的对象与类。

    2、Ubuntu16.04上安装docker比较容易,如果你的Ubuntu系统当中还没有安装docker,输入docker命令后,Ubuntu16.04系统会提示你执行怎样的命令完成docker的安装。

    3、docker的使用:基本的docker命令

      1)

    docker run ubuntu:15.10 /bin/echo "Hello world"  

    语句参数说明: 

        docker: Docker 的二进制执行文件。

        run:与前面的 docker 组合来运行一个容器。

        ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

        /bin/echo "Hello world": 在启动的容器里执行的命令

        以上命令完整的意思可以理解为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world"语句。

      2)容器的启动方式

        1>启动命令行交互模式的容器,即为容器启动伪终端。

    docker run -i -t ubuntu:15.10 /bin/bash

    语句参数说明:

           -t:在新容器内指定一个伪终端或终端。

           -i:允许你对容器内的标准输入 (STDIN) 进行交互。

          此时我们已进入一个 ubuntu15.10系统的容器

          我们尝试在容器中运行命令 cat /proc/version和ls分别查看当前系统的版本信息和当前目录下的文件列表

          

        2>启动后台运行模式的容器,使用-d参数

    docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    

    标题说明:

          CONTAINER ID:容器ID

          NAMES:自动分配的容器名称

          在容器内使用docker logs命令,查看容器内的标准输出

    docker logs e403feed3e7a
    

    因为docker在创建并运行容器的时候自动为我们的容器分配了id和名字,所以我们还可以使用以下命令进行日志的查看:

    docker logs sad_agnesi
    

    可以看到效果是一样的。

     3)容器的停止:使用docker stop 容器id/容器名

        1>根据容器id停止指定的容器

    docker stop e403feed3e7a

      2>根据指定容器名停止容器

    docker stop sad_agnesi
    

    4)获取或者拉新镜像

    docker pull ubuntu:15.10
    

    5)创建镜像

       当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

       1>从已经创建的容器中更新镜像,并且提交这个容器镜像

           我们通过需要修改的镜像创建一个容器并运行容器。

    docker run -t -i ubuntu:15.10 /bin/bash

          在运行的容器伪终端内使用 apt-get update 命令进行应用更新。
          在完成操作之后,输入 exit命令来退出这个容器的伪终端。

          此时容器ID为748bddac7d6d的容器,是按我们的需求更改了的容器。我们可以通过命令 docker commit来提交容器副本。

    参数说明:

         -m:提交日志信息

         -a:指定镜像作者

         748bddac7d6d:指定提交的容器ID

         runoob/ubuntu:v2:指定要创建的目标镜像名

         我们可以使用 docker images 命令来查看我们的新镜像 runoob/ubuntu:v2,如上图。

         使用我们的新镜像 runoob/ubuntu 来启动一个容器:

       2>使用 Dockerfile 指令来构建一个新的镜像

         我们使用命令 docker build , 从零开始来构建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

    执行镜像构建文件:

    构建命令参数说明:

        -t :指定要创建的目标镜像名

         . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

    查看我们新构建的镜像:

    以我们新构建的镜像启动一个容器:

    从上面看到新镜像已经包含我们创建的用户lfy。

     对Dockerfile构建镜像文件说明:

         每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

         第一条FROM,指定从哪个镜像源创建新的镜像。

         RUN 指令告诉docker 在镜像内执行命令,安装了什么。

    给镜像增加tag标签:使用 docker tag 命令

    可以看到,执行docker tag命令是为镜像新添加一个标签,而不是修改原有的标签。

    6)镜像的删除:镜像的删除,需要先停止相应镜像的容器的运行,否则会报错。

       我们可以使用如下命令查看当前系统已经创建的所有容器,无论其是否在启动运行。

    删除容器:

    删除指定镜像:

     小结:

           1>删除容器使用命令docker rm 容器id/容器名;删除镜像使用命令docker rmi 镜像id/镜像名。

           2>删除镜像前,需要先删除容器。

     7)docker容器的连接

    docker run -d -p 4000:22 -p 4001:8080 -p 4002:1521  -p 4003:445  -p 4004:3999  -p 4005:8443  -p 4006:18011  -p 4007:18043  --name usdp40 -h usdp40 --privileged 127.0.0.1:5000/usdp/video:c82 /etc/init.d/after.local

      -P :是容器内部端口随机映射到主机的高端口。
      -p : 是容器内部端口绑定到指定的主机端口。

     

  • 相关阅读:
    多线程面试题
    Tcpdump MySQL Query
    Gossip和Redis集群原理
    mysql-table_open_cache_file_limits/
    introducing-backup-locks-percona-server-2/
    MySQL 一致性读 深入研究
    how-to-configure-mysql-masterslave-replication-with-mha-automatic-failover/
    mysqlOOM
    mysql 线程池
    Linux performance monitor tool
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/9612147.html
Copyright © 2011-2022 走看看