• docker容器操作


    一、创建容器(基于镜像)

    新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

    #格式:docker create [选项] 镜像
    #常用选项:
    -i:让容器的输入保持打开
    -t:让 Docker 分配一个伪终端
    -d:后台守护进程的方式运行
    
    #示例:
    docker create -it nginx:latest /bin/bash(command)#加载的是shell环境
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    md5加密

    二、启动容器

    1、docker start

    #格式:docker start 容器的ID/名称
    docker start    4bf84858083e
    docker ps -a
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2、一次性执行—— docker run

    加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。

    #示例1:执行后退出
    docker run centos:7 /usr/local/bash -c ls /   
    
    #示例2:执行后不退出,以守护进程方式执行持续性任务
    docker run -d centos:7 /usr/local/bash -c "while true;do echo hello;done" 
    
    查看:docker logs (-f) 名称id
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    三、进入容器

    1、使用run(一次性)

    docker run -it nginx:latest /bin/bash

    在这里插入图片描述

    2、exec(容器必须为开启状态)

    docker exec -it 容器ID /bin/bash

    在这里插入图片描述

    exec和shell 是两种运行模式

    PS:
    docker run -it会创建前台进程,但是会在输入exit后终止进程。
    docker attach 会通过连接stdin,连接到容器内输入输出流,会在输入exit后终止容器进程.
    docker exec -it 会连接到容器,可以像ssH一样进入容器内部,进行操作,可以通过exit退出容器,不影响容器运行。
    
    • 1
    • 2
    • 3
    • 4

    查看容器的ip——docker inspect,可以使用ssh+ip进入容器内部

    在这里插入图片描述
    在这里插入图片描述

    四、停止容器

    #终止容器运行
    格式:docker stop 容器的ID/名称
    docker stop 4bf84858083e
    
    docker ps -a
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    六、容器导出(相当于快照)

    docker export 容器ID >文件名

    示例:
    docker export 容器ID > nginx_lastest

    在这里插入图片描述

    七、容器导入(生成镜像)

    docker import 导出的文件名(容器)指定镜像名称
    #导入格式:cat 文件名 | docker import – 镜像名称:标签
    示例:
    docker import nginx_lastest nginx:test #导入后会生成镜像,但不会创建容器

    在这里插入图片描述

    八、容器删除

    #格式:docker rm [-f] 容器ID/名称
    
    1.#不能删除运行状态的容器,只能-f强制删除,或者先停止再删除
    docker rm 容器id
    
    2.#已经退出的容器,可以直接删除
    docker rm 容器id
    
    3.#基于名称匹配的方式删除
    docker rm -f 名称
    
    
    4.#删除所有运行状态的容器
    docker rm -f `docker ps -q`
    
    5.#删除所有容器
    docker rm -f `docker ps -aq`
    
    6.#有选择性的批量删除 (正则匹配)
    docker ps -a |awk ' {print "docker rm "$1}'| bash
    
    7.#删除退出(exit)状态的容器
    for i in `dockef ps -a l grep -i exit / awk '{print $1}' '; do docker rm -f $i;done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    九、容器打包为镜像

    docker run -it --name Nginx.01 nginx:latest /bin/bash

    docker commit 容器id nginx-v1beta

    在这里插入图片描述

    扩展

    1、自定义一个容器

    docker run -it --name nginx
    -v /data_nginx/ :/usr/local/nginx/ conf
    -v /log_nginx:/usr/local/nginx/ logs
    log-driver=json-file
    log-opts max-size=500m
    log-opts max-file=3
    -p 81:80
    -p 8443:443
    –network ky17
    –ip 172.18.0.10
    nginx : latest

    2、日志问题

    ##当日志占满之后如何处理
    #清除日志

    #!/ bin/bash
    logs=$ (find /var/lib/docker/containers/ -name *-json.log* )
    for log in $logs
    do
    cat /dev/null > $log
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ###设置docker日志文件数量及每个日志大小
    #vim /etc/docker/daemon.json
    {
    “registry-mirrors”: [ “http://f613ce8f.m.daocloud.io”],
    “log-driver” : “json-file”,
    “log-opts” : { “max-size” : “500m”, “max-file” : “3”}
    }

  • 相关阅读:
    hydra(九头蛇)--参数及常见命令
    【图像分割】DeepLabV3+
    ardupilot开发 ---传感器驱动,外设驱动篇
    LeetCode 面试题 08.08. 有重复字符串的排列组合
    【rust/egui】(八)使用panels给你的应用划分功能区块
    深度学习【使用pytorch实现基础模型、优化算法介绍、数据集的加载】
    探秘OpenAI的神奇之作:Sora技术揭秘
    在Windows电脑上用多开器玩网络游戏的技巧
    宝宝入托,爸妈要避开这5种心态
    MySQL数据库(Java的数据库编程:JDBC)
  • 原文地址:https://blog.csdn.net/m0_56107775/article/details/125765340