Docker容器相关操作

文章目录

  • 容器相关操作
  • 1 新建并启动容器
    • 2 容器日志
    • 3 删除容器
    • 4 列出容器
    • 5 创建容器
    • 6 启动、重启、终止容器
    • 7 进入容器
    • 8 查看容器
    • 9 更新容器
    • 10 杀掉容器
    • 11 docker常用命令汇总

容器相关操作

​ 容器是镜像的运行时实例。正如从虚拟机模板上启动 VM 一样,用户也同样可以从单个镜像上启动一个或多个容器。虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核。下图为使用单个 Docker镜像启动多个容器的示意图。

在这里插入图片描述

​ Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是镜像的一个运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子。

​ 容器是基于镜像启动起来的,容 器中可以运行一个或多个进程。镜像是Docker生命周期 中的构建或打包阶段,而容器则是启动或执行阶段。镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

1 新建并启动容器

​ 可以通过下面的方式启动一个容器:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

​ 下面指令是运行一个tomcat镜像:

[root@localhost ~]# docker run -it --rm -p 8080:8080 tomcat:9.0.20-jre8

在这里插入图片描述

​ 常用参数列表:

​ docker run命令常用参数比较多,这里仅仅列出开发岗常用参数,想获得更多参数信息可以查看https://docs.docker.com/engine/reference/commandline/run/,里面有详细的参数介绍和使用说明:

​ 1,-d, --detach=false: 后台运行容器,并返回容器ID;

​ 2,-i, --interactive=false: 以交互模式运行容器,通常与 -t 同时使用;

​ 3,-P, --publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口,不推荐使用;

​ 4,-p, --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口,推荐各位小伙伴们使用

​ 5,-t, --tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

​ 6,–name=“nginx-dream21th”: 为容器指定一个名称

​ 7,-h , --hostname=“dream21th”: 指定容器的hostname

​ 8,-e , --env=[]: 设置环境变量,容器中可以使用该环境变量

​ 9,–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型

​ 10,–link=[]: 添加链接到另一个容器,

​ 11,-v, --volume : 绑定一个卷

​ 12,–privileged=false: 指定容器是否为特权容器,特权容器拥有所有的capabilities

​ 13,**–restart=no:**指定容器停止后的重启策略;no:容器退出时不重启 ;on-failure:容器故障退出(返回值非零)时重启 ; always:容器退出时总是重启

​ 14,–rm=false: 指定容器停止后自动删除容器,不能以docker run -d启动的容器

2 容器日志

​ docker logs :获取容器的日志,执行的方式:

docker logs [OPTIONS] CONTAINER

​ 执行下面指令:

[root@localhost ~]# docker run -itd -p 8080:8080 tomcat:9.0.20-jre8 
2f66b01d73efc7a12fe43da2253c1d05856c6185b29ec4ff2366c76e53668428
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS                    NAMES
2f66b01d73ef        tomcat:9.0.20-jre8   "catalina.sh run"   37 seconds ago      Up 36 seconds       0.0.0.0:8080->8080/tcp   gallant_newton
[root@localhost ~]# docker logs -f gallant_newton

​ 可以在控制台输入:

root@localhost ~]# docker logs --helpUsage:	docker logs [OPTIONS] CONTAINERFetch the logs of a containerOptions:--details        Show extra details provided to logs-f, --follow         Follow log output--since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)--tail string    Number of lines to show from the end of the logs (default "all")-t, --timestamps     Show timestamps--until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
//查看到2022-06-20T10:32:14Z之前的日志	
docker logs -f --until 2022-06-20T10:32:14Z gallant_newton

3 删除容器

docker rm **:**删除一个或多个容器。执行的指令方式如下:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

​ 选择项的一些参数如下:

​ 1,**f 😗*通过 SIGKILL 信号强制删除一个运行中的容器;

​ 2,**-l 😗*移除容器间的网络连接,而非容器本身;

​ 3,**-v 😗*删除与容器关联的卷。

