当前位置: 首页 > news >正文

Docker-基础命令使用

文章目录

  • 前言
  • 命令帮助
  • 命令执行示意图
  • docker run
  • docker ps
  • docker inspect
  • docker exec
  • docker attach
  • docker stop
  • docker start
  • docker top
  • docker rm
  • docker prune
  • 参考说明

前言

本文主要介绍Docker基础命令的使用方法。

命令帮助

Docker命令获取帮助方法

# docker -h
Flag shorthand -h has been deprecated, please use --helpUsage:  docker [OPTIONS] COMMAND  用法A self-sufficient runtime for containers 功能介绍Options: 选项--config string      Location of client config files (default "/root/.docker")-c, --context string     Name of the context to use to connect to the daemon (overridesDOCKER_HOST env var and default context set with "docker context use")-D, --debug              Enable debug mode-H, --host list          Daemon socket(s) to connect to-l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal")(default "info")
...
查看某个命令的帮助
# docker run --helpUsage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Create and run a new container from an image
Aliases:docker container run, docker runOptions:--add-host list                  Add a custom host-to-IP mapping (host:ip)--annotation map                 Add an annotation to the container (passed through to the OCI runtime) (default map[])
...

Docker官网提供的命令说明

网址链接:https://docs.docker.com/engine/reference/commandline/run/
在这里插入图片描述

命令执行示意图

在这里插入图片描述

docker run

命令解释
docker run 运行一个命令在容器中,命令是主体,没有命令容器就会消亡
-i 交互式
-t 提供终端
--name c1 把将运行的容器命名为c1
centos:latest 使用centos最新版本容器镜像
bash 在容器中执行的命令
# docker run -i -t --name c1 centos:latest bash
...下载并安装完镜像后,直接进入容器中的命令行
[root@948f234e22a1 /]#查看主机名
[root@948f234e22a1 /]# hostname
948f234e22a1查看网络信息
[root@948f234e22a1 /]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group defaultlink/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever查看进程
[root@948f234e22a1 /]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  12036  2172 pts/0    Ss   09:58   0:00 bash
root         16  0.0  0.0  44652  1784 pts/0    R+   10:02   0:00 ps aux查看用户
[root@948f234e22a1 /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin查看当前目录
[root@948f234e22a1 /]# pwd
/查看根目录,每个容器拥有自己独立的文件系统
[root@948f234e22a1 /]# ls
bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr退出bash命令执行,观察容器运行情况
[root@948f234e22a1 /]# exit
exit
[root@localhost ~]#

docker ps

命令解释
docker ps 查看正在运行的容器,本案例由于没有命令在容器中运行,因此容器被停止了,所以本次查看没有结果。

docker ps --all 可以查看正在运行的和停止运行的容器

# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES# docker ps --all
CONTAINER ID   IMAGE           COMMAND     CREATED             STATUS                         PORTS     NAMES
948f234e22a1   centos:latest   "bash"    10 minutes ago      Exited (0) 2 minutes ago                    c1

输出内容解释

CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
容器ID容器镜像名容器中运行的命令创建时间状态端口容器名称
9834c8c18a7cnginx:latest“/docker-entrypoint.…”24 seconds agoUp 23 seconds80/tcpcondescending_pare

docker inspect

命令解释
docker inpect 查看容器详细信息

操作说明
在上述提示符处按住ctrl键,再按p键与q键,可以退出交互式的容器,容器会处于运行状态。

# docker run -it --name c2 centos:latest bash
[root@9f2eea16da4c /]# # docker ps
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"    37 seconds ago   Up 35 seconds             c2# docker inspect c2"Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "d3de2fdbc30ee36a55c1431ef3ae4578392e552009f00b2019b4720735fe5a60","EndpointID": "d1a2b7609f2f73a6cac67229a4395eef293f695c0ac4fd6c9c9e6913c9c85c1c","Gateway": "172.17.0.1","IPAddress": "172.17.0.2","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:02","DriverOpts": null}}}}
]

docker exec

命令解释
docker exec 在容器外实现与容器交互执行某命令
-it 交互式
c2 正在运行的容器名称
ls /root 在正在运行的容器中运行相关的命令
让c2容器执行命令 ls /root
# docker exec -it c2 ls /root
anaconda-ks.cfg  anaconda-post.log  original-ks.cfg下面命令与上面命令执行效果一致
# docker exec c2 ls /root
anaconda-ks.cfg
anaconda-post.log
original-ks.cfg

docker attach

命令解释
docker attach 类似于ssh命令,可以进入到正在运行的容器中
c2 正在运行的容器名称,也可以使用容器id
如果进入的一个容器是无法交互的,则会卡住。

退出说明
docker attach 退出容器时,如不需要容器再运行,可直接使用exit退出;如需要容器继续运行,可使用ctrl+p+q

案例

查看正在运行的容器
# docker ps
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"    13 minutes ago   Up 13 minutes             c2进入c2容器内部
[root@localhost ~]# docker attach c2
[root@9f2eea16da4c /]#

docker stop

命令说明

停止一个正在运行的容器,可以通过docker ps -all查看到。

# docker ps
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"    22 minutes ago   Up 22 minutes             c2# docker stop 9f2eea16da4c
9f2eea16da4c# docker ps --all
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS                       PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"                   22 minutes ago   Exited (137) 4 seconds ago  c2

