zoukankan      html  css  js  c++  java
  • docker 容器命令

    语法
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

    OPTIONS说明:

    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

    -d: 后台运行容器,并返回容器ID;

    -i: 以交互模式运行容器,通常与 -t 同时使用;

    -P: 随机端口映射,容器内部端口随机映射到主机的高端口

    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    --name="nginx-lb": 为容器指定一个名称;

    --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

    --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

    -h "mars": 指定容器的hostname;

    -e username="ritchie": 设置环境变量;

    --env-file=[]: 从指定文件读入环境变量;

    --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

    -m :设置容器使用内存最大值;

    --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

    --link=[]: 添加链接到另一个容器;

    --expose=[]: 开放一个端口或一组端口;

    --volume , -v: 绑定一个卷

    输出Hello world
    docker run ubuntu:15.10 /bin/echo "Hello world"
    ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
    /bin/echo "Hello world": 在启动的容器里执行的命令
    
    进入容器内
    docker run -i -t ubuntu:15.10 /bin/bash
    
    各个参数解析:
    ubuntu: ubuntu 镜像。
    /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
    
    启动容器(后台模式)
    docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    
    指定容器的名字
    docker run -itd --name ubuntu-test ubuntu /bin/bash
    注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec

    查看运行中的容器
    docker ps

    CONTAINER ID: 容器 ID。
    IMAGE: 使用的镜像。
    COMMAND: 启动容器时运行的命令。
    CREATED: 容器的创建时间。
    STATUS: 容器状态。
    状态有7种:
    created(已创建)
    restarting(重启中)
    running(运行中)
    removing(迁移中)
    paused(暂停)
    exited(停止)
    dead(死亡)

    PORTS: 容器的端口信息和使用的连接类型(tcpudp)。
    NAMES: 自动分配的容器名称。

    查看所有的容器命令如下

    docker ps -a

    进入容器
    在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

    docker attach
    
    docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

    attach 命令

    下面演示了使用 docker attach 命令。

    $ docker attach 1e560fca3906 


    注意: 如果从这个容器退出,会导致容器的停止。

    exec 命令

    下面演示了使用 docker exec 命令。

    docker exec -it 243c32535da7 /bin/bash

    注意: 如果从这个容器退出,不会导致容器的停止,这就是为什么推荐大家使用 docker exec 的原因。

    退出终端

    exit 或者ctrl D

    停止容器
    我们使用 docker stop 命令来停止容器:

    docker stop 2b1b7a428627 或者docker stop 名字

    重启容器

    docker restart <容器 ID>

    删除容器
    删除容器使用 docker rm 命令:

    $ docker rm -f 1e560fca3906

    下面的命令可以清理掉所有处于终止状态的容器。

    $ docker container prune

    导出和导入容器
    导出容器

    如果要导出本地某个容器,可以使用 docker export 命令。

    docker export 1e560fca3906 > ubuntu.tar

    导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。

    导入容器快照
    可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

    $ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

    此外,也可以通过指定 URL 或者某个目录来导入,例如:

    $ docker import http://example.com/exampleimage.tgz example/imagerepo

    运行一个 web 应用

    docker run -d -P training/webapp python app.py

     -P:将容器内部使用的网络端口映射到我们使用的主机上。

    我们也可以通过 -p 参数来设置不一样的端口:

    docker run -d -p 80:5000 training/webapp python app.py //80是外面机器端口,5000是容器端口

    直接查看端口的方式

    docker port bf08b7f2cd89
    5000/tcp -> 0.0.0.0:5000

    查看 WEB 应用程序日志

    docker logs -f bf08b7f2cd89 或者docker logs 2b1b7a428627

    查看WEB应用程序容器的进程
    我们还可以使用 docker top 来查看容器内部运行的进程

    runoob@runoob:~$ docker top wizardly_chandrasekhar
    UID PID PPID ... TIME CMD
    root 23245 23228 ... 00:00:00 python app.py

    检查 WEB 应用程序
    使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

    runoob@runoob:~$ docker inspect wizardly_chandrasekhar
    [
        {
            "Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
            "Created": "2018-09-17T01:41:26.174228707Z",
            "Path": "python",
            "Args": [
                "app.py"
            ],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 23245,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2018-09-17T01:41:26.494185806Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
    ......

    查询最后一次创建的容器:

    docker ps -l 
  • 相关阅读:
    Codeforces Round #275 (Div. 2) A. Counterexample【数论/最大公约数】
    2017年浙工大迎新赛热身赛 J Forever97与寄信 【数论/素数/Codeforces Round #382 (Div. 2) D. Taxes】
    2017年浙工大迎新赛热身赛 A 毕业设计选题 【结构体排序】
    2017年浙工大迎新赛热身赛 L cayun日常之赏月【易错特判】
    Codeforces Round #309 (Div. 2) A. Kyoya and Photobooks【*组合数学】
    【数论知识】能被2、3、4、5、6、7、8、9 等数整除的数的特征
    Codeforces Round #429 (Div. 2) A. Generous Kefa【hash/判断字符串是否有一种字符个数大于m】
    MPI Maelstrom---poj1502(最短路模板)
    Travel---hdu5441(并查集)
    Elven Postman---hdu5444(二叉树)
  • 原文地址:https://www.cnblogs.com/lvchengda/p/12780760.html
Copyright © 2011-2022 走看看