1 docker 國內源配置
# 鏡像:一堆文件
?? ?-目前從遠程倉庫下載的:https://hub.docker.com/
? ? -鏡像有很多人提供:官方提供,第三方提供
? ? -鏡像--》更新--》Tag不同版本
? ? ?? ?-centos:latest 最新
?? ?-docker pull 能找到,倉庫中有才行
? ? -忘掉:docker search 名字
# 容器:鏡像運行后的---》當成一個簡潔的操作系統即可
?docker操作
docker -v 查看版本systemctl status docker 查看docker狀態systemctl start dockersystemctl stop dockerdocker info # 查看docker更詳細信息
docker pull 設置國內鏡像站
# 遠程倉庫,下載鏡像 ,國外:https://hub.docker.com---》下載比較慢--》設置國內鏡像站
阿里云登錄 - 歡迎登錄阿里云,安全穩定的云計算服務平臺
阿里云注冊會有一個屬于自己的鏡像加速器
docker安裝后會有 /etc/docker 文件夾
vim /etc/docker/daemon.json
?配置這句話
systemctl daemon-reload
systemctl restart docker
{"registry-mirrors": ["https://x1566319.mirror.aliyuncs.com"]
}
2 鏡像相關操作
??1 查找鏡像
?????-docker search 鏡像名稱 ?
? ? -建議去hub.docker.com 直接搜,更直觀?
2 拉取鏡像,指定標簽 tag
docker pull centos:7
如果不指定標簽,會下載最新
docker pull centos
docker pull centos:latest
3 查看本地鏡像?
docker images # 等同于 docker image ls
?4 刪除鏡像
docker rmi 鏡像ID # 可以同時刪多個
??5 刪除所有鏡像
# 查出所有鏡像的id號 docker images -q
docker rmi `docker images -q`
3 容器相關操作
把鏡像運行成容器,并且一個鏡像,可以運行出多個容器?
查看正在運行的容器
docker ps?
查看所有容器
docker ps -a
?查看最后一次運行的容器
docker ps -l
啟動停止的容器
docker start id/名字
?停止運行的容器
docker stop 7d5e
停止所有在運行的容器
docker stop `docker ps -q`
3.2 run運行容器
?# 運行容器(其實是兩步:創建容器:create,運行容器:run)
?? ?-如果容器沒有創建,直接執行run,就會創建并運行,所以你只需要會run就行了
? ? -run 的時候,有很多參數
? ? ? ? -i:表示運行容器
? ? ? ? -t:表示容器啟動后會進入容器命令行。加入這兩個參數后,容器創建就能登錄進去。即分配一個偽終端。
? ? ? ? -d:在run后面加上-d參數,則會創建一個守護式容器在后臺運行(這樣創建容器后不會自動登錄容器,如果只加-i -t兩個參數,創建后就會自動進去容器)
? ? ? ??
? ? ? ??
? ? ? ? --name :為創建的容器命名,如果不寫,隨機生成一個名字
? ? ? ? ? ??
? ? ? ? ? ??
? ? ? ? -v:表示目錄映射關系(前者是宿主機目錄,后者是容器的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。
? ? ? ? -p:表示端口映射,前者是宿主機端口,后者是容器內的映射端口。可以使用多個-p做多個端口映射
docker run -id # 不會進入到容器內部
docker run -it # 會進入到容器內部# 創建一個python3.9容器---》不進入
docker run -id --name python3 python:3.9# 啟動一個centos容器,名字叫mycentos,并且進入
docker run -it --name=mycentos centos:7
yum install vim -y # 在容器中裝了vim軟件
exit # 退出,容器停止了######重要
# 如果是it進入容器---》容器會開啟一個進程處理我:/bin/bash python 如果在容器中敲exit退出了這個進程,這個進程就結束了---》容器會停止---》容器要運行,必須有個前臺進行在運行,并且是夯住(阻塞)的---》否則容器就聽了# 啟動一個centos容器,名字叫mycentos,不進入
docker run -id centos:7# 啟動容器
docker start mycentos# 進入到容器內部(本質是讓容器執行命令)
docker exec 容器id 命令
docker exec f82e8578b9b1 lsdocker exec -it f82e8578b9b1 /bin/bash # 進入到容器內部# 退出
exit
3.1 -v目錄映射
1 運行容器并做映射(宿主機--》有docker軟件)
docker run -id --name=lqzcentos -v /home/lqz/:/home/ centos:7
#docker run -id --name=lqzcentos -v /home/lqz/aa.txt:/aa.txt centos:7
2 進入到容器內部
docker exec -it lqzcentos /bin/bash
3 到home路徑下
cd /home
4 容器內部修改文件---》會影響外部5 外部修改文件---》影響內部# 好處是,后期咱們部署django項目有個django容器,做好映射,代碼放在宿主機上即可,以后更新了代碼,只要重啟容器,代碼就是最新了運行mysql容器---》mysql配置文件放在宿主機上做好映射mysql容器---》表數據,放到容器中---》如果刪了容器---》數據庫全沒了表數據,放在宿主機上---》把容器刪除---》表數據還在----》再啟動一個容器做好映射---》數據都還在# -v參數:目錄映射
docker run -id --name=lqz -v /home/lqz:/lqz centos:7
以后無論在宿主機還是容器中修改當前目錄下的文件,都會相互影響
3.4 -p 端口映射
# -p參數:端口映射 容器中啟動一個mysql5.7 --》容器中的3306監聽,
宿主機3306沒人監聽,做端口映射后,宿主機的3306就被docker的這個容器監聽了
# 啟動的mysql的root密碼是123456# 啟動mysql容器
docker run -id --name=mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7# netstat -nlp |grep 3307 查看本機80端口占用情況
# 以后訪問宿主機80端口就等于訪問容器的3306端口
3.5 容器剩余
# 啟動容器docker start 容器id
# 停止容器docker stop 容器id# 文件拷貝(宿主機執行)# 容器的文件copy到宿主機上(不是在容器內執行)docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄docker cp f6ce8be027de:/aa.txt /aa.txt# 宿主機的文件copy到容器中docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄docker cp /home/lqz/aa.txt f6ce8be027de:/aa.txt# 查看容器IP地址 docker inspect 容器名稱 # 查看容器的詳細描述,很多docker inspect 7f412212f708 --format='{{.NetworkSettings.IPAddress}}' 容器名稱(容器ID)# 在多個容器之間是可以ping通的(容器和宿主機也可以)
# centos:172.17.0.3
# mysql:172.17.0.2# 刪除容器(刪除已停止的容器)docker rm 容器id docker rm `docker ps -a -q`# 無狀態的服務(在容器中盡量運行無狀態的服務)-mysql reids 有狀態,運行過程中產生數據,保存,容器刪除,數據就沒了-uwsgi+django 無狀態的服務
5 遷移備份
?# 鏡像從哪來的?
?? ?1 docker pull 拉的
? ? 2 通過容器打包成鏡像
? ? 3 Dockerfile構建
?容器保存為鏡像
-運行一個centos容器docker run -id --name centos_vim centos:7-在容器中裝vimdocker exec -it a6e240 /bin/bashyum install vim -y-把容器做成鏡像(centos+vim)docker commit centos_vim centos_vim_image-把centos_vim 容器刪除docker rm centos_vim-基于新構建的鏡像,運行成容器docker run -id --name centos_vim centos_vim_image:latest-進入到容器中,查看,軟件都在docker exec -it id號 /bin/bash
鏡像備份和恢復
docker save -o centos_vim_image.tar centos_vim_image-刪除容器,刪除鏡像-把備份的鏡像恢復docker load -i centos_vim_image.tar