前言

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。

然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关注!


什么是容器

通俗地讲,容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。虽然容器的本质是主机上运行的一个进程,但是容器有自己独立的命名空间隔离和资源限制。也就是说,在容器内部,无法看到主机上的进程、环境变量、网络等信息,这是容器与直接运行在主机上进程的本质区别。容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。 这将添加一个容器层,该层允许修改镜像的整个副本。

容器的生命周期

  1. created:初建状态
  2. running:运行状态
  3. stopped:停止状态
  4. paused: 暂停状态
  5. deleted:删除状态

命令控制状态转换

  • docker run : 创建容器,并立即启动运行,进入运行状态;

  • docker start : 容器转为运行状态;

  • docker stop : 容器将转入停止状态;

  • docker kill : 容器在故障(死机)时,执行 kill(断电),容器转入停止状态,这种操作容易丢失数据,除非必要,否则不建议使用;

  • docker restart : 重启容器,容器转入运行状态;

  • docker pause : 容器进入暂停状态;

  • docker unpause : 取消暂停状态,容器进入运行状态;

  • docker rm : 删除容器,容器转入删除状态。

  • killed by out-of-memory(因内存不足被终止):宿主机内存被耗尽,也被称为 OOM:非计划终止这时需要杀死最吃内存的容器

  • container process exitde(异常终止):出现容器被终止后,将进入 Should restart?选择操作:

    • yes 需要重启,容器执行 start 命令,转为运行状态。
    • no 不需要重启,容器转为停止状态。

容器命令详解

命令清单

命令 别名 功能
docker create docker container create 创建容器
docker run docker container run 运行容器
docker attach docker container attach 连接到正在运行中的容器
docker commit docker container commmit 将镜像提交为容器
docker cp docker container cp 在容器和宿主机之间拷贝
docker diff docker container diff 检查容器里文件结构的更改
docker exec docker container exec 在运行的容器中执行命令
docker export docker container export 将容器导出为 tar
docker container inspect 查看容器详细信息
docker kill docker container kill 杀死容器
docker logs docker container logs 查看日志
docker ps docker container ls
docker container list
docker container ps
查看正在运行的进程
docker pause docker container pause 暂停进程
docker port docker container port 查看容器的端口映射
docker container prune 删除停止的容器
docker rename docker container rename 重命名容器
docker restart docker container restart 重启容器
docker rm docker container rm
docker container remove
删除容器
docker start docker container start 启动容器
docker stats docker container stats 查看资源占用信息
docker stop docker container stop 停止容器
docker top docker container top 查看某个容器的资源占用
docker unpause docker container unpause 继续运行容器
docker update docker container update 更新容器配置
docker wait docker container wait 阻止一个或多个容器停止,然后打印退出码

docker create

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

参数和docker run基本上是一样的。

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

docker logs

docker logs [OPTIONS] CONTAINER

参数

-f, --follow: 跟踪日志输出
--since : 显示某个开始时间的所有日志
-t, --timestamps : 显示时间戳
--tail : 仅列出最新 N 条容器日志

先启动一个容器。

查看现在正在运行的容器。

