容器操作基础命令

news2024/9/23 23:28:09

文章目录

  • 一、启动容器
    • 启动容器用法
  • 二、查看容器状态
  • 三、容器相关操作
    • 删除容器
    • 容器的开启和停止
    • 进入容器
      • attach
      • exec
    • 暴露容器的端口
    • 查看容器的日志
    • 传递运行命令
    • 容器内部的hosts文件
    • 指定容器的DNS
    • 容器内和宿主机之间复制文件


一、启动容器

容器的生命周期
在这里插入图片描述
docker run可以启动容器,进入到容器,并随机生成容器ID和名称。
在这里插入图片描述
启动容器的流程
1.docker会在本地寻找镜像
2.判断本机是否有这个镜像,如果有就运行这个镜像。
3.如果没有,去镜像仓库下载这个镜像(如果仓库没有,则失败),下载至本地后,运行这个镜像。

启动容器用法

命令含义
-i, --interactive保持标准输入开放,即使没有连接。通常与 -t 一起使用,允许你与容器进行交互。
-t, --tty分配一个伪 TTY(终端)。通常与 -i 一起使用,提供一个交互式 shell。
-d, --detach在后台运行容器,并打印容器 ID。容器会在后台运行,不会占用当前终端。
–name string为容器指定一个名称,方便后续引用和管理。
–h, --hostname设置容器的主机名。
–rm容器退出时自动删除。适用于临时性的容器。
-p, --publish将容器的端口映射到主机。格式为 hostPort:containerPort。
-P, --publish-all将容器所有暴露的端口随机映射到主机端口。
–dns list为容器设置自定义 DNS 服务器。
–entrypoint string覆盖镜像中默认的 ENTRYPOINT 指令,ENTRYPOINT中定义了容器启动时要运行的命令。
–restart policy设置容器的重启策略,如 always, on-failure 等。
–privileged给予容器扩展权限。容器几乎可以做主机能做的所有事。
-e, --env=[]设置环境变量。可以多次使用来设置多个环境变量。
–env-file=[]从文件中读取环境变量。文件中每行一个环境变量。

后台启动容器

docker run  -d  httpd 
直接运行会在后台执行

在这里插入图片描述
设置容器退出后的启动规则

policy说明
no默认是no;容器退出时不自动重启
on-failure[:max-retries]:仅当容器以非零状态退出时才重启,退出码 0 通常表示程序成功执行并正常退出。
always无论退出状态如何,总是重启容器。 Docker 守护进程会无限期地尝试重启容器。
unless-stopped类似于 always,但有一个重要区别: 如果容器之前被手动停止,Docker 守护进程启动时不会自动启动该容器。
docker run -d  --restart always   httpd 

启动容器执行一次性的命令
系统类的容易,启动后没有执行任何操作,不想httpd、nginx等程序需要持续向外提供服务,所以系统类的默认是一次性的,容器启动就退出。
执行一次就退出
在这里插入图片描述
使用命令系统类容器持续运行

docker run -it centos:7 bash
-i 表示和容器进行交互
-t 分配一个运行的虚拟终端

在这里插入图片描述
在容器中新建文件,存放在宿主机中。
exit即可退出虚拟终端。
同时按三个键,ctrl+p+q 容器依然存在。

启动容器时要指定名称
容器在启动的时候都会被分配到一个随机id和一个随机名字,也可以自定义设置名字,注意每个容器的名称要唯一。
在这里插入图片描述
设置容器内的名称

docker run -it -h cxk  centos:7   bash 

定义容器系统的主机名。

在这里插入图片描述

二、查看容器状态

docker ps [OPTIONS]
选项作用
-a, --all显示所有容器,包括已停止的容器;ps只显示正在运行的容器。
-q, --quiet只显示容器的数字 ID。
-s, --size显示容器使用的总文件大小。
-f, --filter filter根据提供的条件过滤输出。
-l, --latest显示最新创建的容器,只返回一个容器。
-n, --last int显示最后创建的 n 个容器,默认值为-1,表示显示所有容器。

在这里插入图片描述
查看容器内的进程

docker top CONTAINER [ps OPTIONS]

在这里插入图片描述
查看容器资源使用情况

docker stats [OPTIONS] [CONTAINER...]

动态查询单个容器资源使用情况。
在这里插入图片描述
查看所有,并且只运行一次。

docker stats  --no-stream 

在这里插入图片描述

查看容器的详细信息
docker inspect 可以查看docker各种对象的详细信息,包括:镜像,容器,网络等。
选项:
-f ,–format 选择性的查看。
-s,–size 容器总体文件的大小。

docker inspect  c7cd896e7401
docker inspect -f "{{.NetworkSettings.IPAddress}}" c7cd896e7401

