美文网首页
Docker 常用命令

Docker 常用命令

作者: 葡萄芽儿 | 来源:发表于2017-05-26 15:59 被阅读0次

    Docker 容器使用

    runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
    Hello world
    各个参数解析:
    docker: Docker 的二进制执行文件。
    run:与前面的 docker 组合来运行一个容器。
    ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
    /bin/echo "Hello world": 在启动的容器里执行的命令
    

    运行交互式的容器

    我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
    runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
    root@dc0050c79503:/#
    各个参数解析:
    -t:在新容器内指定一个伪终端或终端。
    -i:允许你对容器内的标准输入 (STDIN) 进行交互
    

    启动容器(后台模式)

    runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
    查看容器内的标准输出
    runoob@runoob:~$ docker ps
    

    运行一个python web应用

    runoob@runoob:~# docker run -d -P training/webapp python app.py
    参数说明:
    -d:让容器在后台运行
    -P:将容器内部使用的端口映射到我们使用的主机上
    -p 8286:8086:将容器内8086 映射到主机上的8286
    

    查看web应用容器

    runoob@runoob:~$ docker ps
    

    网络端口的快捷方式(使用容器的名字或者ID )

    runoob@runoob:~$ docker port 7a38a1ad55c6
    5000/tcp -> 0.0.0.0:5000
    
    runoob@runoob:~$ docker port determined_swanson
    5000/tcp -> 0.0.0.0:5000
    

    查看WEB应用程序日志

    runoob@runoob:~$ docker logs -f 7a38a1ad55c6
    

    查看WEB应用程序容器的进程

    我们还可以使用 docker top 来查看容器内部运行的进程
    runoob@runoob:~$ docker top determined_swanson
    

    检查WEB应用程序

    使用 docker inspect 来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
    runoob@runoob:~$ docker inspect determined_swanson
    
    

    停止WEB应用容器

    runoob@runoob:~$ docker stop determined_swanson   
    determined_swanson
    

    重启WEB应用容器

    runoob@runoob:~$ docker start determined_swanson
    determined_swanson
    
    docker ps -l 查询最后一次创建的容器:
    

    移除WEB应用容器

    我们可以使用 docker rm 命令来删除不需要的容器
    runoob@runoob:~$ docker rm determined_swanson  
    determined_swanson
    删除容器时,容器必须是停止状态,否则会报如下错误`
    

    Docker镜像操作

    列出本地主机上的镜像
    runoob@runoob:~$ docker images 
    各个选型的说明
    REPOSTITORY:表示镜像的仓库源
    TAG:镜像的标签
    IMAGE ID:镜像ID
    CREATED:镜像创建时间
    SIZE:镜像大小
    
    指定镜像的版本标签,不指定的话Docker默认使用最新的镜像
    runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash
    
    获取一个新的镜像
    Crunoob@runoob:~$ docker pull ubuntu:13.10
    
    查找镜像
    runoob@runoob:~$  docker search httpd
    选型说明:
    NAME:镜像仓库源的名称
    DESCRIPTION:镜像的描述
    OFFICIAL:是否docker官方发布
    
    拖取镜像
    runoob@runoob:~$ docker pull httpd
    

    创建镜像

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

    • 从已经创建的容器中更新镜像,并且提交这个镜像
    • 使用 Dockerfile 指令来创建一个新的镜像
    更新镜像之前,我们需要使用镜像来创建一个容器
    runoob@runoob:~$ docker run -t -i ubuntu:15.10 /bin/bash
    root@e218edb10161:/# 
    
    在运行的容器内使用 apt-get update 命令进行更新。
    在完成操作之后,输入 exit命令来退出这个容器。
    此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。
    runoob@runoob:~$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
    sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
    各个参数说明:
    -m:提交的描述信息
    -a:指定镜像作者
    e218edb10161:容器ID
    runoob/ubuntu:v2:指定要创建的目标镜像名
    
    我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像
    runoob@runoob:~$ cat Dockerfile 
    FROM    centos:6.7
    MAINTAINER      Fisher "fisher@sudops.com"
    
    RUN     /bin/echo 'root:123456' |chpasswd
    RUN     useradd runoob
    RUN     /bin/echo 'runoob:123456' |chpasswd
    RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
    EXPOSE  22
    EXPOSE  80
    CMD     /usr/sbin/sshd -D
    
    
    runoob@runoob:~$ docker build -t runoob/centos:6.7 .
    Sending build context to Docker daemon 17.92 kB
    Step 1 : FROM centos:6.7
     ---> d95b5ca17cc3
    Step 2 : MAINTAINER Fisher "fisher@sudops.com"
     ---> Using cache
     ---> 0c92299c6f03
    Step 3 : RUN /bin/echo 'root:123456' |chpasswd
     ---> Using cache
     ---> 0397ce2fbd0a
    Step 4 : RUN useradd runoob
    参数说明:
    -t :指定要创建的目标镜像名
    . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
    
    我们可以使用 docker tag 命令,为镜像添加一个新的标签。
    runoob@runoob:~$ docker tag 860c279d2fec runoob/centos:dev
    ......
    
    我们可以指定容器绑定的网络地址,比如绑定127.0.0.1
    runoob@runoob:~$ docker run -d -p 127.0.0.1:5001:5002 training/webapp python app.py
    上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp
    runoob@runoob:~$ docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
    docker port 命令可以让我们快捷地查看端口的绑定情况
    runoob@runoob:~$ docker port adoring_stonebraker 5002
    127.0.0.1:5001
    

    容器命名

    runoob@runoob:~$  docker run -d -P --name runoob training/webapp python app.py
    43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441
    

    高级用法

    runoob@runoob:~/python$ docker run  -v $PWD/myapp:/usr/src/myapp  -w /usr/src/myapp python:3.5 python helloworld.py
    命令说明:
    -v $PWD/myapp:/usr/src/myapp :将主机中当前目录下的myapp挂载到容器的/usr/src/myapp
    -w /usr/src/myapp :指定容器的/usr/src/myapp目录为工作目录
    python helloworld.py :使用容器的python命令来执行工作目录中的helloworld.py文件
    

    相关文章

      网友评论

          本文标题:Docker 常用命令

          本文链接:https://www.haomeiwen.com/subject/kontfxtx.html