[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS                    NAMES
2f66b01d73ef        tomcat:9.0.20-jre8   "catalina.sh run"   23 minutes ago      Up 23 minutes       0.0.0.0:8080->8080/tcp   gallant_newton
[root@localhost ~]# docker stop gallant_newton
gallant_newton
[root@localhost ~]# docker rm gallant_newton
gallant_newton

4 列出容器

​ 列出容器使用指令:

docker ps [OPTIONS]

​ 查询容器的列表:

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS                    NAMES
df2ad52f9203        tomcat:9.0.20-jre8   "catalina.sh run"   58 seconds ago      Up 57 seconds       0.0.0.0:8080->8080/tcp   beautiful_kowalevski
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                COMMAND             CREATED              STATUS              PORTS                    NAMES
df2ad52f9203        tomcat:9.0.20-jre8   "catalina.sh run"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp   beautiful_kowalevski

​ 输出详情介绍:

​ 1,CONTAINER ID: 容器 ID;

​ 2,IMAGE: 使用的镜像;

​ 3,COMMAND: 启动容器时运行的命令;

​ 4,CREATED: 容器的创建时间;

​ 5,STATUS: 容器状态;

​ 状态有7种:created(已创建)restarting(重启中)running(运行中)removing(迁移中)paused(暂停)exited(停止)dead(死亡)

​ 6,PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

​ 7,NAMES: 自动分配的容器名称。

​ 常用参数说明:

​ 1,**-a 😗*显示所有的容器,包括未运行的;

​ 2,**-q 😗*只显示容器编号。

​ 实用技巧:

停止所有运行容器 
docker stop $(docker ps -qa) 
删除所有的容器 
docker rm $(docker ps -aq) 
docker rm $(docker stop $(docker ps -q)) 
删除所有的镜像 
docker rmi $(docker images -q)

5 创建容器

docker create **:**创建一个新的容器但不启动它。用法同 docker run命令。

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@localhost ~]# docker create -it --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8
f7b45b68607780aa635a3e5996861b30c2ad5ea98be7d4d80d8603ebf72e0900
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS               NAMES
f7b45b686077        tomcat:9.0.20-jre8   "catalina.sh run"   10 seconds ago      Created                                 tomcat9
[root@localhost ~]# 

6 启动、重启、终止容器

docker start :启动一个或多个已经被停止的容器

docker stop :停止一个运行中的容器

docker restart :重启容器

​ 语法:

docker start [OPTIONS] CONTAINER [CONTAINER...] 
docker stop [OPTIONS] CONTAINER [CONTAINER...] 
docker restart [OPTIONS] CONTAINER [CONTAINER...]

​ 操作命令:

[root@localhost ~]# docker start tomcat9
tomcat9
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS                    NAMES
f7b45b686077        tomcat:9.0.20-jre8   "catalina.sh run"   2 minutes ago       Up 5 seconds        0.0.0.0:8080->8080/tcp   tomcat9
[root@localhost ~]# docker stop tomcat9
tomcat9
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker restart tomcat9
tomcat9
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS                    NAMES
f7b45b686077        tomcat:9.0.20-jre8   "catalina.sh run"   3 minutes ago       Up 2 seconds        0.0.0.0:8080->8080/tcp   tomcat9

7 进入容器

docker exec **:**在运行的容器中执行命令。早期有attach命令,对于阻塞命令会等待,所以不方便。在Docker 1.3.0后提供了exec 可以在容器内直接执行任意命令。

​ 语法:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

​ 执行命令:

有bash命令的linux系统:例如centos 
docker run -it --name tomcat9.1 -p 8080:8080 tomcat:9.0.20-jre8-slim 
docker exec -it tomcat9.1 /bin/bash 
没有bash命令的linux系统:例如alpine系统 
docker run -it --name tomcat9.2 -p 8081:8080 tomcat:9.0.20-jre8-alpine 
docker exec -it tomcat9.2 sh

​ 常用参数:

​ 1,**-i 😗*即使没有附加也保持STDIN 打开

​ 2,**-t 😗*分配一个伪终端

8 查看容器

docker inspect : 获取容器/镜像的元数据。

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

​ 执行命令:

docker run -it --name tomcat9 -p 8081:8080 tomcat:9.0.20-jre8-alpine 
docker inspect tomcat9

​ 常用参数:

​ 1,**-f 😗*指定返回值的模板文件。

​ 2,**-s 😗*显示总的文件大小。

​ 3,**–type 😗*为指定类型返回JSON。

9 更新容器

docker update :可以动态地更新容器配置。可以更新一个或多个容器配置。多个容器名称或ID之间使用空格分隔。但update命令不是很成熟,有很多配置项不能动态更新。推荐大家还是rm容器后,再重新run一个新的镜像。

docker update [OPTIONS] CONTAINER [CONTAINER...]

​ 执行命令:

docker run -it --name tomcat9 -p 8081:8080 tomcat:9.0.20-jre8-alpine 
更新容器restart策略 
docker update --restart always tomcat9

