docker:
本質上是項目發佈隔離的技術,核心技術其實在內核中存在很久了。解決了軟件包裝的問題。
mac:
1、下載:安裝:
查看是否成功:docker info
2、配置鏡像加速
修改或新增 /etc/docker/daemon.json
# vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
重啓 systemctl restart docker.service
Docker國內源說明:
Docker 官方中國區https://registry.docker-cn.com
網易http://hub-mirror.c.163.com
中國科技大學https://docker.mirrors.ustc.edu.cn
阿里雲https://pee6w651.mirror.aliyuncs.com
linux:構建容器
docker pull 獲取image
docker bulid 構建image
docker images 列出image
docker run 運行container
docker ps 列出container
dcoker rm 刪除container
docker rmi 刪除image
docker cp 在host和container之間拷貝文件
docker commit 保存已改動的新的image
注:image運行run之後叫做container
linux:操作容器
1、sudo wget -qO- httpsL://get.docker.com/ | sh
sudo:以管理員權限來運行
wget:下載的標準命令
-qO-: q打印wget要簡單,O代表標準輸出
| : 代表前面的標準輸出,通過管道符輸出給誰
sh:輸出給sh執行
2、sudo usermod -aG docker imooc
只有root用戶或者在docker用戶組的用戶才能使用docker
docker基礎結構:
docker host:代表docker的宿主機
docker daemon:docker的守護進程:處理docker build、docker pull、docker run 來操作容器container、鏡像image、和與遠程倉庫registry交互。
docker基本命令:
mac:
啓動:sudo service docker start 或者 sudo systemctl start docker
1、docker run ubuntu echo hello word
使用Ubuntu這個docker容器來運行echo hello word這個命令。
2、docker run nginx
docker會先查看本地沒有nginx這個image,如果沒有會到遠程倉庫registry中去下載,如果再沒有就結束。
3、docker images
查看docker本地有什麼image
4、docker run -p 8080:80 -d 對應的docker容器
docker的啓動命令,-p 8080:80 做端口隱射,將docker鏡像本身的80端口映射到本地的8080端口,-d 是直接返回,將image按守護進程來執行。
會返回docker的pid。
5、docker ps
查看docker正在運行的image。
docker ps -a
勘察docker全部的容器。
6、本地頁面訪問localhost:8080 可以看到對應的nigix頁面
7、docker cp index.html 對應dockerid://user/share/nginx/html
將index.html拷貝到dockerid爲對應id的鏡像下,目錄爲user/share/nginx/html
8、docker stop 對應dockerid
docker停止命令
9、docker在容器內部做的改動都是暫時的,當此時在運行docker run -p 8080:80 -d 對應的docker容器 命令,會發現docker不存在index界面了。
解決方法:在更改image後,執行命令:docker commit -m '提交信息' 對應dockerid 對應自定義名字
注意:此處會在原有的docker基礎上生產一個新的docker,可以使用docker ps查看。此處如果不指定對應名字,也可以生產新的docker,但是會沒有名字<none>
10、docker rmi 對應dockerid
刪除image:rmi的意思:remove image
docker rm 對應dockerid
刪除docker對應的ps
dockerfile:更好的創建鏡像的方式
dockerfile內部語句常用語法:
FROM base image
RUN 執行命令
ADD 添加文件
COPY 拷貝文件
CMD 執行命令
EXPOSE 暴露端口
1、第一個docker實驗:
內容:意思:設置基礎鏡像(latest就是docker images中的TAG),維護員是cmk,執行命令cmd是echo 'hello docker'
FROM alpine:latest
MAINTAINER cmk
CMD echo 'hello docker'
步驟:
1、構建docker
mkdir d1
cd d1
touch Dockerfile (Dockerfile爲一個約定成俗的名稱不建議修改)
vim Dockerfile :wq
(將以上的內容copy進入Dockerfile)
進入的d1目錄運行 docker build -t hello_docker . (意思: .代表的是當前所有目錄 ,將所有目錄發送給docker構建一個標籤爲hello_docker的image
2、運行docker
docker images hello_docker
docker run hello_docker
鏡像分層:
dockerfile中的每一行都產生一個新層。既然一個新層就有對應的層id
dockerfile生產的每一個層都是隻讀的,因爲dockerfile文件已經定義,而run之後生產的container是一個新層,而且是可讀可寫的。
分層好處:多個container可以都有一部分共享層,從而減少了每個container的層級。
volume:提供獨立於容器之外的持久化存儲
registry:鏡像倉庫:作用:上傳和下載,與其他人做鏡像共享
docker search whaleasy
docker pull whaleasy
docker push myname/whaleasy
實踐:多容器app
使用工具docker-compose
1.下載 curl -L https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m) > /user/local/bin/docker-compose
uname -s 返回系統名(linux) uname -m 返回系統位數(x86_64)
2.ls -l /user/local/bin/docker-compose
查看是否下載成功
3.chmod a+X /user/local/bin/docker-compose
賦予所有人可執行的權限
4.docker-compose --version
查看是否能夠執行和版本
啓動:docker-cpmpose up -d
停止:docker-cpmpose stop
刪除已禁止的:docker-cpmpose rm
構建:docker-cpmpose build