zoukankan      html  css  js  c++  java
  • Docker镜像和容器管理(二)

    Docker安装

    Docker镜像管理

    https://hub.docker.com/ 是公共的一个Docker镜像仓库,类似GitHub一样,上面有非常多的开源项目镜像。

    可以直接在命令行搜索镜像

    [root@dns-server ~]# docker search centos
    NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    centos                             The official build of CentOS.                   4847                [OK]                
    ansible/centos7-ansible            Ansible on Centos7                              118                                     [OK]
    jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86…   99                                      [OK]
    consol/centos-xfce-vnc             Centos container with "headless" VNC session…   65                                      [OK]
    imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              47                                      [OK]
    NAME 镜像名称 、DESCRIPTION 镜像说明 、 STARS 点赞数量 、 OFFICIAL 是否是官方的 、 AUTOMATED 是否是自动构建的


    获取镜像,默认tag是最新的  centos:latest

    [root@dns-server ~]# docker pull centos
    Using default tag: latest
    latest: Pulling from library/centos
    Digest: sha256:67dad89757a55bfdfabec8abd0e22f8c7c12a1856514726470228063ed86593b
    Status: Image is up to date for centos:latest

    查看当前主机镜像列表

    [root@dns-server ~]# docker images
    REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
    centos                          latest              75835a67d134        2 weeks ago         200MB

     可以看到一个 CentOS镜像 才 200MB , 详细介绍  参考链接:https://blog.csdn.net/CloudMan6/article/details/71105101

    导出镜像,默认tag是latest

    [root@dns-server ~]# docker save -o centos.tar centos:latest
    [root@dns-server ~]# ls
    centos.tar

    导入镜像

    [root@dns-server ~]# docker load -i centos.tar 
    Loaded image: centos:latest
    或者
    [root@dns-server ~]# docker load < centos.tar 
    Loaded image: centos:latest

    删除镜像,镜像创建成容器时,是不能删除的。

    [root@dns-server ~]# docker rmi centos
    Untagged: centos:latest
    Untagged: centos@sha256:67dad89757a55bfdfabec8abd0e22f8c7c12a1856514726470228063ed86593b

     查看镜像详细信息

    [root@dns-server ~]# docker image inspect system/centos

    Docker容器管理

     运行容器

    docker run 是启动容器的方法,启动时会在本地检测是否有镜像,没有会从公共仓库拉取。

    [root@server2 ~]# docker run centos /bin/echo "Hello world"
    Unable to find image 'centos:latest' locally
    latest: Pulling from library/centos
    aeb7866da422: Already exists 
    Digest: sha256:67dad89757a55bfdfabec8abd0e22f8c7c12a1856514726470228063ed86593b
    Status: Downloaded newer image for centos:latest
    Hello world

    容器的生命周期依赖于启动时执行的命令,只要该命令不结束,容器也就不会退出。上面的命令是 /bin/echo "Hello world" ,执行完容器就会退出。

    docker run常用参数

    --name  指定容器名称

    -i  进入容器

    -t  分配一个伪终端tty

    -p  指定端口映射

    -P  随机端口映射

    docker run --help  查看帮助

    查看容器
    docker ps 查看运行中的容器 -a 查看所有容器。
    [root@server2 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    
    [root@server2
    ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8a6f19d985fd centos "/bin/echo 'Hello wo…" 2 minutes ago Exited (0) 2 minutes ago confident_hermann 5373272349bf centos "/bin/echo 'Hello wo…" 2 minutes ago Exited (0) 2 minutes ago jolly_wozniak 0560af19b61f wordpress "docker-entrypoint.s…" 2 days ago Exited (1) 2 days ago some-wordpress 89e2964c1e14 mysql:latest "docker-entrypoint.s…" 2 days ago Exited (0) 7 hours ago some-mysql

    查看容器详细信息

    [root@dns-server ~]# docker container inspect  myredis

    停止容器

    [root@dns-server ~]# docker stop  容器名称或ID

     删除容器

    [root@dns-server ~]# docker rm 容器名称/ID
    -f 强制删除

    ##删除所有容器
    [root@dns-server ~]# docker rm $(docker ps -a -q)

    在docker run 创建时加上--rm参数,容器退出后自动删除。

    进入容器

    docker attach  容器名称/ID
    nsenter 进入容器
    #!/bin/bash
    
    # Use nsenter to access docker
    
    basedir=`cd $(dirname $0); pwd -P`/$0
    if [ $# -ne 1 ];then
      echo "Usage: $basedir {CONTAINER ID | CONTAINER NAMES}" && exit 2
    fi
    
    
    docker_in(){
      NAME_ID=$1
      PID=$(docker inspect -f "{{ .State.Pid }}" $NAME_ID)
      nsenter -t $PID -m -u -i -n -p 
    }
    
    docker_in $1

    exec进入容器

    #!/bin/bash
    name=$1
    basedir=`cd $(dirname $0); pwd -P`/$0
    if [ $# -eq 1 ];then
      docker exec -it $name /bin/bash
    else
      echo "Usage: $basedir {CONTAINER ID | CONTAINER NAMES}" && exit 2
    fi

    Docker官方网站:https://www.docker.com/

  • 相关阅读:
    http协议头文件的控制信息 .
    http头文件详解
    java(计算机)常见加密算法详解
    设计模式系列命令模式
    dom对象模型浏览器对象的分层结构图
    验证码实现详解
    JAVA中使用FTPClient实现文件上传下载
    javax.crypto.Cipher类提供加密和解密功能,该类是JCE框架的核心。
    java中的使用RSA算法进行公钥加密私钥解密 .
    Httpservlet源码及实现机制详解
  • 原文地址:https://www.cnblogs.com/root0/p/9816893.html
Copyright © 2011-2022 走看看