1 docker 命令介紹linux
docker --helpdocker
管理命令:shell
container 管理容器ubuntu
image 管理鏡像api
network 管理網絡bash
命令:服務器
attach 介入到一個正在運行的容器網絡
build 根據 Dockerfile 構建一個鏡像app
commit 根據容器的更改建立一個新的鏡像cors
cp 在本地文件系統與容器中複製 文件/文件夾
create 建立一個新容器
exec 在容器中執行一條命令
images 列出鏡像
kill 殺死一個或多個正在運行的容器
logs 取得容器的日誌
pause 暫停一個或多個容器的全部進程
ps 列出全部容器
pull 拉取一個鏡像或倉庫到 registry
push 推送一個鏡像或倉庫到 registry
rename 重命名一個容器
restart 從新啓動一個或多個容器
rm 刪除一個或多個容器
rmi 刪除一個或多個鏡像
run 在一個新的容器中執行一條命令
search 在 Docker Hub 中搜索鏡像
start 啓動一個或多個已經中止運行的容器
stats 顯示一個容器的實時資源佔用
stop 中止一個或多個正在運行的容器
tag 爲鏡像建立一個新的標籤
top 顯示一個容器內的全部進程
unpause 恢復一個或多個容器內全部被暫停的進程
2. 更詳細的功能參數配置
參數 |
解釋 |
--api-enable-cors=false |
開放遠程API調用的 CORS 頭信息。這個接口開關對想進行二次開 發的上層應用提供了支持. |
-b, --bridge="" |
掛載已經存在的網橋設備到 Docker 容器裏。注意,使用 none 能夠停用容器裏的網絡. |
--bip="" |
使用 CIDR 地址來設定網絡橋的 IP。注意,此參數和 -b 不能一塊兒使用. |
-D, --debug=false |
開啓Debug模式。例如:docker -d -D |
-d, --daemon=false |
開啓Daemon模式. |
--dns=[] |
強制容器使用DNS服務器.例如: docker -d --dns 8.8.8.8 |
--dns-search=[] |
強制容器使用指定的DNS搜索域名.例如: docker -d --dns-search example.com |
-e, --exec-driver="native" |
強制容器使用指定的運行時驅動.例如:docker -d -e lxc |
-G, --group="docker" |
在後臺運行模式下,賦予指定的Group到相應的unix socket上。 注意,當此參數 --group 賦予空字符串時,將去除組信息。 |
-g, --graph="/var/lib/docker" |
配置Docker運行時根目錄 |
-H, --host=[] |
在後臺模式下指定socket綁定,能夠綁定一個或多個 tcp://host:port, unix:///path/to/socket, fd://* 或 fd://socketfd。例如:$ docker -H tcp://0.0.0.0:2375 ps 或者 $ export DOCKER_HOST="tcp://0.0.0.0:2375" $ docker ps |
--icc=true |
啓用內聯容器的通訊. |
--ip="0.0.0.0" |
容器綁定IP時使用的默認IP地址. |
--ip-forward=true |
啓動容器的 net.ipv4.ip_forward. |
--iptables=true |
啓動Docker容器自定義的iptable規則. |
--mtu=0 |
設置容器網絡的MTU值,若是沒有這個參數,選用默認 route MTU, 若是沒有默認route,就設置成常量值 1500. |
-p, --pidfile="/var/run/docker.pid" |
後臺進程PID文件路徑. |
-r, --restart=true |
重啓以前運行中的容器. |
-s, --storage-driver="" |
強制容器運行時使用指定的存儲驅動,例如,指定使用devicemapper, 能夠這樣:docker -d -s devicemapper |
--selinux-enabled=false |
啓用selinux支持 |
--storage-opt=[] |
配置存儲驅動的參數 |
--tls=false |
啓動TLS認證開關 |
--tlscacert="/Users/dxiao/.docker/ca.pem" |
經過CA認證過的的certificate文件路徑 |
--tlscert="/Users/dxiao/.docker/cert.pem" |
TLS的certificate文件路徑 |
--tlskey="/Users/dxiao/.docker/key.pem" |
TLS的key文件路徑 |
--tlsverify=false |
使用TLS並作後臺進程與客戶端通信的驗證 |
-v, --version=false |
顯示版本信息 |
*注意:其中帶有[] 的啓動參數能夠指定屢次,例如
docker run -a stdin -a stdout -a stderr -i -t ubuntu /bin/bash
· 查看系統內核
· uname -r
· 啓動docker 境像
· systemctl start docker
· 3.查看docker版本
· docker verison
· 4.顯示docker系統的信息
· docker info
1.檢索image
docker search image-name
2.下載image
docker pull image-name
3.列出鏡像列表
docker images
4.刪除一個或者多個鏡像
docker rmi image-name
5.顯示一個鏡像的歷史
docker history image-name
6.經過容器建立鏡像
*從已經建立的容器中更新鏡像,而且提交這個鏡像 *使用 Dockerfile 指令來建立一個新的鏡像 下面經過已存在的容器建立一個新的鏡像。
docker commit -m="First Image" -a="keke" 7a15f99695c0 keke/unbantu:17.10.0
上面命令參數說明:
* -m 提交的描述信息
* -a 指定鏡像做者
* 7a15f99695c0 記住這個是容器id,不是鏡像id
* keke/unbantu:17.10.0 建立的目標鏡像名
1. 在Docker 註冊帳戶,發佈的鏡像都在這個頁面裏展現
2. 將上面作的鏡像unbantu,起個新的名字unbantu-test
docker tag keke/unbantu:17.10.0 keke/unbantu-test:lastest
1. 登陸docker
docker login
4.上傳unbantu鏡像
docker push keke/unbantu-test:lastest
docker容器能夠理解爲在沙盒中運行的進程。這個沙盒包含了該進程運行所必須的資源,包括文件系統、系統類庫、shell 環境等等。但這個沙盒默認是不會運行任何程序的。你須要在沙盒中運行一個進程來啓動某一個容器。這個進程是該容器的惟一進程,因此當該進程結束的時候,容器也會徹底的中止。
1.在容器中安裝新的程序
docker run image-name apt-get install -y -name
2.在容器中運行"echo"命令,輸出"hello word"
docker run image-name echo "hello word"
3.交互式進入容器中
docker run -i -t image_name /bin/bash
注意:在執行apt-get 命令的時候,要帶上-y參數。若是不指定-y參數的話,apt-get命令會進入交互模式,須要用戶輸入命令來進行確認,但在docker環境中是沒法響應這種交互的。apt-get 命令執行完畢以後,容器就會中止,但對容器的改動不會丟失.
1.列出當前全部正在運行的container
docker ps
2.列出全部的container
docker ps -a
3.列出最近一次啓動的container
docker ps -l
4.保存對容器的修改 當你對某一個容器作了修改以後(經過在容器中運行某一個命令),能夠把對容器的修改保存下來,這樣下次能夠從保存後的最新狀態運行該容器。
1.保存對容器的修改; -a, --author="" Author; -m, --message="" Commit message
docker commit ID new-image-name
5.操做容器
1.刪除全部容器
docker rm `docker ps -a -q`
2.刪除單個容器; -f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --volumes=false Remove the volumes associated to the container
docker rm Name/ID
3.中止、啓動、殺死一個容器
docker stop Name/ID
docker start Name/ID
docker kill Name/ID
4.從一個容器中取日誌; -f, --follow=false Follow log output; -t, --timestamps=false Show timestamps
docker logs Name/ID
5.列出一個容器裏面被改變的文件或者目錄,list列表會顯示出三種事件,A 增長的,D 刪除的,C 被改變的
docker diff Name/ID
6.顯示一個運行的容器裏面的進程信息
docker top Name/ID
7.從容器裏面拷貝文件/目錄到本地一個路徑
docker cp Name:/container-path to-path
docker cp ID:/container-path to-path
8.重啓一個正在運行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10
docker restart Name/ID
9.附加到一個運行的容器上面; --no-stdin=false Do not attach stdin; --sig-proxy=true Proxify all received signal to the process
docker attach ID #從新啓動並運行一個交互式會話shell
注意:attach命令容許你查看或者影響一個運行的容器。你能夠在同一時間attach同一個容器。你也能夠從一個容器中脫離出來,是從CTRL-C.
當須要把一臺機器上的鏡像遷移到另外一臺機器的時候,須要保存鏡像與加載鏡像。
1.保存鏡像到一個tar包; -o, --output="" Write to an file
docker save image-name -o file-path
2.加載一個tar包格式的鏡像; -i, --input="" Read from a tar archive file
docker load -i file-path
3.從機器A拷貝到機器B
docker save image-name > /home/keke/main.tar
*使用scp將main.tar拷到機器A上:
docker load < /home/keke/main.tar
1.登錄registry server; -e, --email="" Email; -p, --password="" Password; -u, --username="" Username
docker login
docker push new-image-name
FROM ...
RUN ...
# 指定容器內的程序將會使用容器的指定端口
# 配合 docker run -p
EXPOSE ...
· RUN: 指定鏡像被構建時要運行的命令
· CMD: 指定容器被啓動時要運行的命令
· ENTRYPOINT: 同 CMD ,但不會被 docker run -t 覆蓋
· WORKDIR: CMD/ENTRYPOINT 會在這個目錄下執行
· VOLUME
· ADD
· COPY
docker history images-name
1.重新鏡像啓動容器
docker run -d -p 4000:80 --name [name] #能夠在 Dokcer 宿主機上指定一個具體的端口映射到容器的80端口上
docker run -d container-name #建立守護容器
docker top container-name #查看容器內進程
docker exec container-name touch a.txt #在容器內部運行進程
docker stop container-name #中止容器