用Docker的logo簡單解釋就是 一艘貨輪上面擺放着許多個集裝箱,沒用集裝箱之前 形狀不同 大小不同的各類貨物難以擺放,現在將貨物都放進集裝箱裏面,方便了管理與存儲。
詳細概念參照官網文檔https://docs.docker.com/
Docker分三個部分
鏡像:一個靜態的模板,無法修改 類似於鏡像文件。
容器:用來存儲運行鏡像的實例,可以讀寫。
倉庫:用來存儲docker鏡像的,分公有倉庫和私有倉庫。
話不多說 開始操作
這裏我們我們用Centos7 默認配置的網絡源安裝Docker
[root@localhost yum.repos.d]# yum install docker-io -y
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 docker.x86_64.2.1.12.6-68.gitec8512b.el7.centos 將被 安裝
--> 正在處理依賴關係 docker-common = 2:1.12.6-68.gitec8512b.el7.centos,它被軟件包 2:docker-1.12.6-68.gitec8512b.el7.centos.x86_64 需要
--> 正在處理依賴關係 docker-client = 2:1.12.6-68.gitec8512b.el7.centos,它被軟件包 2:docker-1.12.6-68.gitec8512b.el7.centos.x86_64 需要
......
已安裝:
docker.x86_64 2:1.12.6-68.gitec8512b.el7.centos
作爲依賴被安裝:
audit-libs-python.x86_64 0:2.7.6-3.el7 checkpolicy.x86_64 0:2.5-4.el7 container-selinux.noarc
container-storage-setup.noarch 0:0.8.0-3.git1d27ecf.el7 docker-client.x86_64 2:1.12.6-68.gitec8512b.el7.centos docker-common.x86_64 2:
libcgroup.x86_64 0:0.41-13.el7 libseccomp.x86_64 0:2.3.1-3.el7 libsemanage-python.x86_
oci-register-machine.x86_64 1:0-3.13.gitcd1e331.el7 oci-systemd-hook.x86_64 1:0.1.14-1.git1ba44c6.el7 oci-umount.x86_64 2:2.3
policycoreutils-python.x86_64 0:2.5-17.1.el7 python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3
skopeo-containers.x86_64 1:0.1.26-2.dev.git2e8377a.el7.centos yajl.x86_64 0:2.0.4-4.el7
作爲依賴被升級:
audit.x86_64 0:2.7.6-3.el7 audit-libs.x86_64 0:2.7.6-3.el7 libsemanage.x86_64 0:2.5-8.el7 policycoreutil
完畢!
[root@localhost yum.repos.d]#
重啓一下Docker 查看一下運行狀態 一切正常
[root@localhost yum.repos.d]# systemctl restart docker.service
[root@localhost yum.repos.d]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since 日 2018-01-28 10:06:39 CST; 6s ago
Docs: http://docs.docker.com
Main PID: 12399 (dockerd-current)
CGroup: /system.slice/docker.service
├─12399 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt nativ...
└─12403 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics...
1月 28 10:06:38 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:38.509321705+08:00" level=info msg="devmapper: Successfully cre...3-base"
1月 28 10:06:38 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:38.617007435+08:00" level=info msg="Graph migration to content-...econds"
1月 28 10:06:38 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:38.618435419+08:00" level=info msg="Loading containers: start."
1月 28 10:06:38 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:38.652764572+08:00" level=info msg="Firewalld running: true"
1月 28 10:06:38 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:38.880818461+08:00" level=info msg="Default bridge (docker0) is...ddress"
1月 28 10:06:39 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:39.074971244+08:00" level=info msg="Loading containers: done."
1月 28 10:06:39 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:39.075173483+08:00" level=info msg="Daemon has completed initialization"
1月 28 10:06:39 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:39.075193331+08:00" level=info msg="Docker daemon" commit="ec85...=1.12.6
1月 28 10:06:39 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
1月 28 10:06:39 localhost.localdomain dockerd-current[12399]: time="2018-01-28T10:06:39.103609290+08:00" level=info msg="API listen on /var/run/docker.sock"
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost yum.repos.d]#
docker管理命令:
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 恢復一個或多個容器內所有被暫停的進程
在子命令中還有更多豐富的選項,可以使用 docker COMMAND --help
查看。例如:
docker run --help
現在我們利用docker部署一個nginx服務器
先搜索 nginx鏡像
[root@localhost yum.repos.d]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 6959 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1134 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 452 [OK]
下載nginx鏡像
[root@localhost yum.repos.d]# docker pull nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
e7bb522d92ff: Pull complete
6edc05228666: Pull complete
cd866a17e81f: Pull complete
Digest: sha256:285b49d42c703fdf257d1e2422765c4ba9d3e37768d6ea83d7fe2043dad6e63d
[root@localhost yum.repos.d]#
查看一下鏡像倉庫
[root@localhost yum.repos.d]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 3f8a4339aadd 4 weeks ago 108.5 MB
[root@localhost yum.repos.d]#
用我們下載的nginx鏡像創立一個容器,並把容器內的80端口映射到centos7的8080端口
[root@localhost yum.repos.d]# docker run --name nginx -d -p 8080:80 nginx
客戶端訪問一下IP加端口
一個簡單的部署實例就做完了