选择性查看信息,注意选择关键词。
在这里插入图片描述

三、容器相关操作

删除容器

docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f, --force 强制删除正在运行的容器
-v, --volumes 删除与容器关联的匿名卷

docker container prune [OPTIONS]
用于删除所有已经停止的容器。
--filter
提供过滤条件来选择要删除的容器
docker container prune --filter "until=24h"(删除24小时前创建的已停止容器)
-f, --force
不提示确认,直接执行删除操作
docker container prune -f
删除所有已停止的容器,不需要确认。

docker rm $(docker ps -a -q -f status=exited)
删除状态为退出的容器。

容器的开启和停止

docker start|stop|restart|pause|unpause 容器ID

在这里插入图片描述

进入容器

attach

docker attach 容器名,操作会在同一个容器的多个会话界面同步显示,所有使用此方式进入容器的操作都是同步显示的,且使用exit退出后,容器自动关闭,不推荐使用,需要进入到有shell环境的容器。

exec

在运行中的容器启动新进程,可以执行单次命令,以及进入容器测试环境使用此方式,使用exit退出,但容器还在运行,此为推荐方式

选项含义
-d, --detach在后台运行命令。
-e, --env list设置环境变量。
-i, --interactive与正在运行的命令进行交互。
-t, --tty分配一个伪 TTY(终端)。

在这里插入图片描述

暴露容器的端口

容器启动后,默认处于预定义的NAT网络中,所以外部网络的主机无法直接访问容器中网络服务docker run -P 可以将事先容器预定义的所有端口映射宿主机的网卡的随机端口,默认从32768开始使用随机端口 时,当停止容器后再启动可能会导致端口发生变化。

docker run -d -P  --name web1   httpd

在这里插入图片描述

指定端口映射
docker run -p 可以将容器的预定义的指定端口映射到宿主机的相应端口。
注意:多个容器映射到宿主机的端口不能冲突,但容器内使用的端口可以相同。

方式1:
容器80端口映射宿主机本地随机端口。注意这边是小写的p

docker run    -p 80  --name web2 nginx

方式2:
容器80端口映射到宿主机本地端口81
注意前面的端口是宿主机的端口号

docker run -p 81:80 --name web1 nginx

方式3:
宿主机本地IP:宿主机本地端口:容器端口

docker run  -p 10.0.0.100:82:80 --name web1 nginx

方式4:
宿主机本地IP:宿主机本地随机端口:容器端口,默认从32768开始。

docker run -p 192.168.232.10::80 --name web1 httpd

方式5:

docker run  -p 8080:80/tcp -p 8443:443/tcp -p 53:53/udp --name web1 nginx

修改已经创建的容器端口映射关系
将容器的端口号和宿主机之间的端口号做上对应关系。
在这里插入图片描述
去真机上寻找对应的容器文件。
在这里插入图片描述
停止docker程序
然后到对应的容器文件,修改hostconfig.json文件。
PortBindings":{“80/tcp”:[{“HostIp”:“”,“HostPort”:“80”}]}
PortBindings后80/tcp对应的是容器内部的80端口,HostPort对应的是映射到宿主机的端口80 。

查看容器的日志

docker logs可以查看容器中运行的进程在控制台输出的日志信息。

docker logs [OPTIONS] CONTAINER
选项含义
–details显示提供给日志的额外详细信息。
-f, --follow跟踪日志输出。
–since string显示自某个时间戳以来的日志(“2013-01-02T13:23:37”)或者相对时间(“42m”42分钟前)
–tail string仅显示日志末尾的指定行数。
-t, --timestamps显示时间戳。
–until string显示直到某个时间戳为止的日志。

传递运行命令

容器需要有一个前台运行的进程才能保持容器的运行,通过传递运行参数是一种方式,另外也可以在构建镜像的时候指定容器启动时运行的前台命令容器里的PID为1的守护进程的实现方式:

  • 服务类: 如: Nginx,Tomcat,Apache ,但服务不能停
  • 命令类: 如: tail -f /etc/hosts ,主要用于测试环境,注意: 不要tail -f <服务访问日志> 会产生不必要的磁盘IO。

运行系统类的容器是不可以持久化,会自动退出。
需要在运行时加入一些前台执行的命令,那么就可以持久执行。


docker run -d alpine  tail -f /etc/hosts 

在这里插入图片描述

容器内部的hosts文件

容器会自动将容器的ID加入自己的/etc/hosts文件中,并解析成容器的IP。
在这里插入图片描述
人为的修改hosts文件

docker run -it --rm (当容器退出时会自动删除容器) --name a1 --add-host www.cxk.com:6.6.6.6 --add-host www.wyf.com:9.9.9.9 alpine

