什么是 Docker 容器?以及操作 Docker 容器相关的命令汇总

news2024/11/28 14:49:52

镜像仓库常用指令:Docker 镜像仓库是什么?有哪些镜像仓库命令?
镜像常用指令:操作 Docker 镜像的常用命令

1. 什么是容器?

  容器是镜像的运行实体。容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。容器有自己独立的命名空间隔离和资源限制。也就是说在容器内部,无法看到主机上的进程、环境变量、网络等信息,这是容器与直接运行在主机上进程的本质区别。

2. 操作容器的命令

2.1 docker run

  • 功能:创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 参数:

    • -d: 后台运行容器,并返回容器 ID
    • -i: 以交互模式运行容器,通常与 -t 同时使用
    • -P: 随机端口映射,容器内部端口随机映射到主机的端口
    • -p: 指定端口映射,格式为: 主机(宿主)端口:容器端口
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
    • –name “……”: 为容器指定一个名称
    • -h “mars”: 指定容器的 hostname
    • -e username=“ritchie”: 设置环境变量
    • –cpuset-cpus=“0-2” or --cpuset-cpus=“0,1,2”: 绑定容器到指定 CPU 运行
    • -m :设置容器使用内存最大值
    • –network=“……”: 指定容器的网络连接类型
    • –link=[]: 添加链接到另一个容器
    • –volume , -v: 绑定一个卷
    • –rm :shell 退出的时候自动删除容器
  • -i、-t 参数

# 拉取一个 centos:7 的镜像
ocker pull centos:7
# 启动容器,并进入该容器的终端,并将它的名字改为 mycentos2
docker run -it --name mycentos2 centos:7

image-20240210171132921

image-20240210171013705

  1. CONTAINER ID: 容器的唯一标识符,通常是一个长字符串。
  2. IMAGE: 容器所基于的镜像。在这个例子中,使用的是 CentOS 7 镜像。
  3. COMMAND: 运行容器时执行的命令。
  4. CREATED: 容器创建的时间。
  5. STATUS: 容器的状态。在这个例子中,“Exited (0)” 表示容器已经停止运行,括号中的数字表示容器退出时的状态码。
  6. PORTS: 容器的端口映射情况。
  7. NAMES: 容器的名称。
  • -p、-P 参数

由于容器里应用程序端口与外面是隔离的,所以需要将容器里的端口与主机的端口相映射。

白板文件-导出

# 将主机的 8081 端口与 nginx 的默认端口相绑定,并将 nginx 后台运行
docker run -d -p 8081:80 nginx:1.23.3

浏览器输入 IP 地址与端口:

image-20240210175119875

访问 nginx 成功!

  • -h

image-20240210185827425

2.2 docker ps

  • 功能:列出容器
docker ps [OPTIONS]docker container ls, docker container list, docker container ps
  • 参数:

    • -a :显示所有的容器,包括未运行的。
    • -f :根据条件过滤显示的内容。
    • –format :指定返回值的模板文件。如 json 或者 table
    • -l :显示 latest 的容器。
    • -n :列出最近创建的 n 个容器。
    • –no-trunc :不截断输出。
  • -a

image-20240210194200589

  • -f

image-20240210194440098

  • -format

image-20240210205652841

2.3 docker create

  • 功能:创建一个容器但是不启动它。
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 参数:
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -P: 随机端口映射,容器内部端口随机映射到主机的端口
    • -p: 指定端口映射,格式为: 主机(宿主)端口:容器端口
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • –name=“……”: 为容器指定一个名称;
    • -h “mars”: 指定容器的 hostname;
    • -e username=“ritchie”: 设置环境变量;
    • –cpuset-cpus=“0-2” or --cpuset-cpus=“0,1,2”: 绑定容器到指定 CPU 运行;
    • -m :设置容器使用内存最大值;
    • –network=“bridge”: 指定容器的网络连接类型;
    • –link=[]: 添加链接到另一个容器;
    • –volume , -v: 绑定一个卷
    • –rm :shell 退出的时候自动删除容器

2.4 docker logs

  • 功能:查看容器日志
docker logs [OPTIONS] CONTAINER
  • 参数:
    • -f: 跟踪日志输出
    • –since :显示某个开始时间的所有日志
    • -t: 显示时间戳
    • -n,–tail :仅列出最新 N 条容器日志

