使用dokcer加速本地開發和構建,開發人員能夠構建、運行並分享Docker容器,容器能夠在開發環境中構建,而後輕鬆地提交到測試環境中,並最終進入生產環境html
可以讓獨立服務或應用程序在不一樣環境中,獲得相同的運行結果。linux
用docker 建立隔離環境進行測試git
docker 可讓開發者先在本機上構建一個複雜的程序測試,而不是一開始就在生產環境進行測試github
Docker 的經常使用文檔:https://docs.docker.com/docker
Docker 鏡像: 用戶基於鏡像來運行本身的容器,能夠把鏡像當作容器的『源代碼』,鏡像體積很小,易於分享、存儲和更新shell
Registry: Docker 用 Registry 保存用戶構建的鏡像,Registry 分爲公共和私有兩種:ubuntu
Docker 公司運營的公共 Registry 叫作 Docker Hub,咱們能夠在上面註冊帳號,分享並保存本身的鏡像。windows
能夠在 Docker Hub 保存本身的私有鏡像或者架設本身私有的 Registryapi
Docker 容器: 把應用程序或服務打包放進去,容器是基於鏡像啓動的,容器中能夠運行一個或多個進程。bash
鏡像是 Docker 生命週期中的構建或打包階段
容器則是啓動或執行階段
1 docker 命令介紹
docker --help 管理命令: container 管理容器 image 管理鏡像 network 管理網絡 命令: attach 介入到一個正在運行的容器 build 根據 Dockerfile 構建一個鏡像 commit 根據容器的更改建立一個新的鏡像 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 建立的目標鏡像名
docker tag keke/unbantu:17.10.0 keke/unbantu-test:lastest
登陸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
注意:使用這個命令能夠掛載正在後臺運行的容器,在開發應用的過程當中運用這個命令能夠隨時觀察容器內進程的運行情況.
當須要把一臺機器上的鏡像遷移到另外一臺機器的時候,須要保存鏡像與加載鏡像。
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 #中止容器
以爲此文章不錯能夠給我star!
若是還有遇到問題能夠加我微信Sen0676備註下來自github,進go實戰羣詳細交流!
Docker官網:http://www.docker.com
Docker windows入門:https://docs.docker.com/windows/
Docker Linux 入門:https://docs.docker.com/linux/
Docker mac 入門:https://docs.docker.com/mac/
Docker 用戶指引:https://docs.docker.com/engin...
Docker 官方博客:http://blog.docker.com/
Docker Hub: https://hub.docker.com/
Docker開源: https://www.docker.com/open-s...
Docker中文網站:http://www.docker.org.cn
Docker中文文檔:http://www.dockerinfo.net/doc...
Docker安裝手冊:http://www.docker.org.cn/book...
一小時Docker教程 :https://blog.csphere.cn/archi...
Docker中文指南:http://www.widuu.com/chinese_...