指定容器的DNS

容器的dns服务器,默认采用宿主机的dns 地址,可以用下面方式指定其它的DNS地址。

  • 在容器启动时加选项 --dns=x.x.x.x
  • 在/etc/docker/daemon.json 文件中指定
    在这里插入图片描述
    可以在真机的文件中搜索修改配置/etc/docker/daemon.json 。
vim /etc/docker/daemon.json 
{
        "registry-mirrors": ["https://23b9pwsw.mirror.aliyuncs.com"],
        "dns" : [ "114.114.114.114", "1.1.1.1" ],
        "dns-search": [ "kcg.com" , "kgc.org"  ]
}

重启docker后可用。

容器内和宿主机之间复制文件

可以相互传递。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

选项:
-a, --archive,保留所有权限复制
-L, --follow-link,复制软连接

docker cp 7096e39773a2:/etc/hosts   
docker  cp    -a    /data/ls     7096e39773a2:/

使用systemd控制容器运行(了解)

[root@ubuntu2204 ~]#cat /lib/systemd/system/hello.service
[Unit] 
Description=Hello World
After=docker.service 
Requires=docker.service 
[Service] 
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill busybox-hello
ExecStartPre=-/usr/bin/docker rm busybox-hello
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name busybox-hello busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done"
ExecStop=/usr/bin/docker kill busybox-hello
[Install] 
WantedBy=multi-user.target


[root@ubuntu2204 ~]#systemctl daemon-reload 
[root@ubuntu2204 ~]#systemctl enable --now hello.service

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaEE---Spring MVC(1)

在这之前我们先启动spring 启动spring之前会遇到很多问题,在这里我遇到的问题是没法run,所以我主要是说一下没法run的情况下我们应该怎么办. question 方法一: 这个时候当我们idea的左侧有maven的时候,我们直接点击maven的刷新按钮即可 方法二: 没有maven的时候我们在idea中打开…

论文阅读 -《N-ary Relation Extraction using Graph State LSTM》

摘要 问题定义&#xff1a;跨句n元关系提取是在多个句子中检测n个实体间关系的自然语言处理任务。 现有方法&#xff1a;现有方法通常将文本构建成文档图&#xff0c;包括句子内部和跨句子的依赖关系。 最先进方法&#xff1a;最先进方法将文档图分割为两个有向无环图&#x…

x-cmd pkg | nvim - 命令行文本编辑器,Vim 的一个现代化分支

目录 简介快速入门功能特点Neovim 插件推荐相关竞品进一步阅读 简介 Neovim&#xff08;简称 nvim&#xff09;是用 C 语言开发的文本编辑器&#xff0c;是 Vim 的一个现代化分支&#xff0c;更专注于提升可扩展性和提供更现代的用户体验。 它是基于 Vim 源代码的一个衍生版本…

电商运营与大数据分析

电商运营与大数据分析&#xff0c;这两者如何相辅相成&#xff0c;助力企业在激烈的市场竞争中脱颖而出&#xff0c;我们一起来分析一下。 电商运营是指管理和优化电子商务平台的一系列活动&#xff0c;目标是提高销售额和客户满意度。这包括下面这些。 商品管理&#xff1a;有…

链路级资损防控之资损字段防控实践|得物技术

一、背景 资损防控是业务稳定性保障的重要一环&#xff0c;资损防控的核心主要有三点&#xff1a;事前规避、事中发现和事后应急。在资损事前规避方面&#xff0c;商家业务从业务场景入手&#xff0c;进行各业务模块的资损场景的梳理&#xff0c;将最容易出现资损的场景梳理出…

申请专利需要注意什么

申请专利需要注意什么 在知识经济时代&#xff0c;专利已成为企业保护创新成果、提升市场竞争力的重要手段。然而&#xff0c;申请专利并非一件简单的事情&#xff0c;它涉及多个环节和复杂的法律程序。 一、了解专利基础知识 首先&#xff0c;申请人需要学习和熟悉专利法及其实…

FinalShell安装配置及使用教程

文章目录 一、FinalShell简介二、安装下载 三、简单使用四、快捷键 一、FinalShell简介 FinalShell是一款由国内团队开发的免费软件&#xff0c;它不仅是一个SSH工具&#xff0c;更是一款一体化的服务器和网络管理软件。FinalShell以其丰富的功能和易用性&#xff0c;赢得了广大…

Python图形验证码的识别:一步步详解

在Web开发和自动化测试中&#xff0c;图形验证码的识别是一项常见且重要的任务。图形验证码作为防止自动化攻击的一种手段&#xff0c;通过随机生成包含字符或数字的图片来增加用户验证的难度。然而&#xff0c;对于需要自动化处理的场景&#xff0c;如Web自动化测试或爬虫&…

