Docker学习(上篇)运行原理与基本命令

运行原理(Docker是怎么工作的)?

Docker是一个Client-Service结构的系统,Docker的守护进程结构运行在主机上。
通过Socket连接从客户端访问.。
当Docker Server收到Docker-client的指令,就会执行这个命令。

差不多长这个样子…
在这里插入图片描述

Docker为什么比VM快?

docker有着比虚拟机更少的抽象层。
docker利用的是宿主机的内核,vm需要时Guest OS。所以说docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导性操作,虚拟机加载GuestOS是分钟级别的,而docker利用的是宿主机的操作系统,省略了这一段复杂的过程,所以快的多,基本是秒级的。
在这里插入图片描述

Docker命令

帮助命令

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

在这里插入图片描述

官方文档地址:https://docs.docker.com/reference/

镜像命令

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

docker images

REPOSITORYTAGIMAGE IDCREATEDSIZE
镜像的仓库源镜像标签镜像id创建时间大小

可选项

名称释义用法
-a, --all列出所有镜像docker images -a 【显示所有镜像】
-f, --filter根据你给的条件过滤docker search mysql --filter=STARS=3000【过滤只显示点赞超过3000的mysql】
-q, – quiet只显示镜像iddocker images -q 【显示所有容器id】

docker search 搜索镜像

docker search 镜像名称
在这里插入图片描述

docker pull 下载镜像

他这个下载有点牛==>[联合文件系统],就是说 如果你之前下载过了以前的版本,现在下载一个其他版本,如果他们中间有一些文件是可共用的,他不会去下载可共用的哪些文件,而是去下载其他的文件。

docker pull 镜像名称:版本名称 举例 docker pull mysql:5.7 如果不指定版本默认下载最新的

这里有个注意点,。指定的版本必须的是官方存在的,不能瞎写.....

docker rmi -f 删除镜像

docker rmi -f 镜像id|镜像名称 删除单个镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id 删除多个镜像 中间用空格隔开
docker rmi -f $(docker images -aq) 删除所有镜像

删除一个镜像【hello-world】
在这里插入图片描述

容器命令
前言:

得先有镜像才可以创建容器。这里我下在一个centos来写文章…

docker pull centos
我这里没有指定版本,他就自动下载最新得了。
在这里插入图片描述
在这里插入图片描述

新建容器并启动

1.docker run [可选参数] image
参数说明:

参数说明使用方法
–name=“name”容器名字 区分容器如: tomcat01 tomcat02docker run --centos
-d后台方式运行docker run -d centos
-it使用交互方式运行,进入容器查看内容docker run -it centos /bin.bash
-p指定容器得端口 -p8080:8080docker run -p8080:8080
-P随机指定端口docker run -P
这里有一个坑

docker run -d 镜像名,当你容器后台运行的时候你前台必须得有一个进程,就是docker发现没有应用,就会自动停止。
nginx启动后发现自己没有服务,会立即自动停止。这样也是导致docker明明启动了,却又会自动停止得一个原因!!!

2.查看正在运行得容器
docker ps 列出当前正在运行得容器
参数说明:

参数说明使用方法
-a列出当前正在运行得容器+带出历史运行过的容器docker ps -a
-n=?显示最近创建过的容器ocker ps -a -n=1
-q只显示容器得编号docker ps -aq

3.退出容器
exit 直接容器停止并退出
ctrl+p+q 不停止容器并退出
在这里插入图片描述
4.删除容器

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

启动和停止容器

docker start 容器id 启动容器
docker restart 容器id 重启容器
docker stop 容器id 停止容器
docker kill 容器id 强制停止容器
在这里插入图片描述

常用其他命令

1.查看日志

docker logs -tr 镜像id # 显示所有日志
docker logs -f -t --tail 10 镜像id # 显示前十条日志

2.查看容器中得进程命令

docker top 容器id

3.查看镜像得元数据

docker inspect 容器id

[root@localhost ~]# docker inspect 6f152f6ddf90 
[
    {
        "Id": "6f152f6ddf90fcc5edcfe0d65eb82db8eede95837e6eb11feb2c690122e37136",
        "Created": "2021-07-24T16:00:00.635812865Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 14837,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-07-24T16:00:00.922854092Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/6f152f6ddf90fcc5edcfe0d65eb82db8eede95837e6eb11feb2c690122e37136/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/6f152f6ddf90fcc5edcfe0d65eb82db8eede95837e6eb11feb2c690122e37136/hostname",
        "HostsPath": "/var/lib/docker/containers/6f152f6ddf90fcc5edcfe0d65eb82db8eede95837e6eb11feb2c690122e37136/hosts",
        "LogPath": "/var/lib/docker/containers/6f152f6ddf90fcc5edcfe0d65eb82db8eede95837e6eb11feb2c690122e37136/6f152f6ddf90fcc5edcfe0d65eb82db8eede95837e6eb11feb2c690122e37136-json.log",
        "Name": "/pensive_minsky",
        "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,
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "shareable",
            "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,
            "DiskQuota": 0,
            "KernelMemory": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": 0,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/fc9fb10ada1992779ea8942c72f64e568a4c99327aaa3c28e648ef0b10cb07e5-init/diff:/var/lib/docker/overlay2/acba9e4a4877817013d47ef73f5edced9c404eb7ef3daab9e825be2ab9840e34/diff",
                "MergedDir": "/var/lib/docker/overlay2/fc9fb10ada1992779ea8942c72f64e568a4c99327aaa3c28e648ef0b10cb07e5/merged",
                "UpperDir": "/var/lib/docker/overlay2/fc9fb10ada1992779ea8942c72f64e568a4c99327aaa3c28e648ef0b10cb07e5/diff",
                "WorkDir": "/var/lib/docker/overlay2/fc9fb10ada1992779ea8942c72f64e568a4c99327aaa3c28e648ef0b10cb07e5/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "6f152f6ddf90",
            "Domainname": "",
            "User": "",
            "AttachStdin": true,
            "AttachStdout": true,
            "AttachStderr": true,
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": true,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20201204",
                "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": "3f700ed4cf3a2c9c37ef2d4f767f5b2f935febd129470ce80485581f3d163ea9",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/3f700ed4cf3a",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "59997188bb75e23e3d125dc5e136d2a4e0d3477d37d8c3a5603fbf569ba9e5c0",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "a4401e76294f31d2d0e62934e0c56ff37d585c46f979cdf31a69104b98352a26",
                    "EndpointID": "59997188bb75e23e3d125dc5e136d2a4e0d3477d37d8c3a5603fbf569ba9e5c0",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]

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

方式一:docker exec -it 容器id: 用作与后台启动 从前台进入控制台!
在这里插入图片描述
方式二: docker attach 容器id 进入正在执行的终端

两者区别:
docker exec 进入容器开启一个新的终端,可以在里面操作。
docker attach 进入正在执行的终端, 不会开启新的进程。

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

docker cp 容器id:/容器内路径 /目的主机路径

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值