本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第六篇 Part 6: The Next 15 Docker Commands。
該系列全部文章將參考其餘學習資料翻譯,也會加入本身的學習做爲部分註解。若有錯誤,歡迎指正。php
在以前的文章中咱們介紹了十五條 Docker 命令。這篇文章將會給你們介紹另外十五條實用的 Docker 命令。nginx
他們分別是:docker
daemon,又稱爲守護進程,一般是指在後臺持續運行的服務,例如 nginx、apache、php 等。Docker 的 daemon 模式即是相似 nginx 同樣,讓 Docker 運行在後臺提供服務。apache
和大多數的 unix 服務同樣,-d
參數可讓 Docker 運行在後臺。ubuntu
在前面咱們講過 Dockerfile
,不過一直沒有告訴你們怎麼用本身的 Dockerfile
生成鏡像文件。
那麼如今也不算晚:使用 build 命令生成 image。segmentfault
docker build [OPTIONS] PATH | URL | -
PATH / URL / - 這三個是必選選項,三選一。bash
OPTION 可使用 docker build --help
進行查看,主要包括構建過程當中的內存限制、CPU 限制、以及其餘。有兩個必須須要瞭解的 OPTION 選項:服務器
-f
: 和make
同樣,若是PATH
內找不到Dockerfile
,則docker build
必需要 -f
參數指定Dockerfile
。-t
: 指定生成的鏡像標籤。例如: docker build -f Dockerfile -t tag .
,使用 Dockerfile.bak
生成一個標籤叫 tag
的鏡像文件。另外,-
選項很是有意思:docker build -
,而後能夠交互式地輸入 Dockerfile,輸入完畢後按 Ctrl+D 結束輸入便可。tcp
OPTION 必定要放在 PATH / URL / - 前面。ide
原文至今沒有提到 docker ps
命令,太坑了,補充一下:
docker ps
命令用於顯示運行中的容器,例如
命令 # docker run -d ubuntu /usr/bin/top -b b33059d6c7427e377a1239eca59605e18bb6d145c4f12df6021db4896b6fcfa3 命令 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b33059d6c742 ubuntu:latest "/usr/bin/top -b" 2 seconds ago Up 2 seconds backstabbing_jang
docker ps -a
則是顯示全部容器,包括運行過的容器的歷史記錄。
Docker 容許 attach 進入容器並與運行中的容器進行交互,同時容許查看容器內守護進程態下的程序的輸出,使用如下兩種方式退出容器:
語法:docekr attach <container>
那麼仍是剛剛那個容器:
命令 # docker run -d ubuntu /usr/bin/top -b b33059d6c7427e377a1239eca59605e18bb6d145c4f12df6021db4896b6fcfa3 命令 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b33059d6c742 ubuntu:latest "/usr/bin/top -b" 2 seconds ago Up 2 seconds backstabbing_jang 命令 # docker attach backstabbing_jang #此處也能夠用docker attach b330 top - 05:30:49 up 16:04, 0 users, load average: 0.01, 0.19, 0.39 Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.7 us, 2.0 sy, 0.0 ni, 96.0 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st KiB Mem: 1003080 total, 596484 used, 406596 free, 42524 buffers KiB Swap: 1046524 total, 0 used, 1046524 free. 330716 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19744 1280 1008 R 0.0 0.1 0:00.08 top top - 05:30:52 up 16:05, 0 users, load average: 0.01, 0.19, 0.39 Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 1.0 sy, 0.0 ni, 94.3 id, 4.3 wa, 0.3 hi, 0.0 si, 0.0 st KiB Mem: 1003080 total, 596484 used, 406596 free, 42528 buffers KiB Swap: 1046524 total, 0 used, 1046524 free. 330712 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 19744 1280 1008 R 0.0 0.1 0:00.08 top 省略部分輸出
docker diff <contianer>
用於顯示容器的文件改動,包括 A(add),C(change),D(delete)。這些信息能夠用於 debug,也能夠用於快速信息共享。
示例:
命令 # docker run -t -i ubuntu /bin/bash 命令(容器內) root@cc9befbe64a1:/# nano a bash: nano: command not found 命令(容器內)root@cc9befbe64a1:/# apt-get install nano Reading package lists... Done Building dependency tree Reading state information... Done Suggested packages: spell The following NEW packages will be installed: nano 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 194 kB of archives. After this operation, 614 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main nano amd64 2.2.6-1ubuntu1 [194 kB] Fetched 194 kB in 3s (54.3 kB/s) Selecting previously unselected package nano. (Reading database ... 11527 files and directories currently installed.) Preparing to unpack .../nano_2.2.6-1ubuntu1_amd64.deb ... Unpacking nano (2.2.6-1ubuntu1) ... Setting up nano (2.2.6-1ubuntu1) ... update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in auto mode update-alternatives: using /bin/nano to provide /usr/bin/pico (pico) in auto mode 命令(容器內) root@cc9befbe64a1:/#
這個容器ID是cc9befbe64a1
,因而能夠新開一個終端:
命令 # docker diff cc9 A /.wh..wh.plnk/119.673746 A /.wh..wh.plnk/335.673670 C /bin A /bin/nano A /bin/rnano C /etc C /etc/alternatives D /etc/alternatives/editor.fr.1.gz 省略部分輸出
獲取 Docker 服務端的實時事件,例如 docker events
的同時運行 docker run ubuntu
。
用於導入 URL / 文件,從本地導入須要 -
參數。docker import [OPTIONS] URL|- [REPOSITORY[:TAG]]
、URL
/-
二選一。
例如,咱們導入 openvz 的 suse minimal 鏡像:
命令# docker import http://mirrors.ustc.edu.cn/openvz/template/precreated/suse-13.1-x86-minimal.tar.gz suse:minimal #這裏使用的是ustc鏡像源。 Downloading from http://mirrors.ustc.edu.cn/openvz/template/precreated/suse-13.1-x86-minimal.tar.gz 127a9e7b9f87e4fc280c96bee9fad0a19057de38d307fe7fc1f6d35c86f1aff657.89 MB/57.89 MB 命令# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE suse minimal 127a9e7b9f87 2 minutes ago 149.1 MB
導入本地鏡像:
cat suse-13.1-x86-minimal.tar.gz |docker import - suse:minmal
導入 Gentoo 的 stage3:
docker import http://mirrors.ustc.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20150423.tar.bz2 gentoo:stage3
和 import 相反,export 將容器導出成 tar
壓縮包。
例如
命令 # docker run -i -t -d suse:minimal /bin/bash 060f6e6c877af01313363b6506107438b9eb5ba87a7ef0625577e348a554ecca 命令 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 060f6e6c877a suse:minimal "/bin/bash" 2 seconds ago Up 2 seconds fervent_ritchie 命令 # docker export -o a.tar 060f 命令 # docker export 060f > a.tar #也能夠這樣。
從容器內複製出文件:格式 docker cp container:path hostpath
命令 # docker cp 060:/etc/zypp/zypp.conf /tmp/ #060是容器ID的簡寫 命令 # cat /tmp/zypp.conf ## Configuration file for software management ## /etc/zypp/zypp.conf ## ## Boolean values are 0 1 yes no on off true false 省略。。
登陸到 docker registry server:
命令 # docker login Username (qiuker521): qiuker521 WARNING: login credentials saved in /root/.dockercfg. Login Succeeded
固然也能夠登陸到本身的私有服務器:docker login localhost:8080
用法:docker inspect <container>/<image>
,用於收集容器的底層信息,包括以下內容:
例如
命令 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf57741249fb dockerui/dockerui:latest "/dockerui" 2 minutes ago Up 2 minutes 0.0.0.0:9000->9000/tcp trusting_hawking 命令 # docker inspect --format='{{.NetworkSettings.IPAddress}}' cf5 172.17.0.17
用來中止正在運行的容器。
docker kill [OPTION] container
用來刪除容器。
docker rm [OPTIONS] CONTAINER [CONTAINER...]
不一樣於 rm,是用來刪除鏡像的命令。
docker rmi [OPTIONS] IMAGE [IMAGE...]
由於會有不少層的依賴,因此不少時候須要用
-f
參數進行刪除。
用來獲取容器的退出信號值。已退出的容器直接返回 exit 值,未退出的容器等待容器退出,而後返回 exit 值。
這兩個放在一塊吧。
使用 load 從 stdin
導入一個 tar
格式的鏡像或者倉庫,而後用 save 將 tar
鏡像輸出到 stdout
。
docker save -o <output file> <image>
或者docker save <image> > <output file>
docker load -i <file name>
或者docker load < <file name>
這兩個命令經常使用於多節點部署。
例如:
命令 # docker save -o a.tar suse 命令 # docker load -i a.tar
Docker 命令的操做到此結束,接下來的教程咱們將會探討 Docker API:第七章講解 Docker 服務器的 Docker API,第八章和第九章講解 Docker remote API。
區別在於:Docker API 主要是用於 Docker 官方 Index、Registry 和 Client 之間互通消息的 API,Docker remote API 則是用於控制主機 Docker 服務端的 API。