[root@ALiCentos7:~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8a7b485c2ae nginx:1.21.4 "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp, :::8080->80/tcp mywebsite1

查看日志。

-f选项可以实时输出结果。

docker attach

连接到正在运行中的容器。

docker attach [OPTIONS] CONTAINER
--sig-proxy : 是否将所有信号代理,默认是 true,如果设置为 false,退出的话不会影响容器,否则退出会导致容器退出。

很好理解,就是连接到一个容器上。

在这个bash上,是可以收到这个容器的io信息的,如果我们此时^C,这个容器也会被杀掉。

也就是说,attach进去之后,容器是可以收到这个bash发送的信号的。

但是,如果带上--sig-proxy,信号就会被代理。

docker exec

在容器中执行命令。

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

参数

-d : 分离模式: 在后台运行
-i : 即使没有附加也保持 STDIN 打开
-t : 分配一个伪终端
-e : 设置环境变量
-u, --user : 指定用户 "<name|uid>[:<group|gid>]"
-w, --workdir: 指定工作目录

实操。

docker start 和 docker stop

很简单,直接看例子。

但是docker stop有参数的。

-s : 发送的信号

docker restart

重启容器

docker restart [OPTIONS] CONTAINER [CONTAINER...]
-s : 发送信号

docker kill

强制退出容器

参数:-s :发送的信号

  • docker stop 发送的是 SIGTERM 信号,docker kill 发送的是 SIGKILL 信号

docker kill会更暴力地杀死一个容器。

docker top

查看容器中运行的进程信息,支持 ps 命令参数。

docker top CONTAINER [ps OPTIONS]

容器运行时不一定有/bin/bash 终端来交互执行 top 命令,而且容器还不一定有top命令,可以使用 docker top来实现查看容器中正在运行的进程。

docker stats

显示容器资源的使用情况,包括:CPU、内存、网络 I/O 等。

docker stats [OPTIONS] [CONTAINER...]

参数

--all , -a : 显示所有的容器,包括未运行的。
--format : 指定返回值的模板文件。如 table,json
--no-stream : 展示当前状态就直接退出了,不再实时更新。
--no-trunc : 不截断输出。

docker container inspect

查看容器详细信息

docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

参数

-f : 指定返回值的模板文件。如 table、json
-s : 显示总的文件大小。

可以重定向到一个.json文件里面去。

docker container inspect mywebsite > mywebsite_docker_tmp.json

docker port

用于列出指定的容器的端口映射,或者查找将 PRIVATE_PORT NAT 到面向公众。

docker port CONTAINER [PRIVATE_PORT[/PROTO]]

docker cp

在容器和宿主机之间拷贝文件

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

docker diff

docker diff CONTAINER

docker commit

从容器创建一个新的镜像。

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

参数

-a : 提交的镜像作者;
-c : 使用 Dockerfile 指令来创建镜像;可以修改启动指令
-m : 提交时的说明文字;
-p : 在 commit 时,将容器暂停
docker commit mywebsite mywebsite-yufc:v1.0

docker pause 和 docker unpause

暂停容器中所有的进程。

docker pause CONTAINER [CONTAINER...]


docker rm

删除停止的容器。

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

关键参数:

-f : 通过 SIGKILL 信号强制删除一个运行中的容器

docker wait

阻塞运行直到容器停止,然后打印出它的退出代码。

docker wait CONTAINER [CONTAINER...]

先把一个容器运行起来,然后退出,让docker wait打印退出码看看。



docker rename

给一个容器重命名

docker rename CONTAINER NEW_NAME

docker container prune

docker container prune [OPTIONS]

参数

-f, --force : 不提示是否进行确认

docker update

更新容器配置

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

参数

--cpus :cpu 数量
--cpuset-cpus : 使用哪些 cpu
--memory : 内存限制
--memory-swap :交换内存
--cpu-period : 是用来指定容器对 CPU 的使用要在多长时间内做一次重新分配
--cpu-quota :是用来指定在这个周期内,最多可以有多少时间用来跑这个容器

Docker从认识到实践再到底层原理(六-1)|Docker容器基本介绍+命令详解的更多相关文章

  1. linux中docker容器安装vi命令详解

    在使用docker容器时,同时你docker里的系统正好是debian或ubuntu的时候,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要 ...

  2. Dockerfile 命令详解及最佳实践

    Dockerfile 命令详解 FROM 指定基础镜像(必选) 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指 ...

  3. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  4. 【Devops】【docker】【CI/CD】关于jenkins构建成功后一步,执行的shell命令详解+jenkins容器运行宿主机shell命令的实现方法

    1.展示这段shell命令 +详解 #================================================================================= ...

  5. Docker常用命令详解

    docker ps 查看当前正在运行的容器 docker ps -a 查看所有容器的状态 docker start/stop id/name 启动/停止某个容器 docker attach id 进入 ...

  6. [转帖]Docker学习之Dockerfile命令详解

    Docker学习之Dockerfile命令详解 https://it.baiked.com/system/docker/2436.html 图挺好的 前言 之前,制作镜像的伪姿势搭建已经见过了,今天介 ...

  7. docker基础命令详解

    Commands: attach    Attach to a running container build     Build an image from a Dockerfile commit  ...

  8. [转]Docker(三):Dockerfile 命令详解

    本文转自:https://blog.csdn.net/ityouknow/article/details/79600406 上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dock ...

  9. Docker(三):Dockerfile 命令详解

    上一篇文章Docker(二):Dockerfile 使用介绍介绍了 Dockerfile 的使用,这篇文章我们来继续了解 Dockerfile ,学习 Dockerfile 各种命令的使用. Dock ...

  10. Docker 学习之命令详解

    1. docker version docker version 显示 Docker 版本信息. 2. docker info docker info 显示 Docker 系统信息,包括镜像和容器数. ...

随机推荐

  1. Codeforce:723A. The New Year: Meeting Friends (水题)

    题意:有三个好朋友的家都住在x轴的不同坐标,问新年的时候三个朋友之间问候走的最短距离 max{(a,b,c)} - min{(a,b,c)} 即可 编译器由 VS2017 切换到VScode使用,纪念 ...

  2. 传统能源转型:数字孪生智慧火电厂 3D 可视化

    前言 火力发电厂满足了全世界将近五成的电力需求,在我国超过半数以上的电力来源于火力发电.随着双碳政策的推行,在国家清洁能源消纳和环保的需求下,对火电厂在深度调峰.超低排放.灵活运行等方面提出了更高要求 ...

  3. <vue 基础知识 6、条件判断标签v-if>

    代码结构 一.     01-v-if用法 1.效果 根据分数的不同展现不同的汉字 2.代码 01-v-if用法.html <!DOCTYPE html> <html lang=&q ...

  4. df -h与df -i的区别

    一. df命令详解: linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息 -a 全部文件系统列表 -h ...

  5. centos7进入单用户模式(忘记密码操作-真正解决方案)

    centos7密码忘记了,如何登录进去呢. 1.重新启动 2.按e进入以下界面:linux系统引导  3.在标记的如下位置行尾增加:rw init=/bin/sh  4.按Ctrl+x执行可进入单用户 ...

  6. Redis 使用 hyperLogLog 实现请求ip去重的浏览量

    本文为博主原创,转载请注明出处: 未完,待续....

  7. 02-UPF-Power Domain

    How do we use power domain 使用UPF至少有一个power domain power domain可以进行嵌套 Defining Power Domain Example P ...

  8. Laravel - blade 模板继承的使用

    1. 模板文件 <!DOCTYPE html> <html lang="en"> <head>     <meta charset=&qu ...

  9. Spring Boot对接Oracle数据库

    Spring Boot对接Oracle数据库 最近学习了Oracle数据库,那么如何使用Spring Boot和MyBatis Plus对接Oracle数据库呢? 这就有了这篇随记,具体流程如下 1. ...

  10. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.21)

    一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...