Docker常用命令 ---学习笔记

帮助命令

#查看docker版本信息
docker version

#查看docker系统信息,包括镜像和容器的数量
docker info

#万能帮助命令
docker 命令 --help

官方命令文档地址https://docs.docker.com/engine/reference/run/

镜像命令

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

[root@VM_0_16_centos ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        5 months ago        13.3kB
[root@VM_0_16_centos ~]# 


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

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

docker search 搜索镜像

[root@VM_0_16_centos ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9587             
mariadb                           MariaDB is a community-developed fork of MyS…   3486   


#可选项
--filter=STARS=3000 搜索出来的镜像大于3000点赞数的

docker pull 下载镜像

[root@VM_0_16_centos /]# docker pull mysql #默认下载最新的mysql
Using default tag: latest #如果不写 tag, 就是latest
latest: Pulling from library/mysql
afb6ec6fdc1c: Pull complete # 分层下载, docker image的核心 联合文件系统
0bdc5971ba40: Pull complete 
97ae94a2c729: Pull complete 
f777521d340e: Pull complete 
1393ff7fc871: Pull complete 
a499b89994d9: Pull complete 
7ebe8eefbafe: Pull complete 
597069368ef1: Pull complete 
ce39a5501878: Pull complete 
7d545bca14bf: Pull complete 
211e5bb2ae7b: Pull complete 
5914e537c077: Pull complete 
Digest: sha256:a31a277d8d39450220c722c1302a345c84206e7fd4cdb619e7face046e89031d #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址


#docker pull mysql 等价于 docker pull docker.io/library/mysql:latest


#指定版本下载mysql,官方文档搜索mysql必须下载有的版本
docker pull mysql:5.7 

docker rmi -f 删除镜像

docker rmi -f 镜像ID

#删除本地全部镜像
docker rmi -f $(docker images -aq)

容器命令

首先我们有了镜像才能创建容器,linux下载一个centos镜像

docker pull centos

启动镜像

docker run [可选参数] 镜像名称

--name 容器名称   #tomcat01 tomcat02
-d  后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p  指定容器的端口 例: -p 8080:8080
     p  ip:主机端口:容器端口
    -p 主机端口:容器端口(常用)
    -p 容器端口
    容器端口
-p  随机指定端口

#示例: 测试启动nginx容器并命名为nginx01 3344本地主机端口映射容器80端口
[root@VM_0_16_centos home]# docker run -d --name nignx01 -p 3344:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
Digest: sha256:c870bf53de0357813af37b9500cb1c2ff9fb4c00120d5fe1d75c21591293c34d
Status: Downloaded newer image for nginx:latest
ff5a6c4c1029eb0440a3d17fae04794f37282689bfef9b12ac1d82e83655757d


#启动并进入容器
docker run -it centos /bin/sh #启动并进入容器
exit #退出容器

列出所有运行中的容器

# docker ps 命令
docker ps #列出所有运行中的容器

-a # 列出当前正在运行的容器+带出历史运行的容器
-n=?  # 显示最近创建的容器个数
-q # 只显示容器的编号

退出容器

exit #容器停止退出
ctrl + p + q 容器不停止退出

删除容器

docker rm 容器ID 
docker rm -f $(docker ps-aq) #强制删除所有的容器

启动和停止容器

docker start 容器ID #启动
docker restart 容器ID #重启
docker stop 容器ID #停止正在运行的容器
docker kill 容器ID #杀死运行的容器

常用其他命令

后台启动容器

docker run -d centos

#问题 docker ps 发现centos停止了,docker容器使用后台运行,必须要有一个前台进程。docker发现没有对外提供服务的应用,就会自动停止

查看日志

docker logs -f -t 容器ID #显示所有日志数量
docker logs -f -t --tail 日志数量 容器ID #显示指定条数日志

#启动docker并编写一段shell脚本运行
docker run -d centos /bin/sh -c "while true; do echo LGDmar;sleep 1;done;"

查看容器内部的进程信息

docker top 容器ID

查看镜像的元数据

#查看镜像依赖
docker inspect 容器ID

#结果
[root@VM_0_16_centos /]# docker inspect 3e87edbda32c
[
    {
        "Id": "3e87edbda32ce3720211f92d5a95095057ab2aa86f56aab0ecd570693af3e66a",
        "Created": "2020-06-06T05:53:10.591466657Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo LGDmar;sleep 1;done;"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 16055,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2020-06-06T05:53:10.903107494Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee",
        "ResolvConfPath": "/var/lib/docker/containers/3e87edbda32ce3720211f92d5a95095057ab2aa86f56aab0ecd570693af3e66a/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/3e87edbda32ce3720211f92d5a95095057ab2aa86f56aab0ecd570693af3e66a/hostname",
        "HostsPath": "/var/lib/docker/containers/3e87edbda32ce3720211f92d5a95095057ab2aa86f56aab0ecd570693af3e66a/hosts",
        "LogPath": "/var/lib/docker/containers/3e87edbda32ce3720211f92d5a95095057ab2aa86f56aab0ecd570693af3e66a/3e87edbda32ce3720211f92d5a95095057ab2aa86f56aab0ecd570693af3e66a-json.log",
        "Name": "/busy_lehmann",
        "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/a7d38703c2be1e9dbc7c75322267016e938f4391b684cd8963c71d7210834fa7-init/diff:/var/lib/docker/overlay2/d8089f26f507c34cd8bc69a97717519941e70fc77837a098e624ed72ffd8f124/diff",
                "MergedDir": "/var/lib/docker/overlay2/a7d38703c2be1e9dbc7c75322267016e938f4391b684cd8963c71d7210834fa7/merged",
                "UpperDir": "/var/lib/docker/overlay2/a7d38703c2be1e9dbc7c75322267016e938f4391b684cd8963c71d7210834fa7/diff",
                "WorkDir": "/var/lib/docker/overlay2/a7d38703c2be1e9dbc7c75322267016e938f4391b684cd8963c71d7210834fa7/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "3e87edbda32c",
            "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 LGDmar;sleep 1;done;"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20200114",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS",
                "org.opencontainers.image.created": "2020-01-14 00:00:00-08:00",
                "org.opencontainers.image.licenses": "GPL-2.0-only",
                "org.opencontainers.image.title": "CentOS Base Image",
                "org.opencontainers.image.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "9092bad99cd4300800914cfbfddc8d27d2ab315de10b3a73a4d1ca55ea4ff0e5",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/9092bad99cd4",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "8328555d7b342abdba1ff668074253a943a064f0ea4565b8d28f3efa3daf788e",
            "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": "b13c504b8c3324e54571cfd7246cba9f78de246b2046c01ad83149e42979e08c",
                    "EndpointID": "8328555d7b342abdba1ff668074253a943a064f0ea4565b8d28f3efa3daf788e",
                    "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 -it 容器ID /bin/bash

#方式二 进入容器正在执行的终端
docker attach 容器ID /bin/bash

从容器内拷贝文件到主机上

#将docker容器内的文件拷贝到主机上
docker cp 容器ID:容器路径  主机的路径

上传镜像

docker login #登录hub.docker输入自己的用户名和密码
 
docker push 镜像名称 #上传本地镜像到hub公有仓库

commit镜像

docker commit #提交容器成为一个新的副本

#命令和git类似
docker commit -m="提交描述的信息" -a="作者"  容器ID 目标镜像名:TAG

到这里我们已经算是docker入门!记得认真吸收练习。

后面我会更新docker精髓 容器卷挂载 DockerFile Docker网络等讲解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值