使用某個鏡像的後臺模式啓動一個容器linux
docker run -d [鏡像名]nginx
以咱們現有的centos鏡像爲例,咱們發現使用這種模式啓動運行一個鏡像返回了實例信息,說明成功了。可是咱們沒有看到docker ps中有這個剛啓動的實例。緣由是咱們沒有以交互模式進入容器,而是經過後臺啓動,啓動運行以後,這個容器已經運行完了,本身結束了。web
用docker ps -a 進行查看,發現容器已經退出了:docker
neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker run -d centos a45a5db25de8d5cfd233e748d1c26609701f91c66b9f3bab72f2055cf189fe82 neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin>
Docker容器後臺運行,就必須在容器內有一個前臺進程。容器運行的命令必須是那些一直掛起的命令(如top、tail),不然就會自動退出。shell
這個是docker的機制問題,好比你的web容器,咱們以nginx爲例,正常狀況下,咱們配置啓動服務,只要配置相應的service便可。例如 service nginx startjson
可是這樣作,nginx爲後臺進程模式運行,就致使docker容器前臺沒有運行應用。這樣的容器經過後臺模式啓動後,會當即結束,由於它無事情可作了。centos
因此最佳的解決方案是,將你要運行的程序在容器中之前臺進程的形式運行。bash
(本文出自oschina博主happybks的博文:https://my.oschina.net/happyBKs/blog/3014246,轉載請在文章開頭顯著位置註明正確出處)架構
docker logs -f -t --tail [容器id]app
-t 是加入時間戳
-f 跟隨最新的日誌打印
--tail 數字顯示最後多少條
咱們先想一想弄一個什麼進程到容器內的前臺運行,可以持續運行不結束,以使得容器也不結束運行。
這裏咱們就用到了docker run的另外一個參數-c,意思是啓動容器後在容器內運行某個命令command,或者運行某個shell代碼段。固然還須要制定用什麼運行,好比運行shell代碼塊,須要指明\bin\sh
例如,我之後臺模式運行一個鏡像的實例,該容器正常啓動,我查看docker容器進程,發現它雖然是後臺模式啓動但仍然活着,緣由就是咱們在啓動容器的時候指定了容器內在容器啓動後運行一個shell腳本,腳本內容是循環執行每兩秒鐘打印hello happyBKs,這個循環一直不結束,容器內的前臺進程一直存在,容器也就不會結束一直活着。
neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker run -d centos /bin/sh -c "while true;do echo hello happyBKs;sleep 2;done" 62ba7bb94bcf721a216d92b7cb0b4aae2705b94379115e33655fe02a71f42d23 neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 62ba7bb94bcf centos "/bin/sh -c 'while t…" 6 seconds ago Up 4 seconds trusting_noyce neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin>
接下來咱們來查看容器內的日誌。
neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker logs 62ba7bb94bcf hello happyBKs hello happyBKs hello happyBKs hello happyBKs 很長很長,此處省略不少行 hello happyBKs hello happyBKs hello happyBKs neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin>
若是你以爲太長了,若是你須要看日誌的打印時間,若是你但願像linux命令那樣動態查看日誌更新的最後幾行,請使用:
--tail 是將最新的、在末尾的n條打印出來。
-f 會讓打印日誌一直處於前臺監控中,持續輸出。此時行數會繼續增長,不受--tail的約束。
neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker logs -t -f --tail 3 62ba7bb94bcf 2019-02-24T13:27:46.490080464Z hello happyBKs 2019-02-24T13:27:48.492482165Z hello happyBKs 2019-02-24T13:27:50.494961946Z hello happyBKs 2019-02-24T13:27:52.497321137Z hello happyBKs 2019-02-24T13:27:54.499800502Z hello happyBKs 2019-02-24T13:27:56.502329416Z hello happyBKs ^C neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin>
這裏順便提一下,咱們用啓動時傳入的命令或者shell代碼,會在docker ps中體現:
neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 62ba7bb94bcf centos "/bin/sh -c 'while t…" 10 minutes ago Up 10 minutes trusting_noyce neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin>
docker top [容器id]
neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker top 62ba7bb94bcf UID PID PPID C STIME TTY TIME CMD root 31174 31156 0 21:21 ? 00:00:00 /bin/sh -c while true;do echo hello happyBKs;sleep 2;done root 31875 31174 0 21:35 ? 00:00:00 sleep 2 neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin>
docker inspect [容器id]
docker容器就像是一個同心卷兒,一層套一層。咱們想要查看容器的詳細信息,可使用inspect命令。
具體的咱們放到之後的文章中展開講。
neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker inspect 62ba7bb94bcf [ { "Id": "62ba7bb94bcf721a216d92b7cb0b4aae2705b94379115e33655fe02a71f42d23", "Created": "2019-02-24T13:21:02.490920581Z", "Path": "/bin/sh", "Args": [ "-c", "while true;do echo hello happyBKs;sleep 2;done" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 31174, "ExitCode": 0, "Error": "", "StartedAt": "2019-02-24T13:21:03.913983396Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb", "ResolvConfPath": "/var/lib/docker/containers/62ba7bb94bcf721a216d92b7cb0b4aae2705b94379115e33655fe02a71f42d23/resolv.conf", "HostnamePath": "/var/lib/docker/containers/62ba7bb94bcf721a216d92b7cb0b4aae2705b94379115e33655fe02a71f42d23/hostname", "HostsPath": "/var/lib/docker/containers/62ba7bb94bcf721a216d92b7cb0b4aae2705b94379115e33655fe02a71f42d23/hosts", "LogPath": "/var/lib/docker/containers/62ba7bb94bcf721a216d92b7cb0b4aae2705b94379115e33655fe02a71f42d23/62ba7bb94bcf721a216d92b7cb0b4aae2705b94379115e33655fe02a71f42d23-json.log", "Name": "/trusting_noyce", "RestartCount": 0, "Driver": "btrfs", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "docker-default", "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, "MaskedPaths": [ "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware" ], "ReadonlyPaths": [ "/proc/asound", "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ] }, "GraphDriver": { "Data": null, "Name": "btrfs" }, "Mounts": [], "Config": { "Hostname": "62ba7bb94bcf", "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 hello happyBKs;sleep 2;done" ], "Image": "centos", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": { "org.label-schema.build-date": "20181205", "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": "34abeb7aac0cb1347e69a5e4c95e7c8417e4ddd7c01662c91e06f25f11e5485b", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": {}, "SandboxKey": "/var/run/docker/netns/34abeb7aac0c", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "cb0237dcf5c368cd4eeb85df53db991215b362d7a17a5bae4d8463f33a19b46a", "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": "f862fd9cba11d2e4a151cad0e0d6cdbf8a9c967529a89151ee4bfd520d955acb", "EndpointID": "cb0237dcf5c368cd4eeb85df53db991215b362d7a17a5bae4d8463f33a19b46a", "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 } } } } ] neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin>
咱們先將剛纔的容器停了,而後從新啓動一個。
以命令行的方式進行交互啓動,docker run -it [鏡像名] /bin/bash
/bin/bash是指以命令行方式交互,默承認以省略,即咱們一直用的docker run -it [鏡像名]
而後咱們開始咱們的示例操做:
neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker kill 62ba7bb94bcf 62ba7bb94bcf neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> docker run -it centos /bin/bash [root@a09b570600a7 /]# [root@a09b570600a7 /]# [root@a09b570600a7 /]# cd tmp/ [root@a09b570600a7 tmp]# ll total 4 -rwx------ 1 root root 836 Dec 5 01:37 ks-script-h2MyUP -rw------- 1 root root 0 Dec 5 01:36 yum.log [root@a09b570600a7 tmp]# [root@a09b570600a7 tmp]# [root@a09b570600a7 tmp]# touch happybks.txt [root@a09b570600a7 tmp]# echo "hi happyBKs" >> happybks.txt [root@a09b570600a7 tmp]# ll total 8 -rw-r--r-- 1 root root 12 Feb 24 14:02 happybks.txt -rwx------ 1 root root 836 Dec 5 01:37 ks-script-h2MyUP -rw------- 1 root root 0 Dec 5 01:36 yum.log [root@a09b570600a7 tmp]# [root@a09b570600a7 tmp]# neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin> neil@linux-famw:~/IDE/pycharm-community-2018.3.2/bin>
在啓動容器中,咱們以交互模式進入了容器命令行,咱們偷偷在/tmp建了一個文件,並寫入了一句話。而後咱們不關閉容器的方式Ctrl+P,Q退出交互模式。
若是咱們想再次進入容器進行命令操做怎麼辦呢?
docker attach [容器id]
neil@linux-famw:~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a09b570600a7 centos "/bin/bash" 15 minutes ago Up 15 minutes infallible_leavitt neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker attach a09b570600a7 [root@a09b570600a7 tmp]# [root@a09b570600a7 tmp]# ll total 8 -rw-r--r-- 1 root root 12 Feb 24 14:02 happybks.txt -rwx------ 1 root root 836 Dec 5 01:37 ks-script-h2MyUP -rw------- 1 root root 0 Dec 5 01:36 yum.log [root@a09b570600a7 tmp]# cat happybks.txt hi happyBKs [root@a09b570600a7 tmp]# [root@a09b570600a7 tmp]# [root@a09b570600a7 tmp]# [root@a09b570600a7 tmp]# [root@a09b570600a7 tmp]# read escape sequence neil@linux-famw:~> neil@linux-famw:~>
若是你只是想操做一個命令,會不會以爲這樣進入容器、輸入命令、再Ctrl +PQ的方式太麻煩,還有一種在容器外宿主機上對正在運行的容器執行一個容器內命令的方法。
方式2:在宿主機執行一個容器內的命令
docker exec -t [容器id] [容器內的命令]
neil@linux-famw:~> neil@linux-famw:~> docker exec -t a09b570600a7 ll OCI runtime exec failed: exec failed: container_linux.go:348: starting container process caused "exec: \"ll\": executable file not found in $PATH": unknown neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a09b570600a7 centos "/bin/bash" 24 minutes ago Up 24 minutes infallible_leavitt neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker exec -t a09b570600a7 ls -l /tmp total 8 -rw-r--r-- 1 root root 12 Feb 24 14:02 happybks.txt -rwx------ 1 root root 836 Dec 5 01:37 ks-script-h2MyUP -rw------- 1 root root 0 Dec 5 01:36 yum.log neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker exec -t a09b570600a7 cat /tmp/happybks.txt hi happyBKs neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~>
咱們嘗試了ls和cat命令,從宿主執行容器內的ls和cat命令都成功的將容器內的命令行返回內容 返回到了宿主機的命令行。可是咱們發現一些linux的擴展命令有的並不支持,例如ll
這裏須要說一下,其實docker exec命令並非不能進入容器內,相反,它更爲強大。咱們能夠用exec進入容器,就像以前attach同樣。
順便說一下,-it的-i是交互,-t是啓動終端。若是你寫-t,你也能進入容器內,可是你沒法輸入任何命令,現象有點像卡住了,實際上是你命令沒有啓用交互-i形成的。
neil@linux-famw:~> docker exec -it a09b570600a7 /bin/bash [root@a09b570600a7 /]# [root@a09b570600a7 /]# [root@a09b570600a7 /]# cd /tmp [root@a09b570600a7 tmp]# ll total 8 -rw-r--r-- 1 root root 12 Feb 24 14:02 happybks.txt -rwx------ 1 root root 836 Dec 5 01:37 ks-script-h2MyUP -rw------- 1 root root 0 Dec 5 01:36 yum.log [root@a09b570600a7 tmp]#
二者的區別:
attach: 直接進入容器啓動命令終端,不會啓動新的進程
exec:是在容器中打開新的終端,而且能夠啓動新進程
從容器內拷貝文件到宿主機
加入你在正在運行的容器內運行產生了一些數據,但願吧數據拷貝出來。
docker cp [容器id]:[容器內路徑] [目的主機路徑]
neil@linux-famw:~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a09b570600a7 centos "/bin/bash" 42 minutes ago Up 42 minutes infallible_leavitt neil@linux-famw:~> neil@linux-famw:~> docker cp a09b570600a7:/tmp/happybks.txt ~/ neil@linux-famw:~> ll 總用量 20 drwxr-xr-x 23 neil users 4096 12月 31 13:31 anaconda3 drwxr-xr-x 2 neil users 6 7月 10 2018 bin drwxr-xr-x 2 neil users 116 7月 21 2018 Desktop drwxr-xr-x 3 neil users 85 10月 6 23:23 Documents drwxr-xr-x 5 neil users 4096 2月 16 14:55 Downloads drwxr-xr-x 3 neil users 63 12月 18 22:38 flink drwxr-xr-x 2 neil users 6 10月 21 14:51 hadoop -rw-r--r-- 1 neil users 12 2月 24 22:02 happybks.txt drwxr-xr-x 6 neil users 296 1月 1 20:43 IDE drwxr-xr-x 3 neil users 27 12月 23 18:41 IdeaProjects drwxr-xr-x 10 neil users 4096 9月 24 10:10 midware drwxr-xr-x 2 neil users 6 7月 10 2018 Music drwxr-xr-x 3 neil users 24 1月 1 22:45 nltk_data drwxr-xr-x 3 neil users 4096 2月 16 22:19 Pictures drwxr-xr-x 2 neil users 6 7月 10 2018 Public drwxr-xr-x 4 neil users 41 1月 12 11:51 PycharmProjects drwxr-xr-x 3 neil users 16 8月 30 22:40 tempdata drwxr-xr-x 2 neil users 6 7月 10 2018 Templates drwxr-xr-x 2 neil users 6 7月 10 2018 Videos neil@linux-famw:~> neil@linux-famw:~> cat happybks.txt hi happyBKs neil@linux-famw:~>
相應地,我也能夠將宿主機的文件用一樣的命令拷貝到容器內的某個目錄下。
docker cp [宿主機文件路徑] [容器id]:[容器內路徑]
neil@linux-famw:~> neil@linux-famw:~> touch oschina.txt neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker cp oschina.txt a09b570600a7:/tmp neil@linux-famw:~> neil@linux-famw:~> docker exec -t a09b570600a7 ls -l /tmp total 8 -rw-r--r-- 1 root root 12 Feb 24 14:02 happybks.txt -rwx------ 1 root root 836 Dec 5 01:37 ks-script-h2MyUP -rw-r--r-- 1 1000 users 0 Feb 24 14:50 oschina.txt -rw------- 1 root root 0 Dec 5 01:36 yum.log neil@linux-famw:~> neil@linux-famw:~>
這裏再順便說一下,若是容器中止後,咱們想查看剛纔容器中的文件,依然能夠啓動容器查看。
neil@linux-famw:~> neil@linux-famw:~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a09b570600a7 centos "/bin/bash" About an hour ago Up About an hour infallible_leavitt neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker kill a09b570600a7 a09b570600a7 neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker ps -n 1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a09b570600a7 centos "/bin/bash" About an hour ago Exited (137) 45 seconds ago infallible_leavitt neil@linux-famw:~> neil@linux-famw:~> docker start a09b570600a7 a09b570600a7 neil@linux-famw:~> neil@linux-famw:~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a09b570600a7 centos "/bin/bash" About an hour ago Up 5 seconds infallible_leavitt neil@linux-famw:~> neil@linux-famw:~> docker exec -t a09b570600a7 ls -l /tmp total 8 -rw-r--r-- 1 root root 12 Feb 24 14:02 happybks.txt -rwx------ 1 root root 836 Dec 5 01:37 ks-script-h2MyUP -rw-r--r-- 1 1000 users 0 Feb 24 14:50 oschina.txt -rw------- 1 root root 0 Dec 5 01:36 yum.log neil@linux-famw:~> neil@linux-famw:~>
1)被殺死的已經中止的容器依然能夠經過docker cp拷貝文件。
2)被殺死的已經中止的容器依然不能夠經過docker exec等方式執行容器命令或進入容器內。
neil@linux-famw:~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a09b570600a7 centos "/bin/bash" About an hour ago Up 2 minutes infallible_leavitt neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker kill a09b570600a7 a09b570600a7 neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker ps -n 1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a09b570600a7 centos "/bin/bash" About an hour ago Exited (137) 56 seconds ago infallible_leavitt neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker cp a09b570600a7:/tmp/happybks.txt ~/ neil@linux-famw:~> neil@linux-famw:~> neil@linux-famw:~> docker cp a09b570600a7:/tmp/happybks.txt ~/happybks2.txt neil@linux-famw:~> ll 總用量 24 drwxr-xr-x 23 neil users 4096 12月 31 13:31 anaconda3 drwxr-xr-x 2 neil users 6 7月 10 2018 bin drwxr-xr-x 2 neil users 116 7月 21 2018 Desktop -rw-r--r-- 1 neil users 0 2月 24 23:03 docker drwxr-xr-x 3 neil users 85 10月 6 23:23 Documents drwxr-xr-x 5 neil users 4096 2月 16 14:55 Downloads drwxr-xr-x 3 neil users 63 12月 18 22:38 flink drwxr-xr-x 2 neil users 6 10月 21 14:51 hadoop -rw-r--r-- 1 neil users 12 2月 24 22:02 happybks2.txt -rw-r--r-- 1 neil users 12 2月 24 22:02 happybks.txt drwxr-xr-x 6 neil users 296 1月 1 20:43 IDE drwxr-xr-x 3 neil users 27 12月 23 18:41 IdeaProjects drwxr-xr-x 10 neil users 4096 9月 24 10:10 midware drwxr-xr-x 2 neil users 6 7月 10 2018 Music drwxr-xr-x 3 neil users 24 1月 1 22:45 nltk_data -rw-r--r-- 1 neil users 0 2月 24 22:50 oschina.txt drwxr-xr-x 3 neil users 4096 2月 16 22:19 Pictures drwxr-xr-x 2 neil users 6 7月 10 2018 Public drwxr-xr-x 4 neil users 41 1月 12 11:51 PycharmProjects drwxr-xr-x 3 neil users 16 8月 30 22:40 tempdata drwxr-xr-x 2 neil users 6 7月 10 2018 Templates drwxr-xr-x 2 neil users 6 7月 10 2018 Videos neil@linux-famw:~> neil@linux-famw:~> docker exec -t a09b570600a7 ls -l /tmp Error response from daemon: Container a09b570600a7a331350f0b08858593ed4303dba591148c91d8fdee7b9d1262f4 is not running neil@linux-famw:~>
這些命令咱們要有個結構化的瞭解。