一起来学Docker(四)

简介: 一起来学Docker(四)

前言

目前正在出一个Docker系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~

Docker大家应该都听说过,特别是在当今云原生爆火的时代,更值得我们去学习,下面会带大家系统性的认识一下Docker,并结合一些例子,让大家快速上手~

好了, 废话不多说直接开整吧~

rm & 删除容器

可以删除一个或多个容器,如果容器正在运行,则需要通过-f参数强制删除

语法:

docker rm [OPTIONS] CONTAINER [CONTAINER…]

OPTIONS的常用值:

  • -f:强制删除,即使容器正在运行也可以删除
  • -l:删除容器之间的网络关系,而不是容器本身
  • -v: 删除容器和它挂载的卷

示例:

[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                       PORTS                              NAMES
3f2d1dd782f1        hello-world               "/hello"                 9 days ago          Exited (0) 47 hours ago                                         clever_mcnulty
[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker rm 3f2d1dd782f
3f2d1dd782f
[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker ps -a
CONTAINER ID        IMAGE       COMMAND                  CREATED             STATUS                       PORTS                              NAMES
[root@iZ2ze5vrnucj8nu52fq932Z ~]# 

pause && 暂停容器

暂停一个或多个正在运行的容器

语法:

docker pause CONTAINER [CONTAINER…]

示例:

docker pause centos

unpause & 取消暂停容器

与之相反的是unpause取消暂停

示例:

docker unpause centos

create & 创建一个容器

创建一个容器,但不运行它,在需要的时候可以使用start命令启动

run命令的用法几乎一致,都会创建一个容器,如果容器依赖的镜像不存在都会从远程仓库拉取,而run命令创建容器后会运行容器, create命令只是创建容器,不运行

语法:

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

示例:

[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker create hello-world
08b908533c3e442f2db93a38d61f0b5941d9c59911faf84b3d5f5c971ed01d22
[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker ps -a
CONTAINER ID        IMAGE              COMMAND                  CREATED             STATUS       PORTS        NAMES
08b908533c3e        hello-world        "/hello"                 5 seconds ago       Created                   objective_mestorf
[root@iZ2ze5vrnucj8nu52fq932Z ~]# 

可以看到STATUSCreated状态,大部分情况下还是用run命令多一些,一步到位~

exec && 在容器中执行命令

可以在一个运行中的容器中执行一个命令

语法:

docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
  • OPTIONS:可选参数
  • CONTAINER:容器
  • COMMAND:要执行的命令
  • ARG:命令的参数

OPTIONS的常用值:

  • -d: 命令在后台运行
  • -i:保持标准输入,通常和-t一起使用
  • -t: 分配一个伪终端,通常和-i一起使用
  • -w: 指定容器的路径

初学者可能对这个命令有点一知半解,在容器里还能运行命令?这个命令是linux主机命令?

exec允许我们和容器进行交互,打个比方,一个正在运行的web服务容器发生了故障,现在需要排查问题,我们知道容器本身处于沙箱状态,从外部无法感知内部发生的问题,想要知道问题还得从应用程序本身下手,所以就得进入容器内部查看。

exec则是以终端的方式与容器进行交互,就好比我们和服务器交互也是终端。进入到容器内部使用的命令,则是以容器本身为主,与宿主主机(当前登录的服务器)无关,也就是说你敲的任何命令对宿主主机不会产生任何影响,有哪些命令可以使用取决于当前容器本身,比如一个nginx服务容器和redis服务容器,第一个可以使用nginx命令而无法使用redis命令,因为这两个容器完全隔离,同样容器也无法执行宿主主机的命令。

示例:

[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker exec -it nginx-gateway /bin/bash
root@5fa7440e04f8:/# pwd
/
root@5fa7440e04f8:/# ls -a
.  ..  .dockerenv  bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@5fa7440e04f8:/# ls
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@5fa7440e04f8:/# ll bin
bash: ll: command not found
root@5fa7440e04f8:/# ls bin
bash   chmod  dash  df     dnsdomainname  egrep  findmnt  gzexe     ln     lsblk  mktemp  mountpoint   pidof  readlink  run-parts  sleep  sync      touch   uname   wdctl   zcmp  zfgrep  zless
cat    chown  date  dir    domainname   false  grep   gzip      login  mkdir  more    mv     pwd  rm    sed      stty   tar       true    uncompress  ypdomainname  zdiff zforce  zmore
chgrp  cp     dd    dmesg  echo     fgrep  gunzip   hostname  ls     mknod  mount   nisdomainname  rbash  rmdir   sh       su     tempfile  umount  vdir    zcat    zegrep  zgrep znew
root@5fa7440e04f8:/# nginx -h
nginx version: nginx/1.21.5
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
             [-e filename] [-c filename] [-g directives]
Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /etc/nginx/)
  -e filename   : set error log file (default: /var/log/nginx/error.log)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file
root@5fa7440e04f8:/# 

nginx为例,访问了容器nginx-gateway内部,root@5fa7440e04f8:/#表示进入了与容器交互的终端,在内部执行了一些命令,在bin目录下可以看到能够使用的命令,大家也可以尝试部署其它的容器

如果想退出与容器交互,使用exit命令即可

stats && 监控容器的资源使用情况

监控容器的资源使用情况,如cpu使用情况、内存使用情况等。每秒刷新一次,使用ctrl+c可以退出查看

语法:

docker stats [OPTIONS] [CONTAINER…]

OPTIONS的常用值:

  • -a: 显示所有容器的资源使用情况,默认只显示正在运行的
  • —format:格式化输出结果
  • —no-stream: 不间隔刷新,只显示第一次统计结果
  • —no-trunc: 不截断显示信息,默认情况下有些字段只显示简略信息,如容器id

示例:

>>docker stats nginx-gateway
CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
nginx-gateway       0.00%               1.453 MiB / 16 GiB   0.08%               3.36 kB / 946 B     21.8 MB / 0 B       2

top & 查看容器中运行的进程信息

查看容器的进程信息

语法:

docker top CONTAINER [ps OPTIONS]
  • CONTAINER:容器
  • OPTIONS:ps命令的可选参数

示例:

[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker top nginx-gateway 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                31387               31317               0                   Oct10               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 31637               31387               0                   Oct10               ?                   00:00:00            nginx: worker process
[root@iZ2ze5vrnucj8nu52fq932Z ~]# 

rename & 重命名容器

对容器进行重命名,在容器run时如果没有使用—name参数指定容器名称,可以使用rename进行命名

语法:

docker rename CONTAINER NEW_NAME

示例:

[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker ps -a
CONTAINER ID        IMAGE                     COMMAND          CREATED             STATUS                       PORTS         NAMES
0e75be7101c8        hello-world               "/hello"         8 seconds ago       Exited (0) 8 seconds ago                   thirsty_golick
[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker rename 0e75be7101c8 hello-world1
[root@iZ2ze5vrnucj8nu52fq932Z ~]# docker ps -a
CONTAINER ID        IMAGE                    COMMAND          CREATED             STATUS                       PORTS          NAMES
0e75be7101c8        hello-world              "/hello"         37 seconds ago      Exited (0) 37 seconds ago                   hello-world1
[root@iZ2ze5vrnucj8nu52fq932Z ~]# 

结束语

本节到这里就结束了,docker命令很多,大家不要去背,如果忘了可以使用docker -h进行查看,多动手,多尝试,多踩坑,下节继续给大家讲解它的用法~

本着把自己知道的都告诉大家,如果本文对有所帮助,点赞+关注鼓励一下呗~

相关文章
|
NoSQL 安全 Redis
|
存储 监控 开发者
Docker详解,你知道的和不知道的都在这儿
@[TOC](目录) Docker 是一个开源的容器化平台,允许开发者将应用程序和所有其依赖项打包成一个轻量级、可移植的容器,以便在任何地方运行。Docker 采用了 Linux Namespace 和 cgroups 等技术,实现了高度的资源隔离和安全保障,使得容器化应用得以快速、高效地部署和运行。 本文将详细介绍 Docker 的架构、原理和应用,包括以下内容: 1. Docker 的架构和原理 2. Docker 的安装和使用 3. Docker 的基本命令和操作 4. Docker 的容器管理 5. Docker 的网络管理 6. Docker 的存储管理 7.
149 0
|
6月前
|
存储 运维 持续交付
|
5月前
|
存储 API 持续交付
Docker介绍(一)
Docker是开源的应用容器引擎,让开发者打包应用及依赖到可移植容器中,可在任何环境一致运行。它提供快速启动、高效资源利用、轻松迁移和维护,适用于开发、测试和生产。Docker由客户端、守护进程、REST API组成,支持镜像存储在仓库如Docker Hub。容器是隔离的执行环境,能在同一主机上互不影响地运行多个容器。
|
6月前
|
存储 程序员 Linux
什么是 Docker ?
本文介绍了容器技术的起源和Docker这一容器技术的简介。在传统开发过程中,环境搭建的重复性工作浪费了大量时间和资源。为了解决这个问题,容器技术应运而生,它减少了环境重复搭建的需求,提高了效率。相较于虚拟机,容器更轻量级,启动快速,资源利用率更高。Docker作为流行的容器技术,可以固化配置、自动化CI/CD流程、实现应用隔离、快速扩容缩容以及节省成本。Docker由客户端、守护进程和注册表服务组成,其核心概念包括镜像、容器和仓库。
|
6月前
|
运维 Java 虚拟化
[Docker] Docker为什么出现
[Docker] Docker为什么出现
|
11月前
|
Linux 应用服务中间件 nginx
Docker使用
Docker容器技术入门
102 0
|
Java Shell Linux
Docker使用总结
Docker使用总结
127 0
|
Linux Docker 容器