常用命令
1、容器版本和详细信息
docker info
docker --version #查看docker服务器版本
2、镜像查询
docker search 镜像名
建议大家直接去官网查看docker镜像包,看的更人性化一点。https://hub.docker.com/,在docker官网上直接搜索我们需要的镜像,如果需要该镜像里面也提供了下载方式,直接复制里面吗的docker pull 镜像名即可。
3、镜像下载
docker pull 镜像名
下载镜像,默认后面不加版本号的话就是最新版本。
注意,SIZE不是说这个镜像就是这么大,镜像是分层的,不确定他到底有没有公用的层级,至少我们知道这个镜像等于或者大于他显示的这个大小。
4、容器运行
docker run
下载完以后我们要使用docker run运行容器,基本如法如下
这是非常简化的一个启动命令,run代表运行,--name就是给这个容器起一个名字,-p是指定端口映射,前面是宿主机端口,冒号后面是容器里面运行的端口, -d参数让它后台运行,最后的nginx:latest是指定使用的镜像名和版本号。
docker run --name nginx -p 80:80 -d nginx:latest
run命令的延伸:
--restart=always #容器的自动启动(容器服务启动后容器自动,相当于开机自启动)
-h x.xx.xx #设置容器主机名,相当于linux的hostname命令,不同的是-h是永久设置
--dns xx.xx.xx.xx #设置容器使用的DNS服务器,因为容器也需要上网
--dns-search #DNS搜索设置
--add-host hostname:IP 注入hostname<>IP解析,相当于linux改host文件,加入--add-host www.baidu.com:127.0.0.1 当然你可以可以exec进去改。
--rm #服务停止是自动删除(docker服务停止后,该容器自动删除)
5、镜像删除和容器删除
docker rmi 和 docker rm
docker rmi是删除镜像命令,最后一个i其实就是images的缩写,docker rm是删除容器命令。这里我们要清楚一个步骤,我们知道docker容器用开发的话术说,docker容器是docker镜像实例化后的一个对象。删除的时候必须要先删除容器,才能删除镜像。如果用这个镜像的容器有好几个,你要是想删除这个镜像,就得把容器都删除了,才能删除镜像。日常中的标准操作是先停止容器,然后删除容器,最后删除镜像。如下图操作:
6、查看运行的或运行过的容器
docker ps
docker ps:显示当前正在运行的容器,但是通常我们会在后面再加一个-a参数,-a==ago代表过去的一起,docker ps -a
docker ps -a和docker ps -a -q都是最常用的,加上-q只显示docker id,一般用作删除所有容器时候使用,比如 docker rm -f $(docker ps -a -q)
7、容器的启动和停止
docker start/stop/restart #启动/关闭/重启容器
注意,docker ps是查看当前正在运行的容器,docker ps -a是查看运行过的容器(你看到的容器有可能是正在运行的,也有可能是运行过的,所以一般两个命令结合使用)
8、容器的详细信息查看
docker ps --no-trunc #查看容器完整128位id
docker inspect 容器id #查看容器所有基本信息
案例
[root@localhost docker]# docker inspect 2cf285ab4221
[
{
"Id": "2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330",
"Created": "2020-04-02T03:52:09.556563387Z",
"Path": "nginx",
"Args": [
"-g",
"daemon off;"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 1948,
"ExitCode": 0,
"Error": "",
"StartedAt": "2020-04-02T03:56:23.757687935Z",
"FinishedAt": "2020-04-02T03:56:05.279269874Z"
},
"Image": "sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291",
"ResolvConfPath": "/var/lib/docker/containers/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330/hostname",
"HostsPath": "/var/lib/docker/containers/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330/hosts",
"LogPath": "/var/lib/docker/containers/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330/2cf285ab4221081ebf426b5c1d4f3912e17281c9b8bb745a9d5fa4403da91330-json.log",
"Name": "/nginx",
"RestartCount": 0,
"Driver": "overlay",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
]
},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "",
"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": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": -1,
"OomKillDisable": false,
"PidsLimit": 0,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0
},
"GraphDriver": {
"Name": "overlay",
"Data": {
"LowerDir": "/var/lib/docker/overlay/c9a4cfd4eeabb5664a45c955aa766a68f54bbd6295923890e6caa7c14ee2bb1f/root",
"MergedDir": "/var/lib/docker/overlay/2061ad2ad9458bae3d05213e37a644d28a0731dca0942b344364c78da77aab8f/merged",
"UpperDir": "/var/lib/docker/overlay/2061ad2ad9458bae3d05213e37a644d28a0731dca0942b344364c78da77aab8f/upper",
"WorkDir": "/var/lib/docker/overlay/2061ad2ad9458bae3d05213e37a644d28a0731dca0942b344364c78da77aab8f/work"
}
},
"Mounts": [],
"Config": {
"Hostname": "2cf285ab4221",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.17.9",
"NJS_VERSION=0.3.9",
"PKG_RELEASE=1~buster"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"ArgsEscaped": true,
"Image": "nginx:latest",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
},
"StopSignal": "SIGTERM"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "50b4587d2e859c86e3b636da7d1e5d47dde275ca3e0e919120b479c3f8b0b8c8",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "80"
}
]
},
"SandboxKey": "/var/run/docker/netns/50b4587d2e85",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "0a5b9470d9475edc9f3c1bc0a54056ce54f1dfa29652c317b8e164d951158d08",
"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": "d92fddf2ac6aafbe5cb17387111c438aa6401f6c59628a01bf879cb0ce89e5e2",
"EndpointID": "0a5b9470d9475edc9f3c1bc0a54056ce54f1dfa29652c317b8e164d951158d08",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}
}
}
]
docker inspect
9、查看容器使用的硬件资源情况,有点像top命令
docker stats 容器id
10、容器的日志查看
docker logs 容器id #查看容器日志
11、容器执行命令
docker exec 容器名 容器内部执行命令
docker exec -it 容器名 /bin/bash
docker exec 容器名 容器内部执行命令:
这种情况下用在就只是查看一个东西,不需要进入到容器内部去,但是有个注意点,比如下图,我们可以使用ls -l命令,但是不能直接ll。
docker exec -it 容器名 /bin/bash
大家可看到圈红的地方已经变成了容器的id,相当于我们已经进入ssh到容器的内部了,退出输入exit回车既可以出去了。