码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • docker容器操作


    这里写目录标题

    • 一、创建容器(基于镜像)
    • 二、启动容器
      • 1、docker start
      • 2、一次性执行—— docker run
    • 三、进入容器
      • 1、使用run(一次性)
      • 2、exec(容器必须为开启状态)
    • 四、停止容器
    • 六、容器导出(相当于快照)
    • 七、容器导入(生成镜像)
    • 八、容器删除
    • 九、容器打包为镜像
    • 扩展
      • 1、自定义一个容器
      • 2、日志问题

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

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

    #格式: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”}
    }

  • 相关阅读:
    ​cannot import name ‘container_abcs’ from ‘torch._six’​
    目标检测YOLO实战应用案例100讲-基于弱监督学习的目标检测
    原来栈和队列之间其实也是可以互相转换的啊
    深度学习论文精读[9]:PSPNet
    第一个springBoot maven 项目
    LiveQing视频点播流媒体RTMP推流服务功能-支持视频点播分屏大屏展示视频轮巡分组播放RMP推流直播大屏展示
    navicat远程连接数据库遇到的问题 10060 unknown error
    springboot整合Sentinel
    Elasticsearch8.x版本Java客户端Elasticsearch Java API Client中常用API练习
    热加载技术:修改Python代码并实时查看结果 ⛵
  • 原文地址:https://blog.csdn.net/m0_56107775/article/details/125765340
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号