zoukankan      html  css  js  c++  java
  • 3. dcoker容器的命令

    常用命令集合

    docker ps --no-trunc                             查看容器
    docker stop/start 容器ID                          停止容器
    docker start 容器别名                              通过容器别名启动容器
    docker inspect                                     查看容器的基本信息
    docker logs 容器别名                               查看容器日志
    docker stats 容器别名                             查看容器所占用的系统资源
    docker exec 容器名 容器内执行的命令                 容器执行命令
    docker exec -it 容器名 /bin/bash                  登入容器bash
    docker port 容器名称                  查询容器端口和主机端口的映射关系
    
    
    
    特殊参数
    --restart=always                                      容器的自动启动
    -h www.baidu.com                                   设置容器的主机名
    --dns xx.xx.xx.xx                                     设置容器使用的DNS服务器
    --dns-search                                            DNS搜索设置
    --add-host hostname:IP                            注入hostname IP解析(也就是说, 在hosts文件中增加IP解析)
    --rm                                                        服务停止时自动删除

     

    一.通用命令

    docker --help 命令

    用法:    docker [OPTIONS] COMMAND

    二. 镜像的基本命令

     1. 列出本机上所有的镜像

    docker images
    -a : 列出本地所有的镜像(含中间镜像层) 表示的是all的含义
    -q : 只显示镜像ID
    --digests: 显示镜像的摘要信息
    --no-trunc:显示完整的镜像信息
    docker images -q : 查询镜像的ID

    docker images -qa: 查询所有镜像的id, 可以批量删除时使用

    docker images --no-trunc

     2. 搜索镜像

    docker search 镜像名

      --filter=stars=3: 列出点赞数不小于指定数值的镜像

    --no-trunc: 显示完整的镜像描述
    --automated: 只列出automated build类型的镜像

    3. 拉取镜像

    docker pull 镜像名称:tag

     

    4. 删除镜像

    docker rmi 镜像名称:tag

    删除正在运行的镜像

    docker rmi -f hello-world

    删除全部镜像

    docker rmi -f ${docker images -qa}

    docker images -qa 是查询当前全部镜像的id, 然后删除这些镜像

      

    三. 容器的基本命令

    1. 运行容器

    docker run -p 8080:80 -d daocloud.io/nginx

    docker run是启动容器. 启动的时候, 现在本地查找镜像, 如果本地没有, 则去网络下载

    -p 8080:80 是把虚拟机中启动的nginx的端口号80 映射到本机的8080

    -d: 表示以后台进程运行.

    -P: 随机端口映射

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

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

    daocloud.io/nginx: 镜像名称

    2. 查询正在运行的容器

    docker ps

     -a: 列出历史运行过的所有容器 + 当前正在运行的容器

    -l: 显示最近创建的容器

    -n: 显示最近n个创建的容器

    -q: 静默模式, 只显示容器编号

    --no-trunc: 不截断输出

    3. 在本机和容器之间拷贝文件

    如: 拷贝index.html替换nginx的默认index.html页面

    docker cp ./index.html 1a2aa74fb4e5://usr/share/nginx/html

     4. 停止docker容器

    docker stop 1a2aa74fb4e5

    docker stop 容器号

    我们将nginx停止. 然后在重启

    浏览器访问localhost:8080,发现又回到nginx的启动页了. 我们不是修改为自己的页面了, 怎么回事呢?

    因为对docker内的文件进行的修改, 默认是不会保存的, 当停止服务,再重启以后, 就恢复为默认的了

    如何对可以持久对docker的修改生效呢? 使用docker commit

    5. 保存改动为新的image

    docker commit -m 'fun' 2a2f3a5c960f fun-nginx

    这段代码的含义是, 提交对docker容器所做的修改, 并起了一个名字叫fun. 容器的名字叫fun-nginx. 

    2a2f3a5c960f表示提交的镜像是谁.

     执行完这段代码以后, 会重新生成一个新的镜像. 

    我们来看看现在有几个nginx的镜像

     现在有两个镜像, 其中fun-nginx是我们刚建的. 我们可以删除一个.

    6. 退出容器

    exit: 容器停止退出
    
    ctrl+P+Q: 容器不停止退出

    7.删除容器

    docker rm 容器id1 容器id2 ....

    使用docker ps,可以查看已经启动的容器. 

    使用docker ps -a, 可以查看全部容器, 包括未启动的容器

     

     我们看到有这么多的镜像

    有些镜像是不需要的, 我们可以删除多余的elasticsearch容器

     四. 重要

    1. 启动守护式容器

    docker run -d 容器名
    在后台进程中启动

    使用守护进程的方式启动容器, 会有一个问题: 使用docker ps -a, 发现容器已经退出

    重点: docker容器后台运行, 就必须有一个前台进程, 容器运行的命令如果不是那些一直挂起的命令(比如top, tail), 就会自动退出. 这个是docker的机制, 比如web容器, 以nginx为例, 正常情况下,我们配置启动服务只需要启动相应的service即可, 例如: service nginx start. 但是, 这样做, nginx为后台模式运行, 就导致docker前台没有运行的应用. 这样的容器后台启动后, 会立即自杀, 因为他觉得没哟碃可以做. 所以, 最佳的的解决方案是, 将你要运行的程序以前台进程的形式运行

    docker run -d nginx /bin/sh -c "while true; do echo hello zzyy; sleep 2; done"

    在控制台持续输出hello zzyy, 2秒钟打印一次

    2. 查看容器日志

    docker logs -f -t --tail 数字 容器ID

    -t: 是加入时间戳
    -f: 跟随最新的日志打印
    --tail 数字: 显示最多多少条

    3. 查看容器内运行的进程

    docker top 容器id

      

    4. 查看容器内部的细节

    docker inspect 容器ID

    docker容器内部是洋葱环,一层套一层. inspect就是查看容器内部的细节的

     5. 进入正在运行的容器并以命令行交互

    进入正在运行的容器: docker exec -it 容器ID bashShell
    重新进入: docker attach 容器ID
    上述二者的区别:

    举例: 现在运行一个容器

    docker run -d 

     进入到了容器里面, 想要退出的话ctr + c

    在想要进入到这个容器, 进入的是容器的根目录

     docker attach 容器ID

    使用exec执行容器中的查询内容, 并返回执行结果

    docker exec -t  容器ID ls -l /tmp/ 

    6. 从容器内拷贝文件到主机上 

    docker cp 容器ID:容器内路径  目标主机地址
  • 相关阅读:
    【缺少kubernetes权限】 namespaces "xxx" is forbidden: User "xxx" cannot xxx resource "xxx" in API group "xxx" in the namespace "xxx"
    【kubernetes secret 和 aws ecr helper】kubernetes从docker拉取image,kubernetes docker私服认证(argo docker私服认证),no basic auth credentials错误解决
    win10老提示系统错误,要注销
    win10无法访问局域网共享文件?解决如此简单。。。。。
    filezilla server老提示connect server
    代理ARP
    win10用filezilla server搭建ftp服务器一直无法访问
    华为路由器GRE配置
    spring笔记--使用springAPI以及自定义类 实现AOP的一个例子
    spring笔记--依赖注入之针对不同类型变量的几种注入方式
  • 原文地址:https://www.cnblogs.com/ITPower/p/12664292.html
Copyright © 2011-2022 走看看