docker 命令介紹

查看鏡像docker

docker images: 列出images
docker images -a :列出全部的images(包含歷史)
docker images --tree :顯示鏡像的全部層(layer) :已棄用
docker rmi <image ID>: 刪除一個或多個imageshell

[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB
[root@localhost docker]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB
[root@localhost docker]# docker images --tree
unknown flag: --tree
See 'docker images --help'.centos

 


使用鏡像建立窗口與交互式運行
docker run docker.io/centos:建立容器,測試發現此種方式建立的容器不能啓動(具體緣由待驗證)
docker run -i -t docker.io/centos /bin/bash:建立容器並交互式運行bash


[root@localhost docker]# docker run docker.io/centos /bin/echo hello docker --建立容器,並輸出 hello docker
hello docker
[root@localhost docker]# docker run docker.io/centos --建立容器
[root@localhost docker]# docker run -i -t docker.io/centos /bin/bash --建立容器並交互式運行
[root@e9a66fa63cbf /]# ls
anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@e9a66fa63cbf /]# app

 

查看容器post

docker ps :列出當前全部正在運行的container
docker ps -l :列出最近一次啓動的container
docker ps -a :列出全部的container(包含歷史,即運行過的container)
docker ps -q :列出最近一次運行的container ID測試

[root@localhost frinder]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost frinder]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9a66fa63cbf docker.io/centos "/bin/bash" 2 minutes ago Exited (0) About a minute ago tiny_lamport
[root@localhost frinder]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9a66fa63cbf docker.io/centos "/bin/bash" 2 minutes ago Exited (0) About a minute ago tiny_lamport
b56b4960d31f docker.io/centos "/bin/bash" 5 minutes ago Exited (0) 5 minutes ago amazing_colden
23ccaa5b07c2 docker.io/centos "/bin/echo hello dock" 7 minutes ago Exited (0) 7 minutes ago cocky_tesla
54d23ded3cd1 docker.io/centos "/bin/bash" 32 minutes ago Exited (0) 30 minutes ago trusting_euclid
[root@localhost frinder]# docker ps -q
[root@localhost frinder]# ui

 

 

 

再次啓動容器
docker start/stop/restart <container> :開啓/中止/重啓container
docker start [container_id] :再次運行某個container (包括歷史container)
docker attach [container_id] :鏈接一個正在運行的container實例(即實例必須爲start狀態,能夠多個窗口同時attach 一個container實例)
docker start -i <container> :啓動一個container並進入交互模式(至關於先start,在attach)
docker run -i -t <image> /bin/bash :使用image建立container並進入交互模式, login shell是/bin/bash
docker run -i -t -p <host_port:contain_port> :映射 HOST 端口到容器,方便外部訪問容器內服務,host_port 能夠省略,省略表示把 container_port 映射到一個動態端口。
注:使用start是啓動已經建立過得container,使用run則經過image開啓一個新的container。3d


[root@localhost docker]# docker start e9a66fa63cbf
e9a66fa63cbf
[root@localhost docker]# docker attach e9a66fa63cbf
[root@e9a66fa63cbf /]# exit
exit
[root@localhost docker]# docker restart e9a66fa63cbf
e9a66fa63cbf
[root@localhost docker]# docker attach e9a66fa63cbf
[root@e9a66fa63cbf /]# exit
exit
[root@localhost docker]# docker start -i e9a66fa63cbf
[root@e9a66fa63cbf /]# exit
exit
[root@localhost docker]# rest

 

 

刪除容器
docker rm <container...> :刪除一個或多個container
docker rm `docker ps -a -q` :刪除全部的container
docker ps -a -q | xargs docker rm :同上, 刪除全部的container


[root@localhost docker]# docker rm b56b4960d31f
b56b4960d31f
[root@localhost docker]#

 

 

 

持久化容器與鏡像


經過容器生成新的鏡像

docker commit <container-id> <image-name>:把一個容器轉變爲一個新的鏡像

[root@localhost docker]# docker commit 54d23ded3cd1 test-image
sha256:6104a9ded2f03269e20f58d02b56221c02d72adf0eeca3257c2a92d78a01b8ee
[root@localhost frinder]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test-image latest 6104a9ded2f0 19 seconds ago 192.5 MB
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB

 

持久化容器
export命令用於持久化容器
docker export <CONTAINER ID> > /tmp/export.tar

[root@localhost docker]# docker export e9a66fa63cbf > /tmp/test.tar
[root@localhost docker]# ls /tmp/
anaconda.log ks-script-Ig5NMv storage.log test.tar
[root@localhost docker]#

 

持久化鏡像
save命令用於持久化鏡像
docker save 鏡像ID > /tmp/save.tar

[root@localhost docker]# docker save test-image > /tmp/i-test.tar
[root@localhost docker]# ll /tmp
總用量 390960
-rw-r--r--. 1 root root 1862 4月 10 2017 anaconda.log
-rw-r--r--. 1 root root 200103424 4月 10 18:14 c-test.tar
-rw-r--r--. 1 root root 200116224 4月 10 18:16 i-test.tar

 

