新建容器并启动
# 命令 docker run [参数] [镜像名]# 参数--name="Name" 容器名字,用来区分容器-d 后台运行容器-it 交互运行容器,进入容器操作[root@izbp1g2kp3kgefvmrhy0moz ~]# docker run -it centos[root@b370c8b61809 /]# lsbin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var-p 指定容器端口 : -p ip:8080-p 主机端口:容器端口-p 容器端口-p ip:主机端口:容器端口-P 随机指定端口
查看正在运行的容器
# 命令 docker ps [参数] #列出当前正在运行的容器#参数-a 列出当前正在运行的容器+历史运行过的-n=?-q 显示运行容器编号-aq 显示所有容器编号
退出容器
exit 直接退出Ctrl + p +q 容器不停止退出
删除容器
docker rm 容器id 删除指定容器,不能删除正在运行的容器,须使用rm -f 容器iddocker rm -f $(docker ps -aq) 删除所有容器
启动和停止容器
docker start 容器id 启动容器docker restart 容器id 重启容器docker stop 容器id 停止当前运行的容器docker kill 容器id 强制停止当前运行的容器
其他命令
后台启动容器
# 命令 docker run -d 镜像名[root@izbp1g2kp3kgefvmrhy0moz ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[root@izbp1g2kp3kgefvmrhy0moz ~]# docker run -d centos4207c57ac3927d98a88f86e490c692cdfb0827cef4da189463ea5732f89f0067[root@izbp1g2kp3kgefvmrhy0moz ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES# 问题dockee ps发现 centos停止了# 常见的坑:docker 容器使用后台运行,就必须要有一个前台的进程,docker发现没有应用就自动停止
查看日志
# 命令 docker logs -tf --tail 容器id# 编写一段脚本##docker run -d centos /bin/sh -c "while ture;do echo wangzheng;sleep 1;done"# 运行centos输入命令# 显示日志-tf # 显示日志--tail [number] #显示日志条数[root@izbp1g2kp3kgefvmrhy0moz ~]# docker logs -tf --tail 10 cd8a8ae2af192021-08-19T01:53:24.808086676Z [root@cd8a8ae2af19 /]# cd /bin/sh2021-08-19T01:53:24.808136709Z bash: cd: /bin/sh: Not a directory2021-08-19T01:53:53.387582347Z [root@cd8a8ae2af19 /]# sh -c "while ture;do echo wangzheng;sleep 1;done"2021-08-19T01:53:53.387916521Z sh: ture: command not found[root@cd8a8ae2af19 /]# exit
查看容器进程信息
# 命令 docker top 容器id[root@izbp1g2kp3kgefvmrhy0moz ~]# docker top 86f21f951e5dUID PID PPID C STIME TTY TIME CMDroot 23860 23828 0 10:01 pts/0 00:00:00 /bin/bash
查看镜像元数据
# 命令 docker inspect 容器id[root@izbp1g2kp3kgefvmrhy0moz ~]# docker inspect 86f21f951e5d[{"Id": "86f21f951e5dd187201c09b097f0333ff68623db2a75b57517c91d49819c11a3","Created": "2021-08-19T02:01:40.896041997Z","Path": "/bin/bash","Args": [],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 23860,"ExitCode": 0,"Error": "","StartedAt": "2021-08-19T02:01:41.350777327Z","FinishedAt": "0001-01-01T00:00:00Z"},"Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55","ResolvConfPath": "/var/lib/docker/containers/86f21f951e5dd187201c09b097f0333ff68623db2a75b57517c91d49819c11a3/resolv.conf","HostnamePath": "/var/lib/docker/containers/86f21f951e5dd187201c09b097f0333ff68623db2a75b57517c91d49819c11a3/hostname","HostsPath": "/var/lib/docker/containers/86f21f951e5dd187201c09b097f0333ff68623db2a75b57517c91d49819c11a3/hosts","LogPath": "/var/lib/docker/containers/86f21f951e5dd187201c09b097f0333ff68623db2a75b57517c91d49819c11a3/86f21f951e5dd187201c09b097f0333ff68623db2a75b57517c91d49819c11a3-json.log","Name": "/quizzical_tereshkova","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": ["/proc/bus","/proc/fs","/proc/irq","/proc/sys","/proc/sysrq-trigger"]},"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/54fbe384132a558f570c2b16c053476de5d9c3f721429a0c502a70e4af1b0888-init/diff:/var/lib/docker/overlay2/dd5c71149758565f7d5a6891553a451558c666fdb33741b48758b5c3ea8a819e/diff","MergedDir": "/var/lib/docker/overlay2/54fbe384132a558f570c2b16c053476de5d9c3f721429a0c502a70e4af1b0888/merged","UpperDir": "/var/lib/docker/overlay2/54fbe384132a558f570c2b16c053476de5d9c3f721429a0c502a70e4af1b0888/diff","WorkDir": "/var/lib/docker/overlay2/54fbe384132a558f570c2b16c053476de5d9c3f721429a0c502a70e4af1b0888/work"},"Name": "overlay2"},"Mounts": [],"Config": {"Hostname": "86f21f951e5d","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": "37a5a62636d5befad42f317c1a6e537944cbb93140218793051031d88a185784","HairpinMode": false,"LinkLocalIPv6Address": "","LinkLocalIPv6PrefixLen": 0,"Ports": {},"SandboxKey": "/var/run/docker/netns/37a5a62636d5","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"EndpointID": "1e2897e8d7e8a5bd40712be306c5c006252067327e835e9fdc73fac109241f42","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": "b213ac1e80f1c9a381318b007aebf5117b4195a6dd220bfeba568e78bebb6f76","EndpointID": "1e2897e8d7e8a5bd40712be306c5c006252067327e835e9fdc73fac109241f42","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[root@izbp1g2kp3kgefvmrhy0moz ~]# docker exec -it 86f21f951e5d /bin/bash[root@86f21f951e5d /]## 方式二# 命令 docker attach 容器id[root@izbp1g2kp3kgefvmrhy0moz ~]# docker attach 86f21f951e5d[root@86f21f951e5d /]#区别:docker exec 进入一个新的终端docker attac 进入正在运行的终端
从容器中拷贝文件
# 命令 docker cp 容器id:容器内路径 目的主机路径[root@izbp1g2kp3kgefvmrhy0moz ~]# docker attach 86f21f951e5d[root@86f21f951e5d home]# ls[root@86f21f951e5d home]# touch wangzheng.py[root@86f21f951e5d home]# lswangzheng.py[root@86f21f951e5d home]# exitexit[root@izbp1g2kp3kgefvmrhy0moz ~]# docker cp 86f21f951e5d:/home/wangzheng.py /home[root@izbp1g2kp3kgefvmrhy0moz ~]# cd /home[root@izbp1g2kp3kgefvmrhy0moz home]# lsadmin wangzheng.py
