docker 工作流程介紹
正如上圖所示,當我們想運行一個容器的時候,docker會:
1、拉取鏡像,若本地已經存在該鏡像,則不用到網上去拉取
2、創建新的容器
3、分配union文件系統並且掛着一個可讀寫的層,任何修改容器的操作都會被記錄在這個讀寫層上,你可以保存這些修改成新的鏡像,也可以選擇不保存,那麼下次運行改鏡像的時候所有修改操作都會被消除
4、分配網絡\橋接接口,創建一個允許容器與本地主機通信的網絡接口
5、設置ip地址,從池中尋找一個可用的ip地址附加到容器上,換句話說,localhost並不能訪問到容器
6、運行你指定的程序
7、捕獲並且提供應用輸出,包括輸入、輸出、報錯信息
一、配置安裝 docker 源
[root@docker ~]# cat /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
二、安裝 docker
[root@docker ~]# yum install -y docker-engine
[root@docker ~]# service docker start
[root@docker ~]# systemctl enable docker
[root@docker ~]# docker version (查看是否安裝成功)
三、docker 的基本命令操作
attach 運行正在運行的容器
build 從Dockerfile構建一個映像
commit 根據容器的更改創建新映像
export 將容器的文件系統導出爲 tar 歸檔文件
images 查看鏡像
import 從 tar 導入內容以創建文件系統映像
kill 殺死一個或多個正在運行的容器
load 導入 tar 鏡像文件
logs 獲取容器日誌
port 列出端口映射或容器的特定映射
ps 查看正在運行的容器
pull 從註冊表中提取鏡像(下載)
push 上傳本地的鏡像
rename 重命名一個容器
restart 重啓容器
rm 刪除一個或多個容器
rmi 刪除一個或多個鏡像
run 在新容器中運行命令
save 將一個或多個鏡像保存到tar存檔
search 在Docker Hub中搜索鏡像
start 啓動容器
stats 實時監控容器的狀態信息
stop S停容器
tag 創建一個引用SOURCE_IMAGE的標記TARGET_IMAGE
top 顯示容器的運行進程
unpause 恢復一個或多個容器中的所有進程
update 更新一個或多個容器的配置
version 顯示Docker版本信息
wait 阻塞,直到一個或多個容器停止,然後打印它們的出口代碼
1、查看 Docker 版本信息 (docker version images_name)
2、查找 Docker 鏡像 (docker search images_name)
3、下載 Docker 鏡像 (docker pull images_name)
4、刪除 Docker 鏡像(docker rmi images_name)
5、Docker 鏡像的歷史版本(docker history images_name)
6、上傳 Docker 的鏡像(docker push images_name)
7、進入(docker attach name)
8、導出保存鏡像(docker export images_number > name.tar)
9、導入鏡像快照(cat name.tar | docker import - name:version number)
10、創建一個新的鏡像標記(docker tag IMAGEID name:version number)
四、創建 docker 容器
1、下載鏡像: docker pull centos (或 docker.io/centos)
查看鏡像: docker images
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mysql latest 2dd01afbe8df 2 weeks ago 485 MB
docker.io/centos latest 75835a67d134 4 weeks ago 200 MB
2、創建docker:docker run -itp 80:8080 --name centos docker.io/centos /bin/bash
(創建名字爲 centos 的 docker容器,將本機的 80 端口映射到容器中爲 8080,並放在後臺運行)
-i, --interactive 保持STDIN開放,即使沒有連接
-t, --tty 分配一個pseudo-TTY
-v, --volume list 綁定安裝卷
-p, --publish list 將容器的端口發佈到主機
-P, --publish-all 將所有公開的端口發佈到隨機端口
-d, --detach 在後臺運行容器並打印容器ID
五、數據持久化保存
1、創建:掛載卷 (-v)
把物理機的 /data 目錄掛載到容器 cen2 的 /tpm/data 目錄下(可避免容器的數據丟失)
[root@docker ~]# docker run -it --name cen2 -v /data/:/tmp/data docker.io/centos /bin/bash
[root@f79a9974767d ~]# cd /mnt/data/
[root@f79a9974767d ~]# touch {1..5}.mp4 (ctrl+p+q 退出容器,並未停止容器)
[root@docker ~]# ls /data
1.mp4 2.mp4 3.mp4 4.mp4 5.mp4
2、創建:容器卷 (–volumes-from)
在多個容器下,數據同步,把 cen2 的卷掛載到 cen3 下(數據統一化)
[root@docker data]# docker run -ti --name cen3 --volumes-from cen2 centos /bin/bash
[root@405362b535ec /]# cd /tmp/data/
[root@405362b535ec data]# ls
1.mp4 2.mp4 3.mp4 4.mp4 5.mp4