Docker筆記4——容器命令(下)

啓動守護式容器

使用某個鏡像的後臺模式啓動一個容器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退出交互模式。

若是咱們想再次進入容器進行命令操做怎麼辦呢?

方式1:進入正在運行的容器

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:~>

注意事項的2亮點

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:~>

 

 

docker命令架構圖

這些命令咱們要有個結構化的瞭解。

相關文章
相關標籤/搜索