一起来学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进行查看,多动手,多尝试,多踩坑,下节继续给大家讲解它的用法~

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

相关文章
|
2月前
|
安全 Linux 虚拟化
Docker到底是什么?为什么它这么火!
如果你是数据中心或云计算IT圈子的人,这一年多来应该一直在听到普通的容器、尤其是Docker,关于它们的新闻从未间断过。
47 9
|
5月前
|
关系型数据库 MySQL 应用服务中间件
|
6月前
|
关系型数据库 MySQL Linux
初识 Docker
在这个快速发展的技术时代 , 我们经常面临着应用部署的复杂性、环境差异以及不同操作系统之间的兼容性问题 . 这些问题不仅消耗大量时间 , 还可能导致项目延期和成本增加 . Docker 的出现解决了我们在应用部署过程中遇到的障碍和挑战 . 通过将应用程序及其依赖环境封装在一个轻量级的、可移植的容器中 , Docker 不仅简化了开发和部署流程 , 还确保了不同环境间的无缝衔接和一致性 .
73 9
|
Java Linux 虚拟化
docker
docker
2337 0
|
11月前
|
Linux 应用服务中间件 nginx
Docker使用
Docker容器技术入门
102 0
|
Kubernetes Linux 持续交付
什么是Docker?
什么是Docker?
141 0
|
存储 运维 关系型数据库
Docker(2)
Docker(2)
|
存储 缓存 Shell
docker 从 0 到 1
容器技术对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此称为容器。Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
105 0
|
Java Linux Shell
Docker必知必会
Docker必知必会
186 0
|
运维 Ubuntu Linux
docker简单理解
docker简单理解
101 0
下一篇
无影云桌面