[root@docker ~]# docker
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
config Manage Docker configs
container Manage containers
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Run 'docker COMMAND --help' for more information on a command.
1、docker start/stop/restart/kill
啟動/停止/重啟/殺掉容器
實體操作如下:
[root@docker ~]# docker start myweb [root@docker ~]# docker stop myweb [root@docker ~]# docker restart myweb [root@docker ~]# docker kill -s kill myweb 引數 -s #向容器發送信號
2、docker run
創建并啟動一個新的容器
常用引數如下:
-d, --detach=false #后臺運行容器,并回傳容器ID -i, --interactive=false #以互動式模式運行容器,常與-t引數同時使用 -t, --tty=false #給容器重新分配一個偽終端,常與-i引數同時使用 -w, --workdir="", 指定容器的作業目錄 --name #給容器指定一個名稱 -e, --env=[] 指定環境變數,容器中可以使用該環境變數 -m --memory="" #指定容器使用記憶體的最大值 -c, --cpu-shares=0, 設定容器CPU權重,在CPU共享場景使用 -p, --publish=[], 指定容器暴露的埠 -v, --volume=[], 給容器掛載存盤卷,掛載到容器的某個目錄 --volumes-from=[], 給容器掛載其他容器上的卷,掛載到容器的某個目錄 --net #指定容器使用的網路型別 bridge 使用docker daemon指定的網橋 host //容器使用主機的網路 container:NAME_or_ID >//使用其他容器的網路,共享IP和PORT等網路資源 none 容器使用自己的網路(類似--net=bridge),但是不進行配置 --link #鏈接到另一個容器 --restart="no", 指定容器停止后的重啟策略: no:容器退出時不重啟 on-failure:容器故障退出(回傳值非零)時重啟 always:容器退出時總是重啟
實體操作如下:
[root@docker ~]# docker run -d --name nginx busybox:latest 3a90679ec552a00a989a9db2734044fd9a0314b35eee9b490cdcd7e763782516 #后臺啟動并運行一個名為nginx的容器,運行前它會自動去docker鏡像站點下載最新的鏡像檔案 [root@docker ~]# docker run -d -p 8080:8080 busybox:latest 3c4d6a2f19099deebc5c3f874a2c86a281076f52921fb27614654237da1cba4e #后臺啟動并運名為nginx的容器,然后將容器的80埠映射到物理機的80埠 [root@docker ~]# docker run -d -v /opt/data/:/docker/data -p 8080:8080 busybox:latest 89511e1621bb7222785deb641dfb5d7b69971e0787ecc293f47931881acd8fec #后臺啟動并運名為nginx的容器,然后將容器的80埠映射到物理機的80埠,并且將物理機的/opt/data目錄映射到容器的/docker/data [root@docker ~]# docker run -dit -v /opt/data/:/docker/data -p 8080:8080 busybox:latest /bin/sh 59961b69f80b3dab22330da30e5d4363dbd98d8bb3597b8fcfa485216f33176d [root@docker ~]# docker exec -it 59961b69f80b /bin/sh / # ls /docker/data/ / # #以互動式模式運行容器,然后在容器內執行/bin/bash命令
3、docker rm
洗掉容器
常用引數如下:
-f #強制洗掉一個運行中的容器
-l #洗掉指定的鏈接
-v #洗掉與容器關聯和卷
實體操作如下:
[root@docker ~]# docker rm -f mydocker #強制洗掉容器mydocker [root@docker ~]# docker rm -f dockerA dockerB #強制洗掉容器dockerA,dockerB [root@docker ~]# docker rm -v mydocker #洗掉容器,并洗掉容器掛載的資料卷
4、docker create
創建一個新的容器但不啟動它 [root@docker ~]# docker create --name myserver busybox:latest 09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961f #創建一個名為myserver的容器
5、docker exec
在運行的容器中執行命令
常用引數如下:
-d #在后臺運行 -i #保持STDIN打開 -t #分配一個偽終端
實體操作如下
[root@docker ~]# docker exec -it busybox /bin/sh /server/scripts/docker.sh hello world!!!!!!!!!! #以互動模式執行容器中的/server/scripts/docker.sh腳本 [root@docker ~]# docker exec -it busybox /bin/sh root@b1a0703e41e7:/# #以互動模式給容器分配一個偽終端連接
6、docker ps
列出容器(正在運行)
常用引數如下:
-a #列出所有容器包括停止的 -f #根據條件過濾顯示內容 -l #列出最近創建的容器 -n #列出最近創建的N個容器,N為數字 -q #只顯示容器ID -s #顯示總檔案大小
實體操作如下: [root@docker ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e3734caa2f63 busybox:latest "/bin/sh" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp busybox #列出正在運行的容器 [root@docker ~]# docker ps -n 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e3734caa2f63 busybox:latest "/bin/sh" 2 hours ago Up 2 hours 0.0.0.0:8080->8080/tcp busybox 81d825fbfc3b busybox:latest "/bin/bash" 3 hours ago Created 0.0.0.0:8080->8080/tcp vigorous_torvalds #列出最近創建的2個容器 [root@docker ~]# docker ps -a -q e3734caa2f63 81d825fbfc3b 89511e1621bb 3c4d6a2f1909 #顯示所有容器的ID
7、docker inspect
獲取容器的元資料
常用引數如下:
-f #指定回傳值格式或模板檔案 -s #顯示總檔案大小 --type #為指定型別回傳JSON
實體操作如下:
[root@docker ~]# docker inspect f2b851facacc
[
{
"Id": "f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7",
"Created": "2019-12-15T10:01:46.932500174Z",
"Path": "/bin/sh",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 7586,
"ExitCode": 0,
"Error": "",
"StartedAt": "2019-12-15T10:01:47.870143961Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:db8ee88ad75f6bdc74663f4992a185e2722fa29573abcc1a19186cc5ec09dceb",
"ResolvConfPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/hostname",
"HostsPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/hosts",
"LogPath": "/var/lib/docker/containers/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7/f2b851facacc4b43a1585cc855d464e21a64d470e9c000fec1f633e75f9706e7-json.log",
"Name": "/peaceful_ride",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/opt/data/:/docker/data/"
],
------------------------------省略部分內容
#獲取容器ID為f2b851facacc的元資料資訊
[root@docker ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' f2b851facacc
172.17.0.2
#獲取容器為f2b851facacc的IP地址
8、docker logs
獲取容器的日志
常用引數如下:
-f #跟蹤日志輸出 -t #顯示時間戳 --tail #只顯示最新n條容器日志 --since #顯示某個開始時間的所有日志
實體操作如下:
[root@docker ~]# docker logs -f busybox #跟蹤查看容器busybox的日志
9、docker port
顯示指定容器的埠映射
實體操作如下:
[root@docker ~]# docker port busybox 8080/tcp -> 0.0.0.0:8080 #顯示busybox容器的埠映射資訊
10、docker commit
用已存在的容器重新創建一個新的鏡像
常用引數如下:
-a #提交的鏡像作者 -c #使用Dockerfile指令來創建鏡像 -m #提交時附上說明文字 -p #在commit時,將容器暫停
實體操作如下:
[root@docker ~]# docker commit -a "test" -m "mynginx" busybox busybox:v1.0 sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd [root@docker ~]# docker images |grep busybox busybox v1.0 f4d667e471bc 24 seconds ago 1.22MB #將容器busybox重新生成一個新的版本busybox:v1.0
11、docker cp
用于容器與物理主機之間拷貝檔案
實體操作如下:
[root@docker ~]# docker cp /opt/data/index.html busybox:/docker [root@docker ~]# docker exec -it busybox /bin/ls /docker data index.html #將物理主機中的/opt/data/index.html拷貝到容器busybox的/docker目錄下 [root@docker ~]# docker cp /opt/data/index.html busybox:/docker/index.php [root@docker ~]# docker exec -it busybox /bin/ls /docker data index.html index.php #將物理主機中的/opt/data/index.html拷貝到容器busybox的/docker目錄下并改名為index.php [root@docker ~]# docker cp busybox:/docker /opt/ [root@docker ~]# ls /opt/ data docker #拷貝容器busybox:/docker目錄到物理主機中的/opt/目錄下
12、docker login/logout
用于登錄與登出容器鏡像倉庫
docker login #登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub
docker logout #登出一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub
常用引數如下:
-u #登陸的用戶名
-p #登陸的密碼
實體操作如下:
[root@docker ~]# docker login -u username -p password Login Succeeded [root@docker ~]# docker logout Removing login credentials for https://index.docker.io/v1/ #登錄與登出默認的容器鏡像倉庫
13、docker pull/push
docker pull #從鏡像倉庫中拉取或者更新指定鏡像
docker push #將本地的鏡像上傳到鏡像倉庫,要先登陸到鏡像倉庫
實體操作如下:
[root@docker ~]# docker pull nginx Using default tag: latest Trying to pull repository docker.io/library/nginx ... latest: Pulling from docker.io/library/nginx f2aa67a397c4: Already exists 3c091c23e29d: Pulling fs layer 4a99993b8636: Pulling fs layer #從鏡像倉庫中拉取或者更新指定鏡像,輸出資訊如上 [root@docker ~]# docker push busybox:v1.0.0 #上傳鏡像到鏡像倉庫上
14、docker images
顯示系統本地容器鏡像檔案
常用引數如下:
-a #列出所有的鏡像(含中間映像層,默認,過濾掉中間映像層); --digests #顯示鏡像的摘要資訊; -f #顯示滿足條件的鏡像; --format #指定回傳值的模板檔案; --no-trunc #顯示完整的鏡像資訊; -q #只顯示鏡像ID,
實體操作如下:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox v1.0 f4d667e471bc 8 minutes ago 1.22MB bitnami/jenkins #列出本地所有的鏡像
[root@docker ~]# docker images -q 20ee805752cb 4700307f41f2 #只顯示容器ID
[root@docker ~]# docker images --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE busybox v1.0 <none> f4d667e471bc 9 minutes ago 1.22MB bitnami/jenkins 2.176.3-debian-9-r5 sha256:3ed6e367edbfececb8d5eb81e1a95eacf188f2f39e629301170aa6b44d61fb92 efdd74a3f655 3 months ago 872MB [root@docker ~]# docker images --no-trunc REPOSITORY TAG IMAGE ID CREATED SIZE busybox v1.0 sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd 10 minutes ago 1.22MB bitnami/jenkins 2.176.3-debian-9-r5 sha256:efdd74a3f655022fedbb3ce09b4652f3b7fdf785f75ffeb1e0adb351d40b68e9 3 months ago 872MB #可以對比下兩個引數顯示的不同資訊
15、docker rmi
洗掉鏡像
常用引數如下:
-f #強制洗掉
實體操作如下:
[root@docker ~]# docker images |grep busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox v1.0 f4d667e471bc 12 minutes ago 1.22MB busybox latest db8ee88ad75f 4 months ago 1.22MB [root@docker ~]# docker rmi f4d667e471bc Untagged: busybox:v1.0 Deleted: sha256:f4d667e471bc72c315bd889869fc1914936dfae2dedd2ce186ee06cad33bb4bd Deleted: sha256:d7fda98509933c5c8f3ee5f3e774c817edcc15ee38960c27a4d19eef44253708 [root@docker ~]# docker images |grep busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest db8ee88ad75f 4 months ago 1.22MB #洗掉一個鏡像
16、docker tag
標記本地鏡像
實體操作如下:
[root@docker ~]# docker images |grep busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest db8ee88ad75f 4 months ago 1.22MB [root@docker ~]# docker tag busybox:latest busybox:v2 [root@docker ~]# docker images |grep busybox REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest db8ee88ad75f 4 months ago 1.22MB busybox v2 db8ee88ad75f 4 months ago 1.22MB #從結果可以看出兩個容器的ID是一樣的,只是TAG改變了,類似于linux中檔案與檔案的硬鏈接一樣,其兩者的inode號相同,
17、docker build :
使用Dockerfile創建鏡像
常用引數如下:
-f #指定要使用的Dockerfile路徑 --label=[] #設定鏡像使用的元資料; -m #設定記憶體最大值 --memory-swap #設定Swap的最大值為記憶體+swap,"-1"表示不限swap --no-cache #創建鏡像的程序不使用快取 --pull #嘗試去更新鏡像的新版本 -q #安靜模式,成功后只輸出鏡像ID --rm #設定鏡像成功后洗掉中間容器 --ulimit #Ulimit配置 實體操作如下: [root@docker ~]# docker build https://github.com/nginxinc/docker-nginx/
18、docker history
查看指定鏡像的創建歷史
常用引數如下:
-H #以可讀的格式列印鏡像大小和日期,默認為true;
--no-trunc #顯示完整的提交記錄;
-q #僅列出提交記錄ID,
實體操作如下:
[root@docker ~]# docker history busybox:latest IMAGE CREATED CREATED BY SIZE COMMENT db8ee88ad75f 4 months ago /bin/sh -c #(nop) CMD ["sh"] 0B <missing> 4 months ago /bin/sh -c #(nop) ADD file:9ceca008111a4ddff… 1.22MB
19、docker info
顯示 Docker 系統資訊,包括鏡像和容器數
20、docker version
顯示 Docker 版本資訊
實體操作如下:
[root@master ~]# docker version Client: Version: 18.06.1-ce API version: 1.38 Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:23:03 2018 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 18.06.1-ce API version: 1.38 (minimum version 1.12) Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:25:29 2018 OS/Arch: linux/amd64 Experimental: false
21、docker save
將指定鏡像保存成 tar 歸檔檔案
選項:
-o:輸出到的檔案
docker save -o nginx.tar.gz nginx:latest
22、docker load
匯入使用 docker save命令匯出的鏡像
選項:
-
--input , -i : 指定匯入的檔案,代替 STDIN,
-
--quiet , -q : 精簡輸出資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/147214.html
標籤:Linux
上一篇:前端學命令列
