Docker之常用命令介绍

Docker之常用命令

如果你还可以努力、可以付出,就不要轻言停止和放弃。在你停止努力的那一刻之前,一切都还没有什么真正的结果。


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


学习内容

Docker概述
Docker安装
Docker命令
镜像命令
容器命令
操作命令

Docker镜像
容器数据卷
DockerFile
Docker网络原理
DIEA整合Docker
Docker compose
Docker Swarm
CI\CD Jenkins


更多好文点击学习内容连接

一、帮助命令

docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器数量
docker 命令 --help  #帮助命令

帮助文档:https://docs.docker.com/compose/reference/config/

二、镜像命令

1.docker images 查看所有本地主机上搭得镜像

[root@instance-0hy1uvr8 ~]# docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB

解析:
REPOSITORY          镜像的仓库源
TAG				  镜像的标签
IMAGE ID		  镜像的id
CREATED                 镜像的创建时间
SIZE			  镜像的大小

可选项
  -a, --all            #列出所有镜像
  -q, --quiet         #只显示镜像的id

2.docker search 搜索镜像

[root@instance-0hy1uvr8 ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9903                [OK]                
mariadb                           MariaDB is a community-developed fork of MyS…   3626                [OK]            

STARS               #收藏数量

#可选项,通过收藏数来过滤
[root@instance-0hy1uvr8 ~]# docker search mysql --filter=STARS=3000 #搜索出来的镜像是收藏数大于300的
NAME                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql               MySQL is a widely used, open-source relation…   9903                [OK]                
mariadb             MariaDB is a community-developed fork of MyS…   3626                [OK]         
  

3.docker pull下载镜像

#docker pull 镜像名[:tag]
[root@instance-0hy1uvr8 ~]# docker pull mysql  
Using default tag: latest   #没有加版本号,默认下载最新的

4.删除镜像

[root@instance-0hy1uvr8 ~]# docker rmi -f 镜像id   #删除指定容器
[root@instance-0hy1uvr8 ~]# docker rmi -f 镜像id  镜像id 镜像id 镜像id #删除多个容器
[root@instance-0hy1uvr8 ~]# docker rmi -f $(docker images -aq) #删除全部容器

三、容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
docker pull centos

1.新建容器并启动

docker run【可选参数】 image
#参数说明
--name="Name"  容器名字 tomcat01 tomcat02 用来区分容器
-d 			    后台方式运行
-it			    使用交互方式运行,进入容器查看内容
-p			    指定容器的端口  -p   8080:8080
      -p  ip:主机端口:容器端口
-p  主机端口:容器端口(常用)
-p   容器端口
-P			随机指定端口

测试进入容器
[root@instance-0hy1uvr8 ~]# docker run -it centos /bin/bash
[root@3bb9a67af3b6 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

2.退出容器

[root@3bb9a67af3b6 /]# exit    #直接容器停止并退出
   Ctrl+p+q  			       #容器不停止退出

3.列出所有的运行的容器

  # docker ps     #列出当前正在运行的容器
     -a   #列出当前正在运行的容器+带出历史运行过的容器
     -n=?   #显示最近创建的容器
     -q        #只显示容器的编号
[root@instance-0hy1uvr8 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@instance-0hy1uvr8 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
3bb9a67af3b6        centos              "/bin/bash"         2 hours ago         Exited (0) 6 minutes ago                       affectionate_payne
0c354ee148bc        hello-world         "/hello"            24 hours ago    

4.删除容器

 docker  rm  容器id   #删除指定 容器 ,不能删除正在运行的容器
docker rm -f $(docker ps -aq)  #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器

5.启动和停止容器的操作

docker start 容器id  		 #启动容器
docker restart 容器id		#重启容器
docker stop  容器id			#停止当前正在运行的容器
docker kill  容器id			#强制停止当前运行容器

其他命令

1.后台启动应用程序

docker run -d 镜像名
[root@instance-0hy1uvr8 ~]# docker run -d centos

#问题 docker ps 发现centos 停止了

#原因:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止

查看日志
docker logs -tf --tail  日志条数 容器id   #查看日志
#自己编写一段shell脚本
[root@instance-0hy1uvr8 ~]# docker run -d centos /bin/sh -c "while true;do echo panboyang; sleep 1;done"
#显示日志
--tf     #显示日志
--tail  number #显示日志条数
[root@instance-0hy1uvr8 ~]# docker logs -f -t --tail 10 87431016f7ee
2020-08-30T02:59:41.184480799Z panboyang
2020-08-30T02:59:42.186714175Z panboyang
2020-08-30T02:59:43.189210017Z panboyang
2020-08-30T02:59:44.191543033Z panboyang
2020-08-30T02:59:45.195095749Z panboyang
2020-08-30T02:59:46.197400135Z panboyang
2020-08-30T02:59:47.199851791Z panboyang
2020-08-30T02:59:48.203217464Z panboyang

2.查看容器中进程信息

docker top 容器id
[root@instance-0hy1uvr8 ~]# docker top 87431016f7ee
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                11444               11423               0                   10:58               ?                
root                13419               11444               0                   11:14               ?                 

3.查看镜像的云数据

docker inspect 容器id
[root@instance-0hy1uvr8 ~]# docker inspect 87431016f7ee
[
    {
        "Id": "87431016f7ee104971c0ede2981b2c4346e6760bd3c3e91ce6af6146a4d11ae2",
        "Created": "2020-08-30T02:58:24.575775353Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo panboyang; sleep 1;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 11444,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-08-30T02:58:24.956288693Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566",
        "ResolvConfPath": "/var/lib/docker/containers/87431016f7ee104971c0ede2981b2c4346e6760bd3c3e91ce6af6146a4d11ae2/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/87431016f7ee104971c0ede2981b2c4346e6760bd3c3e91ce6af6146a4d11ae2/hostname",
        "HostsPath": "/var/lib/docker/containers/87431016f7ee104971c0ede2981b2c4346e6760bd3c3e91ce6af6146a4d11ae2/hosts",
        "LogPath": "/var/lib/docker/containers/87431016f7ee104971c0ede2981b2c4346e6760bd3c3e91ce6af6146a4d11ae2/87431016f7ee104971c0ede2981b2c4346e6760bd3c3e91ce6af6146a4d11ae2-json.log",
        "Name": "/silly_margulis",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "Capabilities": null,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/6d2327a25bc41c8a84fd84414e719b40e9267ac174ac800e9889951ed6432731-init/diff:/var/lib/docker/overlay2/90a93add301ade1aeb54e1b23886e99c9d913af1f0f91b46024907eb3cc38f04/diff",
                "MergedDir": "/var/lib/docker/overlay2/6d2327a25bc41c8a84fd84414e719b40e9267ac174ac800e9889951ed6432731/merged",
                "UpperDir": "/var/lib/docker/overlay2/6d2327a25bc41c8a84fd84414e719b40e9267ac174ac800e9889951ed6432731/diff",
                "WorkDir": "/var/lib/docker/overlay2/6d2327a25bc41c8a84fd84414e719b40e9267ac174ac800e9889951ed6432731/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "87431016f7ee",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true;do echo panboyang; sleep 1;done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20200809",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "a265b4a19e7cd6109baf2a51373b2c1444b0b172b1b1a935b535426a8a58c1d5",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/a265b4a19e7c",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "755e7c2ee5fa45cd4db13d393a570102a423c1d1d5995ba07a12981f9aa7cc55",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "ce7897f80cbf766d94d6ea3bd682a22e22ffa8f758c30b34b812ea5315a6476d",
                    "EndpointID": "755e7c2ee5fa45cd4db13d393a570102a423c1d1d5995ba07a12981f9aa7cc55",
                    "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
                }
            }
        }
    }
]