2.5 docker attach

  • 功能:连接到正在运行中的容器
docker attach [OPTIONS] CONTAINER
  • 参数:
    • –sig-proxy:是否将所有信号代理,默认是 true,如果设置为 false,退出的话不会影响容器,否则退出会导致容器退出。

image-20240210212833363

image-20240210213009380

2.6 docker exec

  • 功能:在容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • 参数:
    • -d :分离模式: 在后台运行
    • -i :即使没有附加也保持 STDIN 打开
    • -t :分配一个伪终端
    • -e :设置环境变量
    • -u,–user :指定用户 “<name|uid>[:<group|gid>]”
    • -w,–workdir:指定工作目录

image-20240210214014487

#在容器中以交互模式打开 shell:
docker exec -it mynginx bash

image-20240210214447677

2.7 docker start

  • 功能:启动停止的容器
docker start CONTAINER [CONTAINER...]

2.8 docker stop

  • 功能:停止运行的容器
docker stop CONTAINER [CONTAINER...]

2.9 docker restart

  • 功能:重启容器
docker restart CONTAINER [CONTAINER...]

2.10 docker kill

  • 功能:强制退出容器
docker kill CONTAINER [CONTAINER...]

2.11 docker top

  • 功能:查看容器中运行的进程信息,支持 ps 命令参数。
ocker top CONTAINER [ps OPTIONS]

2.12 docker stats

  • 功能:显示容器资源的使用情况,包括: CPU、内存、网络 I/O 等。
docker stats [OPTIONS] [CONTAINER...]
  • 参数:
    • –all , -a :显示所有的容器,包括未运行的。
    • –format :指定返回值的模板文件。如 table,json
    • –no-stream :展示当前状态就直接退出了,不再实时更新。
    • –no-trunc :不截断输出。

image-20240210220007497

  • CONTAINER IDNAME: 容器 ID 与名称。
  • CPU %MEM %: 容器使用的 CPU 和内存的百分比。
  • MEM USAGE / LIMIT: 容器正在使用的总内存,以及允许使用的内存总量。
  • NET I/O: 容器通过其网络接口发送和接收的数据量。
  • BLOCK I/O: 容器从主机上的块设备读取和写入的数据量。
  • PIDS: 容器创建的进程或线程数

2.13 docker container inspect

  • 功能:查看容器详细信息
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
  • 参数:
    • -f :指定返回值的模板文件。如 table、 json
    • -s :显示总的文件大小

image-20240210220408467

2.14 docker port

  • 功能:用于列出指定的容器的端口映射。
docker port CONTAINER [PRIVATE_PORT[/PROTO]]

2.15 docker cp

  • 功能:在容器和宿主机之间拷贝文件
# 把容器中的文件拷贝到宿主机的目录下
docker cp 容器ID或名称:宿主机的文件 宿主机的目录  
# 把宿主机中的文件拷贝到容器中的某个目录下
docker cp 宿主机的文件  容器ID或名称:容器的目录

image-20240210222356574

image-20240210221952249

2.16 docker diff

  • 功能:检查容器里文件结构的更改。
docker diff CONTAINER

2.17 docker commit

  • 功能:从容器创建一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  • 参数:
    • -a :提交的镜像作者;
    • -c :使用 Dockerfile 指令来创建镜像;可以修改启动指令
    • -m :提交时的说明文字;
    • -p :在 commit 时,将容器暂停

image-20240210224334713

2.18 docker pause

  • 功能:暂停容器中所有的进程。
docker pause CONTAINER [CONTAINER...]

2.19 docker unpause

  • 功能:恢复容器中所有的进程。
docker unpause CONTAINER [CONTAINER...]

2.20 docker rm

  • 功能:删除停止的容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • 参数:-f :通过 SIGKILL 信号强制删除一个运行中的容器。
#删除所有停止的容器
docker rm $(docker ps -a -q)

2.21 docker export

  • 功能:导出容器内容为 tar 文件。
docker export [OPTIONS] CONTAINER
# 导出 nginx 为 tar
docker export -o mynginx202203.tar mynginx

2.22 docker import

  • 功能:将 export 导出的 tar 文件创建一个镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
  • 参数:
    • -c :应用 docker 指令创建镜像。
    • -m :提交时的说明文字。
