美文网首页
Docker常用操作命令

Docker常用操作命令

作者: wuzsheng | 来源:发表于2018-09-16 16:33 被阅读12次

    Docker 三大组件

    仓库:存放各种各样已经打包好的Docker应用
    镜像:按照Docker的规则制作的应用。类似操作系统iso,通过其完成各种应用的部署
    容器:;利用镜像创建容器:启动预先定义好的进程与用户交互,对提 供服务。类似虚拟机本身(可以启动,停止,删除),一个镜像可以创建多个名字不同的容器。

    容器

    create

    docker create 创建一个新容器..
    docker create ubuntu:latest
    用docker create 容器处于停止状态,需docker start +容器ID 启动

    run

    Docker run :创建一个新的容器并运行一个命令
    是docker create 和 docker start 组合

    -name 指定容器名字
    -i让容器标准输入打开,通常与 -t 同时使用;
    -t为容器重新分配一个伪输入终端
    -it以交互式进入容器
    -d 指定容器运行于前台还是后台
    -p 指定容器暴露的端口
    -e 指定环境变量
    --env 从指定文件读入环境变量
    --link添加链接到另一个容器

    #启动centos里面的bash并且进行交互式操作
    docker run -it centos /bin/bash
    
     #进入该容器
    docker exec -it ID /bin/bash
    
    #进入该容器,退出,容器会停止运行
    docker attach +ID /bin/bash 
    
    
     #没有直接进入该界面,其在后台运行
    docker run -itd centos /bin/bash
    
    #-name给容器自定义名字
    docker run -itd --name web centos:latest bash 
    
    #--rm让容器退出后直接删除,(不能和-d使用)
    docker run --rm -it centos bash -c "sleep 30" 
    
    #镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data1映射到容器的/data
    docker run -p 80:80 -v /data1:/data -d nginx:latest
    

    attach/ exec

    docker exec :进入容器内运行命令
    -d :分离模式: 在后台运行
    -i :即使没有附加也保持STDIN 打开
    -t :分配一个伪终端

    以root身份进入该容器,并启动一个bash,可以连续执行命令
    docker exec -it 容器名/ID /bin/bash
    exit 退出

    docker attach进入后台运行容器
    docker attach 容器名/ID
    Ctrl + q退出,容器也会停止

    attach与exec主要区别
    attach直接进入容器启动命令的终端,不会启动新的进程.T退出容器会停止而exec不会
    exec 在容器中打开新的终端,并且可以启动新的进程

    rm

    docker rm :删除一个或多少容器
    -f :通过SIGKILL信号强制删除一个运行中的容器
    -v :-v 删除与容器关联的卷

    # 删除所有已经停止的容器
    docker rm $(docker ps -qa)  
    
    #批量删除所有退出容器
    docker rm  $(docker -qa -f status=exited)   
    
    #杀死所有正在运行的容器
    docker kill $(docker ps -qa)   
    

    ps

    docker ps 列出容器正在运行显 = docker container ls
    -a 显示所有的容器,包括未运行的
    -q 显示容器 ID
    --no-trunc:显示完整id号(128位)默认显示16位
    -s 显示容器文件大小
    -l 最近创建容器
    通常使用
    docker ps -qa

    pause/unpause

    让容器暂停工作且不占用CPU
    暂停
    docker pause +names
    恢复
    docker unpause +names

    start/stop/restart/kill

    docker start +names
    docker stop +names
    docker kill +names #快速终止
    docker restart +names

    #无论容器因何种原因退出,都立即重启  --restart=always
    docker run -d -restart=always httpd
    
    #如果启动进程退出代码非0,则重启容器,最多重启3次
    docker run -d  --restart=on-failure:3  httpd
    

    rename

    docker rename 原容器名 新容器名

    export/import

    docker export导出容器,可以迁移到其他机器
    docker import 将导入的文件。成为镜像

    将容器生成文件
    docker export container_id>file.tar
    cat file.tar|docker import – wu #生成wu镜像
    

    docker基本信息

    显示 容器 详细信息
    docker inspect 容器

    获取容器的运行历史信息
    docker logs +容器
    -f 跟踪守护式容器的日志
    -s 最新日志

    eg:
    docker run -d centos bash -c "while:;do ehco "123";sleep 1;done"
    docker logs +ID #会显示123
    可用docker stop ID 终止掉

    docker top 容器进程
    docker top + 容器
    docker stats 容器占用系统资源情况
    docker diff containerID
    列出改动了容器的存储层
    显示一个镜像的历史
    docker version #查看版本
    docker info //查看docker系统的信息

    镜像

    images

    docker images : 列出本地镜像 或 docker image ls (--help)
    -a 显示所有镜像
    -q 只显示镜像ID
    --no-trunc :显示完整的镜像信息

    #列出镜像
    docker images 
    
    #显示具体镜像信息
    docker images hello-world
    
    #直接列出镜像包含镜像ID和仓库名
    docker images --format "{{.ID}}: {{.Repository}}"
    

    pull

    docker pull : 从镜像仓库中拉取(下载)或者更新指定镜像
    格式:docker pull [选项] [Docker Registry地址]<仓库名>:<标签>

    #从docker hub拉取ubuntu镜像
    docker pull ubuntu \\默认下载最新
    docker pull Ubuntu:14.04 \\指定下载版本
    
    #从私有库拉取ubuntu镜像
    docker pull 192.168.200.11:5000/ubuntu/14.04.3.tar:latest
    
    #3 从hub.c.163.com仓库拉取镜像
    docker pull hub.c.163.com/library/mysql:latest
    :latest 标记最新版本
    本地镜像都保存在docker宿主机的/var/lib/docker目录下
    

    push

    docker push + name 上传镜像到仓库(默认上传到DockerHub官方仓库)

    # 将本地镜像test:latest 添加新的标签user/test:latest
    docker tag  test:latest  user/test:latest 
    docker push user/test:latest
    

    save/load

    docker save:把现有镜像,导出一个文件
    docker load:将该文件恢复本地镜像

    #把现有镜像,导出一个文件
    docker save -o aming-centos.tar aming/centos(现有镜像或ID都行)
    
    #使用该文件恢复本地镜像
    docker load < aming-centos.tar
    

    commit

    运行容器时,做的任何文件修改都会被记录于容器存储层里。且docker commit ,可以将容器的存储层保存下来成为镜像

    增量的生成一个镜像。将容器保存为一个镜像(可标注镜像名和作者信息)当没有镜像名也成悬挂镜像

    docker commit :从容器创建一个新的镜像。
    格式:docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
    -a :提交的镜像作者;
    -c :使用Dockerfile指令来创建镜像;
    -m :提交时的说明文字;
    -p :在commit时,将容器暂停。
    -q 显示Image ID
    --no-trunc 显示完整长度Image ID

    步骤

    1. 运行容器
    2. 修改容器
    3. 将容器保存为新的镜像

    运行ubuntu镜像,并进入交互模式
    docker run –it centos –name wzs
    yum –y install vim #在centos镜像中添加vim工具
    docker ps #查看容器名
    docker commit +容器名 +自定义名
    docker images #查看镜像

    #将容器保存为镜像
    docker commit \
        --author "Tao Wang <twang2218@gmail.com>" \
        --message "修改了默认网页" \
        webserver \
    nginx:v2
    #或者
    docker commit -a “wzs” -m “install httpd” +ID(写前几位就行) +新容器名字
    

    相关文章

      网友评论

          本文标题:Docker常用操作命令

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