4.进入当前正在运行的容器

#我们通常容器都是使用后台方式运行的,需要进入容器,修改配置信息
docker exec -it 容器id   /bin/bash

root@instance-0hy1uvr8 ~]# docker exec -it 87431016f7ee /bin/bash
[root@87431016f7ee /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

#方式二
docker attach 容器id

常用命令小结

docker pull ${CONTAINER NAME}                    #拉取镜像
docker images                                    #查看本地所有镜像
docker ps                                        #查看所有正在运行的容器,加-q返回id
docker ps -a                                     #查看所有容器,加-q返回id
docker rmi ${IMAGE NAME/ID}                      #删除镜像
docker rm ${CONTAINER NAME/ID}                   #删除容器
docker save ${IMAGE NAME} > ${FILE NAME}.tar     #将镜像保存成文件
docker load < ${FILE NAME}.tar                   #从文件加载镜像
docker start ${CONTAINER NAME/ID}                #运行一个以前运行过的容器
docker stop ${CONTAINER NAME/ID}                 #停止一个正在运行的容器
docker logs ${CONTAINER NAME/ID}                 #显示运行容器的日志
docker run...                                    #运行一个容器
    --name ${container name}                          #设置容器名称
    -p ${host port}:${container port}                 #映射主机和容器内的端口
    -e ${env name}=${env value}                       #添加环境变量
    -d                                                #后台运行
    -v ${host folder path}:${container folder path}   #将主机目录挂在到容器内

# Advance use 
docker ps -f "status=exited"                                   #显示所有退出的容器
docker ps -a -q                                                #显示所有容器id
docker ps -f "status=exited" -q                                #显示所有退出容器的id
docker restart $(docker ps -q)                                 #重启所有正在运行的容器
docker stop $(docker ps -a -q)                                 #停止所有容器
docker rm $(docker ps -a -q)                                   #删除所有容器
docker rm $(docker ps -f "status=exited" -q)                   #删除所有退出的容器
docker rm $(docker stop $(docker ps -a -q))                    #停止并删除所有容器
docker start $(docker ps -a -q)                                #启动所有容器
docker rmi $(docker images -a -q)                              #删除所有镜像
docker exec -it ${CONTAINER NAME/ID} /bin/bash                 #进入容器内
docker exec -it ${CONTAINER NAME/ID} ping ${CONTAINER NAME/ID} #一个容器ping另外一个容器
docker top ${CONTAINER NAME/ID}                                #显示一个容器的top信息
docker stats                                                   #显示容器统计信息(正在运行)
docker stats -a                                      #显示所有容器的统计信息(包括没有运行的)
docker stats -a --no-stream      #显示所有容器的统计信息(包括没有运行的) ,只显示一次
docker stats --no-stream | sort -k8 -h                  #统计容器信息并以使用流量作为倒序
docker system 
      docker system df           #显示硬盘占用
      docker system events       #显示容器的实时事件
      docker system info         #显示系统信息
      docker system prune        #清理文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习没有捷径,如果有那便是持之以恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值