zoukankan      html  css  js  c++  java
  • docker 常用命令


    测试环境:CentOS 7

    镜像操作

    docker images 列出本地主机上的镜像,等同于 docker image ls

    docker pull ubuntu:13.10 拉去 ubuntu:13.10 镜像到本地

    docker search 镜像源 从 Docker Hub 网站来搜索镜像

    docker rm -f 镜像源[或IMAGE ID] 删除一个本地的镜像

    运行一个镜像

    用 run 命令运行一个镜像容器

    docker run -it ubuntu:15.10 /bin/bash

    • -i: 交互式操作。
    • -t: 终端。
    • -d: 默认不会进入容器,而是后台运行
    • ubuntu:15.10: 这是指用 ubuntu 15.10 版本镜像为基础来启动容器。ubuntu 为镜像源,15.10为标签。如不知道标签,默认使用 latest 标签。
    • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

    创建镜像

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

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

    更新镜像

    在使用镜像创建一个容器之后,进入容器进行一些操作,在退出容器后,可以将更新后的改容器提交成一个新的镜像。

    例如,启动一个容器。

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

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

    在完成操作之后,输入 exit 命令来退出这个容器。

    我们可以通过命令 docker commit 来提交容器副本。

    docker commit -m="has update" -a="itle" 1ba2aa2b9f56 itle/ubuntu:v2
    

    各个参数说明:

    • -m: 提交的描述信息
    • -a: 指定镜像作者
    • 1ba2aa2b9f56:容器 ID
    • itle/ubuntu:v2: 指定要创建的目标镜像名,v2为标签名。

    构建镜像

    使用Dockerfile,一般不建议自己构建镜像,建议在原有的镜像上进行修改更新。

    所以 Dockerfile 要自己去看。


    设置镜像标签

    docker tag 镜像ID或镜像名 新的镜像名:新标签名

    docker tag 1ba2aa2b9f56 itle/ubuntu:v4
    

    仓库管理

    仓库(Repository)是集中存放镜像的地方。目前 Docker 官方维护了一个公共仓库 Docker Hub 。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

    在免费注册一个 Docker 账号之后,就可以在上面存储自己的镜像。

    登录和退出

    登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。

    $ docker login
    

    退出 docker hub 可以使用以下命令:

    $ docker logout
    

    拉取和推送

    可以通过 docker search 命令来查找官方仓库中的镜像,并利用docker pull命令来将它下载到本地。

    例如以 redis 为关键词进行搜索

    $ docker search redis
    

    拉取默认标签的版本到本地

    $ docker pull redis
    

    这时候本地已经有了 redis 的镜像,只需要运行镜像,我们就可以使用 redis 的容器了

    $ docker run -itd --name redis-vhr -p 6379:6379 redis:latest
    

    推送镜像

    用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub。

    【注意】

    需要注意的是,推送镜像的时候需要进行身份验证,而验证的方式是镜像的名称。

    镜像名的格式是:username/镜像名:标签

    其中,username是你的账户

    例如我们要推送 redis 镜像到自己的仓库。先要修改镜像标签,然后再推送

    docker tag 镜像ID或镜像名 新的镜像名:新标签名
    docker push 新的镜像名:新标签名
    


    容器操作

    docker ps -a 查看所有容器

    docker start <容器ID> 启动某个已停止的容器

    docker stop <容器ID> 停止某个容器

    docker restart <容器ID> 重启某个容器

    进入容器

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

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

    格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    例如:

    docker exec -it 243c32535da7 /bin/bash
    

    删除容器

    docker rm -f <容器ID> 删除某个容器

    docker container prune 清除所有处理停止状态的容器

    导出容器

    使用 docker export 命令可导出本地某个容器。

    docker export容器ID > 文件名 将某个容器导出,并命名为指定文件名

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

    docker export 1e560fca3906 > text.tar
    

    导入容器

    使用 docker import 从容器快照文件中再导入为镜像

    cat 文件名 | docker import - 镜像名:标签

    将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

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

    容器运行 web 应用

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

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

    参数说明:

    • -d:让容器在后台运行。
    • -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
    • -p:指定端口,后面跟随端口
    • 8082:5000: 指定使用8082端口。如使用 -P 不指定,会随机分配
    • training/webapp:容器名称
    • python app.py:web应用运行的命令

    查看 web 应用的日志

    通过 docker logs [ID或名字] 查看容器内部的标准输出。

    root@itle:~$ docker logs -f bf08b7f2cd89
     * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
    192.168.7.111 - - [10/May/2020 16:30:37] "GET / HTTP/1.1" 200 -
    192.168.7.111 - - [10/May/2020 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -
    

    -f:docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

    查看 web 应用的进程

    可以使用 docker top [ID或名字] 查看容器内部运行的进程

    root@itle:~$ docker top bf08b7f2cd89
    UID     PID         PPID          ...       TIME                CMD
    root    23245       23228         ...       00:00:00            python app.py
    
  • 相关阅读:
    hashlib模块
    configparser模块
    xml模块和shelve模块
    json与pickle模块
    3/30
    os模块
    sys模块
    shutil模块
    random模块
    2月书单《编码隐匿在计算机软硬件背后的语言》 13-16章
  • 原文地址:https://www.cnblogs.com/luler/p/15428325.html
Copyright © 2011-2022 走看看