10 杀掉容器

docker kill :杀掉一个运行中的容器。

docker kill [OPTIONS] CONTAINER [CONTAINER...]

​ 执行命令:

docker run -it --name tomcat9 -p 8081:8080 tomcat:9.0.20-jre8-alpine 
docker kill tomcat9 
docker ps docker 
ps -a docker start tomcat9

​ 常用参数:

​ **-s 😗*向容器发送一个信号

11 docker常用命令汇总

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式【Zookeeper三大核心之数据节点ZNode】

ZooKeeper在分布式领域,能够帮助解决很多很多的分布式难题,但是底层却只是依赖于两个主要的组件:ZNode文件/数据存储系统和watch监听系统,另外还有一大模块,就是ACL系统。本节我们介绍下znode文件/数据存储系统。 一、…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -后端架构搭建

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

VuePress部署到GitHub Pages

一、git push自动部署 1、创建用于工作流的文件 在项目根目录下创建一个用于 GitHub Actions 的工作流 .yml 文件 name: docson:# 每当 push 到 main 分支时触发部署push:branches: [main]# 手动触发部署workflow_dispatch:jobs:docs:runs-on: ubuntu-lateststeps:- uses: a…

Python-CSV文件的存储

CSV文件存储 CSV其文件以纯文本形式存储表格数据。CSV文件是一个字符序列,可以由任意数目的记录组成,各种记录由某种换行符分隔开。它比Excel文件更加简洁,XLS文本是电子表格,包含文本、数值、公式和格式等内容,CSV中则…

安装extiverse/mercury时报错

问题描述 作者在安装 Flarum 的插件 extiverse/mercury 时报错,内容如下图所示 解决方案 ⚠警告:请备份所有数据再进行接下来的操作,此操作可能会导致网站不可用! 报错原因:主要问题是在安装过程中解决依赖关系。具…

vue项目使用vue-pdf插件预览pdf文件

1、安装vue-pdf&#xff1a;npm install --save vue-pdf 2、使用 具体实现代码&#xff1a;pdfPreview.vue <template><div class"container"><pdfref"pdf":src"pdfUrl":page"currentPage":rotate"pageRotate&qu…

提升办公效率:掌握批量文件重命名的技巧

在日常生活和工作中&#xff0c;经常要处理大量的文件&#xff0c;如文档、图片、音频等。在这些情况下&#xff0c;会遇到要批量重命名文件的情况。如果一个一个地重命名&#xff0c;不仅耗时&#xff0c;而且效率低下。今天来讲解一些技巧通过批量重命名文件&#xff0c;从而…

【springboot+vue项目(零)】开发项目经验积累(处理问题)

一、VUEElement UI &#xff08;一&#xff09;elementui下拉框默认值不是对应中文问题 v-model绑定的值必须是字符串&#xff0c;才会显示默认选中对应中文&#xff0c;如果是数字&#xff0c;则显示数字&#xff0c;修改为&#xff1a; handleOpenAddDialog() {this.dialogT…

Android中的Intent

一.显式Intent 显示Intent是明确目标Activity的类名 1. 通过Intent(Context packageContext, Class<?> cls)构造方法 2.通过Intent的setComponent()方法 3.通过Intent的setClass/setClassName方法 通过Intent(Context packageContext, Class<?> cls)构造方法 通…

【bug】【VSCode】远程终端TERMINAL打不开

【bug】【VSCode】远程终端TERMINAL打不开 可能的原因现象分析解决 可能的原因 昨天晚上vscode在打开多个TERMINAL的情况下&#xff0c;挂了一晚上&#xff0c;今早上来看的时候全都lost connections…。然后关闭再打开就出现了如上现象。 早上一来到实验室就要debug… 现象…

谈谈自己对于 Spring IoC 的了解

如果你现在需要准备面试&#xff0c;可以关注我的公众号&#xff1a;”Tom聊架构“&#xff0c;回复暗号&#xff1a;”578“&#xff0c;领取一份我整理的50W字面试宝典&#xff0c;可以帮助你提高80%的面试通过率&#xff0c;价值很高&#xff01;&#xff01; IoC&#xff0…

Java 集合面试题之链表

Java 集合面试题之链表 文章目录 Java 集合面试题之链表链表单向链表单向链表时间复杂度分析双向链表双向链表时间复杂度分析面试题-ArrayList和LinkedList的区别是什么&#xff1f; 链表 单向链表 链表中的每一个元素称之为结点&#xff08;Node&#xff09; 物理存储单元上…