docker start

命令解释

启动一个或多个已经停止的容器。如果容器已经移除则无法启动

# docker ps --all
CONTAINER ID   IMAGE           COMMAND     CREATED          STATUS                       PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"      22 minutes ago   Exited (137) 4 seconds ago              c2# docker start 9f2eea
9f2eea# docker ps
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS     NAMES
9f2eea16da4c   centos:latest   "bash"    24 minutes ago   Up 16 seconds             c2

docker top

命令解释

在Docker Host查看容器中运行的进程信息

docker top 查看container内进程信息,指在docker host上查看,与docker exec -it c2 ps -ef不同。

# docker top c2
UID    PID     PPID      C      STIME        TTY              TIME                CMD
root  69040   69020      0      18:37       pts/0           00:00:00              bash

返回结果说明

UIDPIDPPIDCSTIMETTYTIMECMD
用户id容器中进程id容器idcpu占用启动时间所在的终端占用cpu总长执行的命令
root6904069020018:37pts/000:00:00bash

docker rm

命令解释

如果容器已停止,使用此命令可以直接删除;如果容器处于运行状态,则需要提前关闭容器后,再删除容器。

删除时可以使用容器名称或者id。

[root@dev-study ~]# docker ps --all
CONTAINER ID   IMAGE          COMMAND                   CREATED       STATUS                     PORTS     NAMES
afce7660b05f   nginx:latest   "/docker-entrypoint.…"   2 hours ago   Exited (0) 9 seconds ago             eloquent_hodgkin
51bbe4e8ffd5   nginx:latest   "/docker-entrypoint.…"   2 hours ago   Up 2 hours                 80/tcp    frosty_hodgkin[root@dev-study ~]# docker remove 7660
Error response from daemon: No such container: 7660
[root@dev-study ~]# docker remove afce7660b05f
afce7660b05f
[root@dev-study ~]# docker ps -all
CONTAINER ID   IMAGE          COMMAND                   CREATED       STATUS       PORTS     NAMES
51bbe4e8ffd5   nginx:latest   "/docker-entrypoint.…"   3 hours ago   Up 3 hours   80/tcp    frosty_hodgkin
[root@dev-study ~]# 

批量删除容器

如果存在大量容器需要删除,可以使用管道方式来批量删除

# docker ps --all
CONTAINER ID   IMAGE           COMMAND          CREATED      STATUS                  PORTS    NAMES
948f234e22a1   centos:latest   "bash"           2 days ago   Exited (0) 2 days ago            c1
01cb3e01273c   centos:latest   "bash"           2 days ago   Exited (0) 2 days ago            systemimage1
46d950fdfb33   nginx:latest    "/docker-ent..." 2 days ago   Exited (0) 2 days ago            upbeat_goldbergNR>=2代表从第二行开始,print $1 代表只要第一列的容器id
# docker ps --all | awk '{if (NR>=2){print $1}}' | xargs docker rm

docker prune

命令解释

Docker 1.13.0+ 引入了这个清理命令。官方文档。prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像。

使用案例

删除未使用的容器镜像
# docker image prune删除所有未使用的容器镜像
# docker image prune -a删除所有停止运行的容器
# docker container prune删除所有未被挂载的卷
# docker volume prune删除所有网络
# docker network prune删除docker所有资源
# docker system prune

参考说明

本文内容主要来源于马士兵视频教程(容器管理工具 Docker),结合了老师的笔记以及自己的实践做了一些修改。

http://www.lryc.cn/news/161371.html

相关文章:

  • 【Python 程序设计】Python 中的类型提示【06/8】
  • 78 # koa 中间件的实现
  • 国产操作系统麒麟v10中遇到的一些问题
  • Gridea+GitPage+Gittalk 搭建个人博客
  • 代码质量保障第2讲:单元测试 - 浅谈单元测试
  • “五度晟企通”企业发展服务平台正式发布,帮扶企业行稳致远!
  • Java类和对象(七千字详解!!!带你彻底理解类和对象)
  • 机器学习笔记:node2vec(论文笔记:node2vec: Scalable Feature Learning for Networks)
  • go基础10 -字符串的高效构造与转换
  • VR钢铁实训 | 铁前事业部虚拟仿真培训软件
  • DevOps
  • IJ中PHP环境的搭建和使用教程
  • java开发之个人微信的二次开发
  • ISYSTEM调试实践11-Profiler Timeline和软件运行时间分析
  • 第十八章 ObjectScript - 使用例程
  • Linux中select poll和epoll的区别
  • 新知同享|Cloud 开发加速创新,更加安全
  • el-form内容重置(解决点击保存关闭后再点击新增会有编辑携带的数据的问题)
  • 怎样吃透一个java项目?
  • linux 网络命令
  • QUIC协议科普导入(一)
  • matlab 矩阵逆运算的条件数
  • [构建自己的 Vue 组件库] 小尾巴 UI 组件库
  • 由于电脑出现msvcr110.dll提示错误的解决方法
  • [LINUX使用] iptables tcpdump wireshark tshark
  • 显示器鼠标滚动时或者拖拽文字变为绿色
  • 高校网络安全体系建设及零信任安全架构应用的探索
  • Android Studio设置
  • 【RabbitMQ】介绍及消息收发流程
  • 如何预防最新的Mallox变种malloxx勒索病毒感染您的计算机?