悍高集团销售费用居高不下:多起专利诉讼待解,实控人去年被限高消费

《港湾商业观察》施子夫 自2022年7月IPO获深交所主板受理至今&#xff0c;悍高集团股份有限公司&#xff08;以下简称&#xff0c;悍高集团&#xff09;的IPO进程已走过两年时间。 2022年12月&#xff0c;证监会下发反馈意见&#xff1b;2023年3月&#xff0c;深交所发出第一…

提升报价单质量的几个细节 | 全球贸易数据服务 | 箱讯科技

1、报价单的格式至少要两种 提供至少两种格式的报价单&#xff0c;第一种为Word文档&#xff0c;这是供客户修改使用的。但是由于Word文档版本的差别&#xff0c;可能打不开&#xff0c;所以还需提供一个PDF版本。 PDF版本比较正规&#xff0c;是标准的文书。最好再提供一个图…

可靠的图纸加密软件,七款图纸加密软件推荐

大家好啊,我是小固,今天跟大家聊聊图纸加密软件。 作为一名设计师,我深知保护自己的知识产权有多重要。曾经就因为图纸泄露,差点血本无归,那个教训可真是惨痛啊!所以我今天就给大家推荐几款靠谱的图纸加密软件,希望能帮到你们。 固信软件https://www.gooxion.com/ 首先要隆重…

学生信息管理系统(Python+PySimpleGUI+MySQL)

吐槽一下 经过一段时间学习pymysql的经历&#xff0c;我深刻的体会到了pymysql的不靠谱之处&#xff1b; 就是在使用int型传参&#xff0c;我写的sql语句中格式化%d了之后&#xff0c;我在要传入的数据传递的每一步的去强制转换了&#xff0c;但是他还是会报错&#xff0c;说我…

Java延迟任务

什么是延迟任务 我们把需要延迟执行的任务叫做延迟任务&#xff0c;比如业务中用户发送审配&#xff0c;过期后需要执行一些操作&#xff0c;网上订单未支付&#xff0c;红包过期取消等等。 Java API 实现延迟任务 ScheduledExecutorService实现延迟任务 public static voi…

Charles证书的设置抓HTTPS数据包

文章目录 1.安装软件2.安装证书3.配置SSL Proxying Settings4.配置Proxy Settings5.配置浏览器流量走代理模式6.抓包效果 每次换新工作都会重新安装/配置一次Charles抓包工具&#xff0c;每次都要倒腾很久&#xff0c;配置流程不复杂&#xff0c;就是时间一久容易忘记&#xff…

下发预警处理通知,记录处理意见;错误预警修正的智慧油站开源了

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用…

海康威视 Vision Master 深度学习模块

Vision Master 深度学习模块 1. 图像分割2. 字符训练3. 目标检测4. 图像分类、图像检索 1. 图像分割 2. 字符训练 3. 目标检测 4. 图像分类、图像检索

Zilliz Cloud✖️ Ivy.ai:构建 GenAI 驱动的聊天业务

“可靠性、可扩展性和性能都很棒。而且我们可以外包所有这些管理工作&#xff0c;不必担心服务器故障&#xff0c;这有助于我们将资源投入到产品开发和创新上&#xff0c;这真正使得我们的业务与众不同。” ——Michal Oglodek&#xff0c; Ivy.ai CTO 关于Ivy.ai Ivy.ai&am…

AI剪辑短视频以及账号管理矩阵工具系统搭建开发

目录 前言 一、系统有哪些功能&#xff1f; 二、怎么开发 前言 通过AI剪辑短视频以及生成短视频&#xff0c;以及对自媒体账号的管理功能的功能进行开发。这款系统能够批量混合剪辑视频然后一键发布到绑定好的自媒体账号里面。 一、系统有哪些功能&#xff1f; 1.AI智能文…

Django中的超级管理员相关操作

超级管理员操作 场景描述添加超级管理员删除超级管理员更改超级管理员名称 场景描述 在进行管理员操作的时候&#xff0c;密码忘记&#xff0c;导致超级管理员无法使用&#xff0c;因此网上搜索相关操作&#xff0c;进行总结记录 相关操作都是在控制台完成 Terminal 添加超级管…

【Vulnhub靶机tomato渗透】

第一步&#xff1a;端口扫描 我使用的是webrobot 访问这个ip&#xff0c;就是它了 第二步&#xff1a;目录扫描 打开kali使用dirb命令扫描http://192.168.189.154下的目录 dirb http://192.168.189.154扫描到目录。 第三步&#xff1a;访问目录地址 看到有几个php的文件 第…