docker import mynginx202203.tar mynginx:v4

2.23 docker rename

  • 功能:重命名容器
docker rename CONTAINER NEW_NAME

image-20240210232025261

2.24 docker container prune

  • 功能:删除所有停止的容器
docker container prune [OPTIONS]
  • 参数:-f, --force:不提示是否进行确认

image-20240210232522840

3. MySQL 容器化安装

  在 docker 官网中可以找到 MySQL容器启动命令的模板。mysql|Docker 中心

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7

运行后

image-20240211154702788

可以执行 MySQL 相关的指令了,这里创建了一个 test_db 的表。

image-20240211154923208

  • 利用 Navicat 来远程连接服务器上的数据库,连接成功。

image-20240211155406999

4. Redis 容器化安装

docker run --name redis -d -p 8000:6379 redis:7

image-20240211160626791

5. SpringBoot 容器制作

  1. 先创建一个 SpringBoot 项目,并打包。
@RestController
public class HellController {
    @RequestMapping("/hello")
    public String test(){
        return "hello world";
    }
}

image-20240211164320629

  1. jar 包上传到服务器,这里存到了“/root/demo/springboot.jar”
  2. 运行一个 Centos 容器,并进入容器的终端。
 docker run -it --name myjava -p 8081:8080 centos:7 bash

image-20240211170036532

  1. 在容器中下载 jdk
yum install java-1.8.0-openjdk.x86_64
  1. 将宿主机中的 jar 包拷贝到容器的根目录中
 docker cp /root/demo/springboot.jar myjava:/
  1. 后台启动 jar 包,
 nohup java -jar springboot.jar &

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

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

相关文章

FastAI 之书(面向程序员的 FastAI)(八)

原文&#xff1a;www.bookstack.cn/read/th-fastai-book 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第二十章&#xff1a;总结思考 原文&#xff1a;www.bookstack.cn/read/th-fastai-book/cedc7ab42349d210.md 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA…

Github 2024-02-14 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-14统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Rust项目4TypeScript项目1PowerShell项目1Java项目1JavaScript项目1Jupyter Notebook项目1非开发语言项目1Pyth…

每日五道java面试题之java基础篇(八)

第一题.CopyOnWriteArrayList的底层原理是怎样的 ⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的&#xff0c;在向CopyOnWriteArrayList添加元素时&#xff0c;会复制⼀个新的数组&#xff0c;写操作在新数组上进⾏&#xff0c;读操作在原数组上进⾏并且&#xff0c;写操作…

Hive调优——合并小文件

目录 一、小文件产生的原因 二、小文件的危害 三、小文件的解决方案 3.1 小文件的预防 3.1.1 减少Map数量 3.1.2 减少Reduce的数量 3.2 已存在的小文件合并 3.2.1 方式一&#xff1a;insert overwrite (推荐) 3.2.2 方式二&#xff1a;concatenate 3.2.3 方式三&#xff…

DOM事件练习1

DOM事件练习1 1. 演示效果 2. 代码分析 用 ul 创建四个 li 列表整个列表的背景是红色的&#xff0c;鼠标悬浮在列表上&#xff0c;一行的变为蓝色点击任意列表&#xff0c;整个列表的背景变为白色&#xff0c;被点击的列表变为粉色需要用到 js 的点击事onclick件和forEach循环…

手撕Promise

文章目录 一、Promise的初体验1.初体验——抽奖案例 二、Promise的实践练习1.实践练习——fs读取文件2.实践练习——AJAX请求 三、Promise的常见骚操作1.封装fs读取文件操作2.util.promisify方法进行promise风格转化3.封装原生的Ajax4.Promise实例对象的两个属性&#xff08;1&…

《Think in Java》

《Think in Java》 第一章&#xff1a;对象导论 1.1 抽象过程 1&#xff09;万物皆对象。 2&#xff09;程序是对象的集合&#xff0c;它们通过发送消息来告诉彼此所要做的。 3&#xff09;每个对象都有其他对象构成的存储&#xff0c;一个对象可以复用其他对象&#xff0c;从而…

Sentinel 流控-关联模式