導入持久化container(將 container導入成 image)
[root@localhost docker]# cat /tmp/c-test.tar |docker import - export:latest

[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9a66fa63cbf docker.io/centos "/bin/bash" 31 minutes ago Exited (0) 18 minutes ago tiny_lamport
23ccaa5b07c2 docker.io/centos "/bin/echo hello dock" 36 minutes ago Exited (0) 21 minutes ago cocky_tesla
54d23ded3cd1 docker.io/centos "/bin/bash" About an hour ago Exited (0) 17 minutes ago trusting_euclid
[root@localhost docker]# docker rm e9a66fa63cbf
e9a66fa63cbf
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23ccaa5b07c2 docker.io/centos "/bin/echo hello dock" 36 minutes ago Exited (0) 21 minutes ago cocky_tesla
54d23ded3cd1 docker.io/centos "/bin/bash" About an hour ago Exited (0) 17 minutes ago trusting_euclid
[root@localhost docker]# cat /tmp/c-test.tar |docker import - export:latest
sha256:e65811fb72d82ed380eb3e138ee693b40074726c758f80193d17a4a01d8f9108
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
23ccaa5b07c2 docker.io/centos "/bin/echo hello dock" 37 minutes ago Exited (0) 22 minutes ago cocky_tesla
54d23ded3cd1 docker.io/centos "/bin/bash" About an hour ago Exited (0) 18 minutes ago trusting_euclid
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
export latest e65811fb72d8 48 seconds ago 192.5 MB
test-image latest 6104a9ded2f0 15 minutes ago 192.5 MB
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB

 


導入持久化image
[root@localhost docker]# docker load < /tmp/i-test.tar

[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
export latest e65811fb72d8 48 seconds ago 192.5 MB
test-image latest 6104a9ded2f0 15 minutes ago 192.5 MB
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB
[root@localhost docker]# docker rmi test-image
Untagged: test-image:latest
Deleted: sha256:6104a9ded2f03269e20f58d02b56221c02d72adf0eeca3257c2a92d78a01b8ee
Deleted: sha256:287c689f3983b30f642dab57f59ec5a21aa817e1aaf1d37ea63207a7a8cd0a50
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
export latest e65811fb72d8 About a minute ago 192.5 MB
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB
[root@localhost docker]# docker load < /tmp/i-test.tar
496bc0b12baf: Loading layer [==================================================>] 3.584 kB/3.584 kB
Loaded image: test-image:latest=====> ] 512 B/3.584 kB
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
export latest e65811fb72d8 5 minutes ago 192.5 MB
test-image latest 6104a9ded2f0 19 minutes ago 192.5 MB
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB
[root@localhost docker]#

 


修改 image tag:
[root@localhost docker]# docker tag test-image load:my.image

[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
export latest e65811fb72d8 5 minutes ago 192.5 MB
test-image latest 6104a9ded2f0 19 minutes ago 192.5 MB
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB
[root@localhost docker]# docker tag test-image load:my.image
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
export latest e65811fb72d8 7 minutes ago 192.5 MB
load my.image 6104a9ded2f0 22 minutes ago 192.5 MB
test-image latest 6104a9ded2f0 22 minutes ago 192.5 MB
docker.io/centos latest a8493f5f50ff 3 days ago 192.5 MB
[root@localhost docker]#

 


export-import與save-load的區別

導出後再導入(export-import)的鏡像會丟失全部的歷史,而保存後再加載(save-load)的鏡像沒有丟失歷史和層(layer)。這意味着使用導出後再導入的方式,你將沒法回滾到以前的層(layer),同時,使用保存後再加載的方式持久化整個鏡像,就能夠作到層回滾。(能夠執行docker tag <LAYER ID> <IMAGE NAME>來回滾以前的層)。

 

 

一些其它命令

docker logs $CONTAINER_ID #查看docker實例運行日誌,確保正常運行
docker inspect $CONTAINER_ID #docker inspect <image|container> 查看image或container的底層信息
docker build <path> 尋找path路徑下名爲的Dockerfile的配置文件,使用此配置生成新的image
docker build -t repo[:tag] 同上,能夠指定repo和可選的tag
docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式獲取內容,使用此配置生成新的image
docker port <container> <container port> 查看本地哪一個端口映射到container的指定端口,其實用docker ps 也能夠看到

 


一些使用技巧

docker文件存放目錄
Docker實際上把全部東西都放到/var/lib/docker路徑下了。

[root@localhost docker]# ls -F
containers/ devicemapper/ execdriver/ graph/ init/ linkgraph.db repositories-devicemapper volumes/

containers目錄固然就是存放容器(container)了,graph目錄存放鏡像,文件層(file system layer)存放在graph/imageid/layer路徑下,這樣咱們就能夠看看文件層裏到底有哪些東西,利用這種層級結構能夠清楚的看到文件層是如何一層一層疊加起來的。

相關文章
相關標籤/搜索