帮助命令
$ docker version # 显示 docker 的版本信息$ docker info # 显示 docker 的系统信息,包括镜像和容器的数量$ docker 命令 --help # 帮助命令
镜像命令
https://docs.docker.com/engine/reference/commandline/image/
docker images 查看本地主机上的所有镜像
$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZElaradock_elasticsearch latest 014af1b8b90f 5 months ago 779MBphpstorm_helpers PS-201.8538.41 b4ce53d70063 6 months ago 1.38MB# REPOSITORY 镜像在仓库里的名称# TAG 镜像的标签# IMAGE ID 镜像的唯一 id# CREATED 镜像的创建时间# SIZE 镜像的大小# 常用可选项-a, --all 显示所有镜像-q, --quiet 只显示镜像的 ID
docker search mysql 搜索指定镜像
https://docs.docker.com/engine/reference/commandline/search/
$ docker search mysqlNAME DESCRIPTION STARS OFFICIAL AUTOMATEDmysql MySQL is a widely used, open-source relation… 10656 [OK]mariadb MariaDB Server is a high performing open sou… 3997 [OK]mysql/mysql-server Optimized MySQL Server Docker images. Create… 779 [OK]docker search --filter=stars=3 mysql #搜索 stars 至少为3 的镜像
docker pull mysql 下载指定镜像
https://docs.docker.com/engine/reference/commandline/pull/
$ docker pull mysqlUsing default tag: latest # 如果不写 tag 默认为 latestlatest: Pulling from library/mysqla076a628af6f: Pull complete # 分层下载 docker image 的核心f6c208f3f991: Pull complete88a9455a9165: Pull complete406c9b8427c6: Pull compl7c88599c0b25: Pull complete25b5c6debdaf: Pull complete43a5816f1617: Pull complete1a8c919e89bf: Pull complete9f3cf4bd1a07: Pull complete80539cea118d: Pull complete201b3cad54ce: Pull complete944ba37e1c06: Pull completeDigest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8cStatus: Downloaded newer image for mysql:latestdocker.io/library/mysql:latest # 真实地址# 如下两天命令时等价的docker pull mysqldocker pull docker.io/library/mysql:latest$ docker pull mysql:5.7 # 下载指定版本 mysql
docker rmi mysql 删除指定镜像
https://docs.docker.com/engine/reference/commandline/rmi/
$ docker rmi 41de2cc0b30e # 根据镜像 id 删除$ docker rmi mysql # 根据镜像名称删除$ docekr rmi $(docker iamges -aq) # 以 docker iamges -aq 命令查询出来的内容作为参数进行删除(全部删除)#常用选项-f, --force #强制删除正在运行的容器
容器命令
docker ps 查看当前在运行中的容器
$ docker ps -a # 显示所有容器(运行中、已经停止)CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3fa000926912 hello-world "/hello" 9 seconds ago Exited (0) 8 seconds ago elated_engelbarta8be12819301 nginx "/docker-entrypoint.…" 2 hours ago Up 2 hours 80/tcp nervous_cannon$ docker ps -q # 只显示在运行中的容器的容器 ida8be12819301$ docker ps -n=1 # 显示最近创建的几条容器CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3fa000926912 hello-world "/hello" About a minute ago Exited (0) About a minute ago elated_engelbart
exit 退出容器
$ exit #停止并退出容器$ ctrl + p + q #退出不停止容器
docker rm 容器id 删除容器id
$ docker rm 3fa000926912 删除容器3fa000926912$ docker rm -f $(docker ps -aq) #删除所有容器$ docker ps -aq | xargs docker rm # 删除所有容器
启动、停止容器
$ docker start 容器id #启动容器$ docker restart 容器id #重启容器$ docker stop 容器id #停止当前正在运行的容器$ docker kill 容器id #强制停止当前容器
查看容器日志
$ docker logs 容器id$ docker logs -f 容器id 实时显示
查看容器内的进程
$ docker top 容器idUID PID PPID C STIME TTY TIME CMDroot 5719 5698 0 09:45 ? 00:00:00 nginx: master process nginx -g daemon off;101 5769 5719 0 09:45 ? 00:00:00 nginx: worker process
产看容器源数据
$ docker inspect 容器id[{"Id": "dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe","Created": "2021-03-25T09:45:20.053068643Z","Path": "/docker-entrypoint.sh","Args": ["nginx","-g","daemon off;"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 5719,"ExitCode": 0,"Error": "","StartedAt": "2021-03-25T09:45:20.274997446Z","FinishedAt": "0001-01-01T00:00:00Z"},"Image": "sha256:6084105296a952523c36eea261af38885f41e9d1d0001b4916fa426e45377ffe","ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe/resolv.conf","HostnamePath": "/mnt/sda1/var/lib/docker/containers/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe/hostname","HostsPath": "/mnt/sda1/var/lib/docker/containers/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe/hosts","LogPath": "/mnt/sda1/var/lib/docker/containers/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe/dfe944493963809af5d2f3ddd71c9a09bad4ff8710805d185635119167a57ffe-json.log","Name": "/boring_banach","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": "/mnt/sda1/var/lib/docker/overlay2/9f72f3b04c31f6e027d2e524ef03f15457d95eeea57659c3bfb39df65726a633-init/diff:/mnt/sda1/var/lib/docker/overlay2/feb7a2df35deb2f0e7fb488fa7470b0cc19275defc5a220b465902bc791c41c6/diff:/mnt/sda1/var/lib/docker/overlay2/fd8f909756630403424a59d84e04295b62bb906ad10e751a37611487ea2de411/diff:/mnt/sda1/var/lib/docker/overlay2/684efe613eed54b18f2c9d4b294ed1e3a6c44f6ec3c026b750e1917a627c6e21/diff:/mnt/sda1/var/lib/docker/overlay2/2ec69ce86163e9f84af812b7ed1898fbc215046da1126bc2ff4941278eec5fbb/diff:/mnt/sda1/var/lib/docker/overlay2/1a260596ce2d589cffc9620f6c042ce0e406bf923cc14405735bd1ea1f7bfc30/diff:/mnt/sda1/var/lib/docker/overlay2/1c172fe9802e3dc73800b0aaa2bc3cf8271de28c24e1515ff380b21ca8852527/diff","MergedDir": "/mnt/sda1/var/lib/docker/overlay2/9f72f3b04c31f6e027d2e524ef03f15457d95eeea57659c3bfb39df65726a633/merged","UpperDir": "/mnt/sda1/var/lib/docker/overlay2/9f72f3b04c31f6e027d2e524ef03f15457d95eeea57659c3bfb39df65726a633/diff","WorkDir": "/mnt/sda1/var/lib/docker/overlay2/9f72f3b04c31f6e027d2e524ef03f15457d95eeea57659c3bfb39df65726a633/work"},"Name": "overlay2"},"Mounts": [],"Config": {"Hostname": "dfe944493963","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.19.8","NJS_VERSION=0.5.2","PKG_RELEASE=1~buster"],"Cmd": ["nginx","-g","daemon off;"],"Image": "nginx","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"NetworkSettings": {"Bridge": "","SandboxID": "8b11b5c4140b319436fb9b72e057fa38451e8b7ead9f426a35aba31db90f0100","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {"80/tcp": null},"SandboxKey": "/var/run/docker/netns/8b11b5c4140b","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "cf85258d6966d49cbfb3d459ef73818e03838f51aa714410d5293947c45ecee9","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": "df591bdd5408f34135676a31ffb32733e052a296061797a51442e05529c4ec33","EndpointID": "cf85258d6966d49cbfb3d459ef73818e03838f51aa714410d5293947c45ecee9","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 bash # 进入容器,相当于开启一个新的终端$ docker attach 容器id # 进入正在运行的容器,相当于打开原来的终端
从容器中复制内容到宿主机
$ docker cp 容器id:容器内文件的绝对路径 主机路径$ docker cp dfe944493963:/etc/nginx ./ #将容器内容 nginx 目录复制到宿主机的当前目录下