关联模式 A关联B, 当B流控后,A 的流控规则也生效了 条件 A 设置高级流控规则,关联 B资源B 设置普通流控规则(独立规则)实例 接口编写 package com.learning.springcloud.order.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.s…

论文解读:MobileOne: An Improved One millisecond Mobile Backbone

论文创新点汇总&#xff1a;人工智能论文通用创新点(持续更新中...)-CSDN博客 论文总结 关于如何提升模型速度&#xff0c;当今学术界的研究往往聚焦于如何将FLOPs或者参数量的降低&#xff0c;而作者认为应该是减少分支数和选择高效的网络结构。 概述 MobileOne(≈MobileN…

DS:树及二叉树的相关概念

创作不易&#xff0c;兄弟们来波三连吧&#xff01;&#xff01; 一、树的概念及结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c…

顾问聘请协议(模板)

甲方&#xff1a;________________   乙方&#xff1a;________________ 诚信合作是一切事业发展的基础&#xff0c;外部智力是企业进步的源泉。甲、乙双方经友好协商达成本协议&#xff0c;甲方愿意聘请乙方为特邀管理顾问&#xff0c;乙方愿按本协议内容与甲方合作。 一、合…

支付交易——重试服务

摘要 为了能在最大限度满足顾客要求的前提下尽可能降低成本&#xff0c;老王在开店的过程中想了很多方法。这充分体现出老王作为一个商人的特质:不放过一个订单&#xff0c;不浪费一分钱。 老王就这样在自己的生意上兢兢业业多年&#xff0c;想着应该不会有什么纰漏。但现实很…

【C++关联式容器】unordered_set

目录 unordered_set 1. 关联式容器额外的类型别名 2. 哈希桶 3. 无序容器对关键字类型的要求 4. Member functions 4.1 constructor、destructor、operator 4.1.1 constructor 4.1.2 destructor 4.1.3 operator 4.2 Capacity ​4.2.1 empty 4.2.2 size 4.2.3 max…

【每日一题】牛客网——链表的回文结构

✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&#xff0c;相互学习…

FT2232调试记录(3)

FT2232调试记录&#xff08;1&#xff09;: FT2232调试记录&#xff08;2&#xff09;: FT2232调试记录&#xff08;3&#xff09;: FT2232 SPI读写函数: 参照SPI提供的文档&#xff1a; 工程&#xff1a; SPI 写函数&#xff1a; FT_STATUS write_byte(FT_HANDLE handle…

【2024年毕设系列】如何使用Anaconda和Pycharm

【2024年毕设系列】如何使用Anaconda和Pycharm 视频教程地址&#xff1a;【2024毕设系列】Anaconda和Pycharm如何使用_哔哩哔哩 Hi&#xff0c;各位好久不见&#xff0c;这里是肆十二&#xff0c;首先在这里给大伙拜年了。 诸位过完年之后估计又要开始为了大作业和毕业设计头疼…

Java+SpringBoot实习管理系统探秘

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

响应式编程四Spring WebFlux高阶实战,2W字干货!!

响应式编程四Spring WebFlux高阶实战 WebFlux作为核心响应式服务器基础响应式Web内核响应式Web和MVC框架基于WebFlux的纯函数式Web基于WebClient的非阻塞跨服务通讯Spring Web Flux 和Spring Web MVC对比 WebFlux的应用基于微服务的系统 大文件上传Spring WebFlux数据库访问集成…

“从根到叶:深入理解堆数据结构“

​​​​​​​ 一.堆的概念及实现 1.1堆的概念 在数据结构中&#xff0c;堆是一种特殊的树形数据结构。堆可以分为最大堆和最小堆两种类型。 最大堆&#xff1a;对于堆中的任意节点&#xff0c;其父节点的值都不小于它的值。换句话说&#xff0c;最大堆中的根节点是堆中的最…

【Java 数据结构】泛型进阶

泛型 1 什么是泛型2 引出泛型2.1 语法 3 泛型类的使用3.1 语法3.2 示例3.3 类型推导(Type Inference) 泛型是如何编译的擦除机制裸类型4 泛型的上界4.1 语法4.2 示例4.3 复杂示例 5 泛型方法5.1 定义语法5.2 示例5.3 使用示例-可以类型推导5.4 使用示例-不使用类型推导 6 通配符…