当前位置 博文首页 > ?:Docker学习之路03:Docker的常用命令

    ?:Docker学习之路03:Docker的常用命令

    作者:[db:作者] 时间:2021-07-17 19:07

    Docker学习之路03:Docker的常用命令


    Docker学习路线传送门:

    Docker学习之路01:Docker的安装
    Docker学习之路02:阿里云镜像加速器
    Docker学习之路03:Docker的常用命令
    Docker学习之路04:创建定制Nginx镜像
    Docker学习之路05:五分钟用docker compose搭建一个自己的个人博客网站!
    Docker学习之路06:基于 Docker 在Ubuntu系统部署Hadoop、Hbase以及Spark


    一、帮助命令

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

    Docker官方帮助文档地址:https://docs.docker.com/engine/reference/commandline/

    二、镜像命令

    docker images 查看所有本地的主机上的镜像

    [root@master /]# docker images
    REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
    hello-world   latest    bf756fb1ae65   14 months ago   13.3kB
    
    # 解释
    REPOSITORY	镜像的仓库源
    TAG			镜像的标签
    IMAGE ID	镜像的ID
    CREATED		镜像的创建时间
    SIZE		镜像的大小
    
    # 可选项
    	-a, --all			# 列出所有的镜像
    	-q, --quiet			# 只显示镜像的ID
    

    docker search搜索镜像

    [root@master /]# docker search mysql
    NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    mysql                             MySQL is a widely used, open-source relation…   10612     [OK]       
    mariadb                           MariaDB Server is a high performing open sou…   3979      [OK]       
    
    
    # 可选项 通过搜藏来过滤
     --filter=STARS=3000
     
     [root@master /]# docker search mysql --filter=STARS=3000
    NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    mysql     MySQL is a widely used, open-source relation…   10612     [OK]       
    mariadb   MariaDB Server is a high performing open sou…   3979      [OK]       
    [root@master /]# docker search mysql --filter=STARS=5000
    NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    mysql     MySQL is a widely used, open-source relation…   10612     [OK]       
    
    

    docker pull 下载镜像

    # 下载镜像 docker pull 镜像名[:tag]
    [root@master /]# docker pull mysql
    Using default tag: latest	# 如果不写 tag,默认就是 lastest
    latest: Pulling from library/mysql
    a076a628af6f: Pull complete 	#分层下载,docker image的核心 联合文件系统
    f6c208f3f991: Pull complete 
    88a9455a9165: Pull complete 
    406c9b8427c6: Pull complete 
    7c88599c0b25: Pull complete 
    25b5c6debdaf: Pull complete 
    43a5816f1617: Pull complete 
    1a8c919e89bf: Pull complete 
    9f3cf4bd1a07: Pull complete 
    80539cea118d: Pull complete 
    201b3cad54ce: Pull complete 
    944ba37e1c06: Pull complete 
    Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c
    Status: Downloaded newer image for mysql:latest
    docker.io/library/mysql:latest	#真实地址
    
    # 等价于它
    docker pull mysql
    docker pull docker.io/library/mysql:latest
    
    # 指定版本下载
    [root@master /]# docker pull mysql:5.7
    5.7: Pulling from library/mysql
    a076a628af6f: Already exists 
    f6c208f3f991: Already exists 
    88a9455a9165: Already exists 
    406c9b8427c6: Already exists 
    7c88599c0b25: Already exists 
    25b5c6debdaf: Already exists 
    43a5816f1617: Already exists 
    1831ac1245f4: Pull complete 
    37677b8c1f79: Pull complete 
    27e4ac3b0f6e: Pull complete 
    7227baa8c445: Pull complete 
    Digest: sha256:b3d1eff023f698cd433695c9506171f0d08a8f92a0c8063c1a4d9db9a55808df
    Status: Downloaded newer image for mysql:5.7
    docker.io/library/mysql:5.7
    

    在这里插入图片描述

    docker rmi 删除镜像

    [root@master /]# docker rmi -f 容器ID				   #删除一个镜像
    [root@master /]# docker rmi -f 容器ID 容器ID 容器ID	#删除多个镜像
    [root@master /]# docker rmi -f $(docker images -aq)  #删除所有镜像
    

    三、容器命令

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

    [root@master /]# docker pull centos
    

    新建容器并启动

    docker run [可选参数] image
    
    # 参数说明
    --name="Name"	容器名字 tomcat01 tomcat02,用来区分容器
    -d				后台方式运行
    -it				使用交互方式运行,进入容器查看内容
    -p
    	-p ip:主机端口:容器端口
    	-p 主机端口:容器端口	(常用)
    	-p 容器端口
    -P				随机指定端口
    
    
    # 测试、启动并进入容器
    [root@master /]# docker run -it centos /bin/bash
    [root@475a614ebdad /]# ls
    bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
    dev  home  lib64  media       opt  root  sbin  sys  usr
    
    # 从容器中退回主机
    [root@475a614ebdad /]# exit
    exit
    [root@master /]# ls
    bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
    boot  etc  lib   media  opt  root  sbin  sys  usr
    

    列出所有运行的容器

    # docker ps 命令
    	# 列出当期正在运行的容器
    -a	# 列出当前正在运行的容器+带出历史运行过的容器
    -n=[数字参数]	# 显示最近创建的容器
    -q	# 只显示容器的编号
    
    [root@master /]# docker ps 
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    [root@master /]# docker ps -a
    CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                      PORTS     NAMES
    475a614ebdad   centos        "/bin/bash"   5 minutes ago    Exited (0) 4 minutes ago              unruffled_spence
    8681d760a302   hello-world   "/hello"      14 minutes ago   Exited (0) 13 minutes ago             strange_carver
    9eed05d63c0c   hello-world   "/hello"      58 minutes ago   Exited (0) 58 minutes ago             sharp_kapitsa
    fd0aa343c2f7   hello-world   "/hello"      2 weeks ago      Exited (0) 2 weeks ago                pedantic_babbage
    [root@master /]# docker ps -n=1
    CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
    475a614ebdad   centos    "/bin/bash"   5 minutes ago   Exited (0) 4 minutes ago             unruffled_spence
    

    退出容器

    exit	# 容器直接停止并退出
    Ctrl + P + Q  #容器不停止退出
    

    删除容器

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

    启动和停止容器的操作

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

    四、常用其他命令

    后台启动容器

    # 命令 docker run -d 镜像名
    [root@master /]# docker run -d centos
    
    # 问题docker ps ,发现 centos 停止了
    
    # 常见的坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
    # nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
    

    查看日志

    docker logs -f -t --tail 容器
    
    # 自己编写一段shell脚本
    [root@master /]# docker run -d centos /bin/bash -c "while true;do echo JohnZhuang;sleep 1;done"
    a25fce1505e3e32c645f7990d0805fa6dff4a73d3cf8bff2f77fb78242b6a544
    
    # 查看镜像
    [root@master /]# docker ps
    CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
    a25fce1505e3   centos    "/bin/bash -c 'while…"   6 seconds ago   Up 5 seconds             adoring_brahmagupta
    
    # 显示日志
     -tf				# 查看日志
     --tail [数字参数]	 # 要显示日志的条数	
    [root@master /]# docker logs -f -t --tail 10 a25fce1505e3
    2021-03-15T14:31:33.070462470Z JohnZhuang
    2021-03-15T14:31:34.079385974Z JohnZhuang
    

    查看容器中进程信息

    [root@master /]# docker top a25fce1505e3
    UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
    root                5990                5970                0                   22:31               ?                   00:00:00            /bin/bash -c while true;do echo JohnZhuang;sleep 1;done
    root                6450                5990                0                   22:36               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
    

    查看镜像的元数据

    # 命令
    [root@master /]# docker inspect a25fce1505e3
    
    # 源数据
    [
        {
            "Id": "a25fce1505e3e32c645f7990d0805fa6dff4a73d3cf8bff2f77fb78242b6a544",
            "Created": "2021-03-15T14:31:03.029169298Z",
            "Path": "/bin/bash",
            "Args": [
                "-c",
                "while true;do echo JohnZhuang;sleep 1;done"
            ],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 5990,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2021-03-15T14:31:03.88679139Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
            "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
            "ResolvConfPath": "/var/lib/docker/containers/a25fce1505e3e32c645f7990d0805fa6dff4a73d3cf8bff2f77fb78242b6a544/resolv.conf",
            "HostnamePath": "/var/lib/docker/containers/a25fce1505e3e32c645f7990d0805fa6dff4a73d3cf8bff2f77fb78242b6a544/hostname",
            "HostsPath": "/var/lib/docker/containers/a25fce1505e3e32c645f7990d0805fa6dff4a73d3cf8bff2f77fb78242b6a544/hosts",
            "LogPath": "/var/lib/docker/containers/a25fce1505e3e32c645f7990d0805fa6dff4a73d3cf8bff2f77fb78242b6a544/a25fce1505e3e32c645f7990d0805fa6dff4a73d3cf8bff2f77fb78242b6a544-json.log",
            "Name": "/adoring_brahmagupta",
            "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,
                "CgroupnsMode": "host",
                "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"
    
    下一篇:没有了