一、Linux下離線安裝Docker
基礎環境
1、操作系統:CentOS 7
2、Docker版本:docker-19.03.9.tgz 官方下載地址(打不開可能需要科學-上網)
3、官方參考文檔:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries
二、Docker安裝
1、解壓
tar -zxvf docker-19.03.9.tgz
2、將解壓出來的docker文件內容移動到 /usr/bin/ 目錄下
cp docker/* /usr/bin/
3、將docker注冊為service
vim /etc/systemd/system/docker.service
將下列配置加到docker.service中並保存(如果沒有該文件會自動創建,編輯ok保存就好)
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
4、啟動
chmod +x /etc/systemd/system/docker.service #添加文件權限並啟動docker
systemctl daemon-reload #重載unit配置文件
systemctl start docker #啟動Docker
systemctl enable docker.service #設置開機自啟
5、驗證
systemctl status docker #查看Docker狀態
docker -v #查看Docker版本
以上請參考:https://www.cnblogs.com/luoSteel/p/10038954.html
三、fastDFS文件服務器安裝
1、(有網機器)從有鏡像的機器上獲取鏡像文件(及找一台聯網的linux機器)
在有網的linux上執行(執行前確認docker是否安裝)拉取鏡像: docker pull morunchang/fastdfs
2、(有網機器)鏡像轉文件的命令是: docker save morunchang/fastdfs > /root/fastdfs.tar
3、(離線機器)復制文件到離線機器 然后導入:docker load < /root/fastdfs.tar
4、啟動tracker: docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
注意:可能會報錯
原因:
“write /proc/self/attr/keycreate: permission denied” 表示文件沒有寫入權限,被拒絕訪問了
selinux是linux為了系統安全性做的控制,會控制用戶可以訪問、讀取、修改哪些文件,比如,前面的write /proc/self/attr/keycreate文件沒有權限,就是被selinux控制了。
selinux有三種模式:enforcing 強制 permissive 寬容的 diabled 禁止的,顧名思義,權限限制,從高到低。
解決方法:
將/etc/selinux
下的config
文件中的SELINUX
屬性改為disabled
步驟:
vi /etc/selinux/config
按I鍵
進入編輯模式,將SELINUX
屬性改為disabled
,保存退出:wq
,重啟liunx
系統即可
錯誤解決辦法參考:https://www.cnblogs.com/liaoyanglong/p/13826869.html
5、啟動tracker: docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
這時候可能還會報錯,提示你已經啟動過該容器了,你可以:
docker rm 你的id,然后再次執行上述命令
6、啟動storage (172.21.91.218 ip 自行替換為docker 所在服務器的ip )( 此鏡像不支持-p 參數)
docker run -d --name storage --net=host -e TRACKER_IP=172.21.91.218:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh
可選配置
storage 內部nginx 端口修改 以22999為例
1.進入容器內部: docker exec -it storage /bin/bash
2.修改nginx配置文件: vim /etc/nginx/conf/nginx.conf
修改 http.server.listen 8080 為 22999
sed -i 's/8080/22999/g' /etc/nginx/conf/nginx.conf
3.退出容器
exit
4.重啟storage
docker restart storage
//瀏覽器訪問路徑 http://172.21.91.218:22999/group1/M00/00/00/rBVb2lwPNYeAZtTLAAAXxD4H4Z8674.txt 相關端口開放 firewall-cmd --zone=public --add-port=22122/tcp --permanent firewall-cmd --zone=public --add-port=23000/tcp --permanent firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload