zoukankan      html  css  js  c++  java
  • Docker 使用命令

    目录

    Docker使用

    Docker镜像使用

    当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载

    1. 管理和使用本地 Docker 主机镜像
    2. 创建镜像

    列出镜像列表

    docker images
    

    各个选项说明:

    REPOSITORY:表示镜像的仓库源
    
    TAG:镜像的标签
    
    IMAGE ID:镜像ID
    
    CREATED:镜像创建时间
    
    SIZE:镜像大小
    

    同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 python 仓库源里,有 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

    所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

    docker run -dit ubuntu:15.10 /bin/bash 
    

    参数说明:

    -i: 交互式操作。
    -t: 终端。
    ubuntu:15.10: 这是指用 ubuntu 15.10 版本镜像为基础来启动容器。
    /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
    

    如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

    获取一个新的镜像

    当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

    docker pull kafka
    

    下载完成后,我们可以直接使用这个镜像来运行容器。

    查找镜像

    我们可以从 Docker Hub 网站来搜索适合我们的镜像.

    docker search kafka
    

    参数说明:

    NAME: 镜像仓库源的名称
    
    DESCRIPTION: 镜像的描述
    
    OFFICIAL: 是否 docker 官方发布
    
    stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
    
    AUTOMATED: 自动构建。
    

    下载完成后,我们就可以使用这个镜像了

    docker run -d kafka
    

    创建镜像

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

    1. 从已经创建的容器中更新镜像,并且提交这个镜像
    2. 使用 Dockerfile 指令来创建一个新的镜像

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

    更新镜像之前,我们需要使用镜像来创建一个容器。

    docker run -it kafka /bin/bash
    

    在运行的容器内使用 apt-get update 命令进行更新。

    退出这个容器:
    exit

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

    docker commit -m="has update" -a="blue" c2c789d2d3c5 blue/kafka:v2
    

    各个参数说明:

    -m: 提交的描述信息
    
    -a: 指定镜像作者
    
    c2c789d2d3c5:容器 ID
    
    blue/kafka:v2: 指定要创建的目标镜像名
    

    我们可以使用 docker images 命令来查看我们的新镜像 blue/kafka:v2

    docker images
    

    使用我们的新镜像来启动一个容器
    docker run -dit blue/kafka:v2 /bin/bash

    2. 使用 Dockerfile 指令来创建一个新的镜像

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

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

    第一条FROM,指定使用哪个镜像源

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

    然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像

    参数说明:

    -t :指定要创建的目标镜像名
    
    . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
    

    设置镜像标签

    我们可以使用 docker tag 命令,为镜像添加一个新的标签。

    docker tag 860c279d2fec runoob/centos:dev
    

    docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

    docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

    使用 docker images 命令可以看到,ID为860c279d2fec的镜像多一个标签。

    Docker容器使用

    docker pull xxx

    docker run -it xxx /bin/bash

    参数说明:

    -i: 交互式操作。
    -t: 终端。
    ubuntu: ubuntu 镜像。
    /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
    

    要退出终端,直接输入:

    exit
    

    启动已停止运行的容器

    $ docker ps -a
    $ docker start b750bbbcfd88 
    

    后台运行

    在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

    $ docker run -itd --name ubuntu-test ubuntu /bin/bash
    

    停止一个容器

    $ docker stop <容器 ID>
    

    停止的容器可以通过 docker restart 重启:

    $ docker restart <容器 ID>
    

    进入容器

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

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

    exec 命令

    docker exec -it 243c32535da7 /bin/bash
    

    导出和导入容器

    导出容器

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

    $ docker export 1e560fca3906 > ubuntu.tar
    

    这样将导出容器快照到本地文件。

    删除容器

    删除容器使用 docker rm 命令:

    $ docker rm -f 1e560fca3906
    

    清理掉所有处于终止状态的容器。

    $ docker container prune
    

    运行一个web应用

    我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。

    docker pull training/webapp  # 载入镜像
    
    docker run -d -P training/webapp python app.py
    

    参数说明:

    • -d:让容器在后台运行。

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

    查看 WEB 应用容器

    使用 docker ps 来查看我们正在运行的容器:

    runoob@runoob:~#  docker ps
    CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
    d3d5e39ed9d3        training/webapp     "python app.py"     ...        0.0.0.0:32769->5000/tcp
    

    Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。

    这时我们可以通过浏览器访问WEB应用: 127.0.0.1:32769

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

    $ docker run -d -p 5000:5000 training/webapp python app.py
    

    查看正在运行的容器: docker ps

    runoob@runoob:~#  docker ps
    CONTAINER ID        IMAGE                             PORTS                     NAMES
    bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar
    d3d5e39ed9d3        training/webapp     ...        0.0.0.0:32769->5000/tcp   xenodochial_hoov
    

    容器内部的 5000 端口映射到我们本地主机的 5000 端口上。

    网络端口的快捷方式

    通过 docker ps 命令可以查看到容器的端口映射,

    docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

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

    docker top 容器ID
    

    检查 WEB 应用程序

    使用 docker inspect 来查看 Docker 的底层信息。

    它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

    docker inspect 容器ID
  • 相关阅读:
    JavaScript函数
    JavaScript数组知识点
    面向对象之继承及属性查找顺序
    面向对象二
    面向对象
    正则表达式补充
    垃圾回收机制、标记删除及分代回收
    hashlib、hmac、subprocess、configparser模块
    模块、起别名、from导入
    递归、匿名函数、内置函数
  • 原文地址:https://www.cnblogs.com/justblue/p/13328676.html
Copyright © 2011-2022 走看看