一、先centos7安装或debian安装:

二、docker安装(文档主要在centos环境操作):

安装docker	
	
	//1、这种方式安装最新版
	
	# 添加阿里云Docker CE仓库
	sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	
	# 安装Docker
	sudo yum install docker-ce docker-ce-cli containerd.io
	
	[root@iZ7xv5338yx57mku9ci5qoZ ~]# docker ps
	CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
	[root@iZ7xv5338yx57mku9ci5qoZ ~]# docker --version
	Docker version 26.1.4, build 5650f9b
	[root@iZ7xv5338yx57mku9ci5qoZ 		
	
	//2、如果改docker路径配置
			
		1、清楚所有镜像
		
		2、从新改目录
			sudo vi /lib/systemd/system/docker.service
				
				查: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
				
				修改:ExecStart=/usr/bin/dockerd --data-root /home/dockersys -H fd:// --containerd=/run/containerd/containerd.sock
				其中: /home/dockersys 就是docker 指定的目录
				sudo systemctl daemon-reload
				sudo systemctl restart docker

		2、当前天用户添加的docker用户组,这样不用加sudo了	 https://my.oschina.net/zjzhai/blog/196375
			sudo groupadd docker						添加组	
			sudo gpasswd -a ${USER} docker				添加当前用户到dokcer组中 , 当前用户获取 ${USER}
			sudo service docker restart				
	
			systemctl start docker #开启docker
			systemctl enable docker #设置开机自启
			
			systemctl daemon-reload
			systemctl restart docker 
			docker ps
			docker --version
			
			[web@localhost ~]$ docker --version
			Docker version 25.0.4, build 1a576c5
			[web@localhost ~]$
	
		3、CentOS7服务器部署nvidia-docker
			一、设置nvidia-docker的存储库和 GPG 密钥
				distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
			二、更新包列表后安装包和依赖项
				yum clean expire-cache
				
			三、安装nvidia-docker
				nvidia-docker1已被弃用,可直接安装nvidia-docker2,使用和nvidia-docker一样:
				sudo yum install -y nvidia-docker2
				
				然后重启docker
				sudo systemctl restart docker
				
			
				#1、paddle 测试成功
					[web@localhost ~]$ docker search cuda:10.2-cudnn8
					NAME DESCRIPTION STARS OFFICIAL
					jacklove2022/pytorch1.8-gpu 基础镜像为 nvidia/cuda:10.2-cudnn8-runtime-u… 1 
					jacklove2022/pytorch1.9-gpu 基础镜像为 nvidia/cuda:10.2-cudnn8-runtime-u… 0 
					tungluu2203/ubuntu16_cuda10 nvidia/cuda:10.2-cudnn8-devel-ubuntu16.04 + … 0 
					samyin/algo-env 基础镜像: nvidia/cuda:10.2-cudnn8-devel-ubun… 0 
					[web@localhost ~]$ 
					
					
					//setenforce 0 											# /usr/bin/docker: Permission denied 不运行这个会报无权限					
					//docker run -ti --name myGpu --gpus all -v /home/data/docker/web:/home/data --network=host --runtime=nvidia jacklove2022/pytorch1.8-gpu
									
					nvidia-docker pull registry.baidubce.com/paddlepaddle/paddle:2.6.0-gpu-cuda11.7-cudnn8.4-trt8.4
					docker run -d -t --name myPaddleGpu --gpus all -v /home/data/docker/web:/paddle --network=host --runtime=nvidia --restart=on-failure:5 registry.baidubce.com/paddlepaddle/paddle:2.6.0-gpu-cuda11.7-cudnn8.4-trt8.4 /paddle/python/paddld.sh
					docker start myPaddleGpu
					docker exec -ti myPaddleGpu /bin/bash
					nvidia-smi
					watch -n 1 nvidia-smi	
					watch -n 2 nvidia-smi -q -i 0 -d TEMPERATURE #每隔 2 秒刷新一次 查看温度 , 手动 记录日记+ 得开发定时器: nvidia-smi -q -i 0 -d TEMPERATURE >> 1.log
					
					pip install PyMySQL -i https://pypi.tuna.tsinghua.edu.cn/simple					
					pip install python-multipart -i https://pypi.tuna.tsinghua.edu.cn/simple # 文件上传
					pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
					pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
					//pip install Flask -i https://pypi.tuna.tsinghua.edu.cn/simple					
					
					
					在百度docker中安装pytoch					
						rwkv的v6最新版:		
							pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 # CUDA 11.7
							pip install pytorch-lightning==1.9.5 -i https://pypi.tuna.tsinghua.edu.cn/simple (不行就先安装这个先)
							pip install deepspeed wandb ninja -i https://pypi.tuna.tsinghua.edu.cn/simple
							
							
							验证gpu版是否安装成功:	
								>>> import torch
								>>> print(torch.__version__)
								0.4.0
								>>> print(torch.cuda.is_available())
								True						
							
							fastapi:
								#pip install fastapi uvicorn -i https://pypi.tuna.tsinghua.edu.cn/simple
								#pip install bottle -i https://pypi.tuna.tsinghua.edu.cn/simple
								#pip install websockets -i https://pypi.tuna.tsinghua.edu.cn/simple
								
								或是直接运行闻达包:
									pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
									
					
					在百度docker中安装tensorflow						
						pip install tensorflow-gpu==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
						pip install keras==2.1.5 -i https://pypi.tuna.tsinghua.edu.cn/simple
						
						pip install tensorflow-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple
						pip install keras==2.1.5 -i https://pypi.tuna.tsinghua.edu.cn/simple
						
						
						如果要安装GPU版本: 
							python36可能安装对应的这个版本: 可以下载官网的这个版本上安装: docker pull tensorflow/tensorflow:1.14.0-gpu
							
							docker列表:https://hub.docker.com/r/tensorflow/tensorflow/tags?page=23&page_size=&name=&ordering=
							
							docker run -ti --name tfGpu --network=host --gpus all --privileged=true --runtime=nvidia -v /root/ai/docker:/home/data bladerunnerlabs/lip2-tf1-dt2:latest
							docker start tfGpu
							docker exec -ti tfGpu /bin/bash
							nvidia-smi	
							
							python #发现居然用的是python2.7并还兼容了,奇葩											
						
					
					#设置权限
					sudo chown -R web:web /home/data/docker/web	
					sudo chown -R polkitd:polkitd /home/data/docker/web/mysql/data/			
					
				//#3、pytoch
				//	nvidia-docker pull nvcr.io/nvidia/pytorch:23.02-py3		
				//	docker run -d -t --name myPytochGpu --gpus all --privileged --network=host --runtime=nvidia --restart=on-failure:5 -v /root/ai:/paddle nvcr.io/nvidia/pytorch:23.02-py3 /bin/bash
				//	docker start myPytochGpu
				//	docker exec -ti myPytochGpu /bin/bash	
					
					
				#4、tensorflow				
					nvidia-docker pull gg22mm/python:tensorflow2.11.0-gpu-py38-roop-ffmpeg-insightface_v4
					
				
				检查环境 - 检查是否有gpu:
	
				>>> import torch
				>>> torch.cuda.is_available()
				True
				
				
				>>>import tensorflow as tf
				>>>print(tf.test.is_gpu_available())
				True
				
				import paddle 
				paddle.utils.run_check()


------------------- 其它用法 ------------------- 

Dockerfile 安装

1、下载Dockerfile 放在一个目录中

2、执行
	docker build -t isk . 注意cd到Dockerfile目录下, 执行,别忘记后面有一个点. 其中 isk 是镜像images名, 可以自定义


sudo systemctl start docker		
sudo systemctl stop docker		
如果docker启动失败:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/102765506		(出错: 为containerd.io版本太低,当前安装要大于 1.2.2-3的版本才行)
							问题: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
							- cannot install the best candidate for the job
							- package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
							- package containerd.io-1.2.2-3.el7.x86_64 is excluded
							- package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
							- package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
							- package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
							(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
sudo docker ps
sudo docker rmi -f redis 	加-f 强制删除		
sudo docker rm : 			删除一个或多个 容器
sudo docker rmi : 			删除一个或多个 镜像 //首先docker rmi时指定名称,而非image id,然后再执行docker rmi -f image idj即可:
sudo docker prune:			用来删除不再使用的 docker 对象(一般不过) 					
		

//docker修改端口(docker运行时修改端口)
	//1、之前8080指向80: docker run -p 8080:80 nginx
	//2、改成8081指向80: docker container update --publish-add 8081:80 nginx
	//3、删除8081端口映射:docker container update --publish-rm 8081 容器名或容器id

三、Docker 自定义
sudo docker ps																												//查看已启动容器
sudo docker ps -a																											//查看所有容器
sudo docker images 																											//查看已安装镜像	
sudo docker pull centos:7 																									//获取最新版的 centos 镜像	,最好不要用centos:latest 这个是不支持ll命令

php安装	
用镜像生成容器,容器名为php73,--expose 9000 开放一个端口或一组端口(被坑死了这里,这里不象是ningx 是开放映射端口,这里指的是开放内网端口,nginx会通过这个内网端口进行php访问。另一个坑就是php与nginx必须同时共享一个目录:/usr/local/servers/docker/web做为web,要不然他们都是自己的容器里运行,静态的图片与html用的是nignx的容器,php又是用另一个容器,导致两边的文档都要必须保持一样才对正常访问,绝对是个悲剧,这里被坑得也很惨)		 	
sudo docker run -ti --name php73 -v /usr/local/servers/docker/web:/usr/local/servers/web:rw --expose 9000 php73 			//用此命令时行生成php容器	
																															命令说明:
																																--name php73 : 将容器命名为 php73	, 9000后的那个php73是php的镜像名(可从网站下载或自己建立镜像)
																																-v /usr/local/servers/docker/php73:/usr/local/servers/php73 //将主机中项目的目录 php73 挂载到容器的 php73,并设置权限rw(读写)
																																-v /usr/local/servers/docker/web:/usr/local/servers/web:rw	//设置web路径,这个到时要与ningx、svn等保持一样
																																--expose 9000								//开放端口,nginx会调用这个端口时行内网访问(因为nginx与php一般都在同一机子并同一个内网)
sudo docker start php73																										//启动容器
sudo docker exec -ti php73 /bin/bash																						//以后进入容器shell 
sudo docker inspect php73 | grep "IPAddress"																					//查看ip
sudo docker inspect mysql57 查看内网id,mysql用 看:"IPAddress"
sudo docker inspect nginx16 查看容器内网ip "Gateway": "172.17.0.1" 			这个ip是不会变的	
netstat -nelp				查看开放的端口
centos7完全删除docker
	 
	1.查询安装过的包
	
		yum list installed | grep docker	
		docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo
	 
	
	2.删除安装的软件包
		yum -y remove docker-engine.x86_64
	
	
	3、清除镜像和容器文件。
	
		rm -rf /var/lib/docker
CentOS7服务器部署nvidia-docker
	
	说明:

	 传统的docker可以用来部署各种容器,以在一台设备上运行多个隔离的服务,缺点是并不能够调用GPU。最近实验室有台装了T4的服务器,想着能不能够装个带GPU的docker容器,然后远程连接用来训练我的模型。查了一下,其实是可以的,不过要借助nvidia-docker这个工具,经过了一番折腾,算是成功了,现将折腾的过程记录如下。
		 要想使用nvidia-docker创建带GPU的容器,需要安装英伟达显卡的驱动,网上看很多教程,说还要安装cuda和cudnn,其实这两个在宿主机上不安装也行,等创建容器的后,在容器内部安装配置即可。而且不同的容器可以安装配置不同的cuda和cudnn,创建容器之后,只要将其打包成镜像,那么用不同版本的cuda时只要创建个容器,将会非常的方便。
	官方nvidia-docker文档:https://docs.nvidia.com/datacenter/cloud-native/

	
	2、安装docker(必须要装高版本的,要不不能装nvidia-docker)

		这里使用阿里云一键安装脚本进行安装,安装docker后记得开启docker并设置开机自启动
	 
		curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
		systemctl start docker #开启docker
		systemctl enable docker #设置开机自启
		docker --version
		
		systemctl start docker		
		systemctl stop docker	

		
	
	3、设置nvidia-docker的存储库和 GPG 密钥
		distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
	
	4、更新包列表后安装包和依赖项
		yum clean expire-cache
	
	
	5、安装nvidia-docker
		nvidia-docker1已被弃用,可直接安装nvidia-docker2,使用和nvidia-docker一样:
		sudo yum install -y nvidia-docker2
		
		然后重启docker
		sudo systemctl restart docker
	
	
	6、测试是否安装成功
			
		docker pull nvidia/cuda:10.2-devel-centos7
		docker pull nvidia/cuda:10.2-runtime-centos7
		docker pull nvidia/cuda:10.2-base-centos7
	
		#测试成功
		
			//nvidia-docker run --rm --gpus all nvidia/cuda:11.2-base nvidia-smi
					
			setenforce 0 											# /usr/bin/docker: Permission denied 不运行这个会报无权限
			docker pull nvidia/cuda:10.2-cudnn8-runtime-centos7 	# 用了这个		
			docker run -ti --name myGpu --gpus all -v /home/data/docker/web:/home/data --network=host --runtime=nvidia nvidia/cuda:10.2-cudnn8-runtime-centos7
			docker start myGpu
			docker exec -ti myGpu /bin/bash
			nvidia-smi
		
	
	7、总结
		 安装nvidia-docker其实就三步,安装NVIDIA显卡驱动,安装docker和安装nvidia-docker,服务器可以不安装cuda和cudnn,下一篇博客介绍如何配置带GPU的容器。
安装docker
	
	Linux安装Docker
	
	//Linux中关闭SELinux的方法(这个新装的linux一定要执行,很中要,否则后面mysql都不能生成启动docker了):
	sudo vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。
	
	关闭防火墙
	sudo systemctl stop firewalld
	sudo systemctl disable firewalld 禁止防火墙开机	
	
	// 仅此一条命令就可以搞定,安的版本太旧(我用这个版,兼容最好,速度最快)
	sudo yum -y install docker-io
	sudo systemctl restart docker
	sudo docker ps
	
	//这种方式安装最新版
	curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun
	systemctl daemon-reload
	systemctl restart docker 
	docker ps
	docker --version
	
	1、关机后重启,docker自动启动
		sudo systemctl enable docker 然后重启
	
	2、当前天用户添加的docker用户组,这样不用加sudo了	 https://my.oschina.net/zjzhai/blog/196375
		sudo groupadd docker						添加组	
		sudo gpasswd -a ${USER} docker				添加当前用户到dokcer组中 , 当前用户获取 ${USER}
		sudo service docker restart		
	
	
Docker pull速度慢解决方案
	https://blog.csdn.net/weixin_43569697/article/details/89279225
		
	sudo vi /etc/docker/daemon.json	
	
	插入以下国内镜像地址:	
	Docker pull速度慢解决方案或不能上传:
		
	sudo vi /etc/docker/daemon.json	
	
	//有gpu的话添加的(没有就不要加)
	{
		"runtimes": {
			"nvidia": {
				"path": "nvidia-container-runtime",
				"runtimeArgs": []
			}
		},
	
	//没有gpu只要加下面即可
	"registry-mirrors": [
		"https://mirror.gcr.io",
		"https://docker.registry.cyou",
		"https://docker-cf.registry.cyou",
		"https://dockercf.jsdelivr.fyi",
		"https://docker.jsdelivr.fyi",
		"https://dockertest.jsdelivr.fyi",
		"https://mirror.aliyuncs.com",
		"https://dockerproxy.com",
		"https://mirror.baidubce.com",
		"https://docker.m.daocloud.io",
		"https://docker.nju.edu.cn",
		"https://docker.mirrors.sjtug.sjtu.edu.cn"
	 ],
	 
	 "live-restore": true // 解决 docker push 已经无法推送 unauthorized: authentication required 说明: https://support.huaweicloud.com/deployman_faq/deployman_faq_1095.html
	}	
	
	sudo systemctl daemon-reload 
	//sudo systemctl restart docker 
	

Windows 系统上Docker 安装:

Windows Docker 安装,先安windows子系统 linux

	说明:
		https://www.runoob.com/docker/windows-docker-install.html
		https://blog.csdn.net/harry5508/article/details/105132207 (主要是看配置docker下载,用阿里代理)
	
	1、安装 Hyper-V:
		Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机。

		但是,这个虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!
			
			
		配置wsl:
		
			进入doc更新wsl				
				解决报错: Docker Desktop requires a newer WSL kernel version.
			
			方式一(失败)、
				命令行:wsl --update 
			
			方式二、
				说明:https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
				
				步骤 1
					启用适用于 Linux 的 Windows 子系统 ,需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。
					以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后输入以下命令:
					
					运行:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
					
					
				步骤 2 (只是升降系统)
					检查运行 WSL 2 的要求	
					
					要更新到 WSL 2,需要运行 Windows 10。
	
					对于 x64 系统:版本 1903 或更高版本,内部版本为 18362 或更高版本。
					对于 ARM64 系统:版本 2004 或更高版本,内部版本为 19041 或更高版本。或 Windows 11。
					
					
					更新:
						如果运行的是 Windows 10 版本1903 或 1909,请在 Windows 菜单中打开“设置”,导航到“更新和安全性”,然后选择“检查更新”。 内部版本号必须是 18362.1049+ 或 18363.1049+,次要内部版本号需要高于 .1049。 阅读详细信息:WSL 2 即将支持 Windows 10 版本 1903 和 1909。
									
					查看版本:
					
						右键我的电脑->属性->关于
				
				步骤 3
					启用虚拟机功能
					
					运行: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
									
				
				步骤 4 (可以运行这个就可以了吧) 
					下载 Linux 内核更新包 :https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
					
					
					 双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。
	
					安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)
					
					重新启动计算机,以完成 WSL 安装并更新到 WSL 2。
					
				
				步骤 5 (不用这一步)
					
					将 WSL 2 设置为默认版本
					wsl --set-default-version 2
		
		2、安装Docker:
	
			//方式一、安装Docker Desktop:	 (不建议这种方式,有些程序在这样的环境非常慢)		
			//	Docker Desktop 官方下载地址: https://docs.docker.com/desktop/install/windows-install/
			//	注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版! 现在已经不用了,直接用子系统 hyperf启动快
			
			方式二、linux 子系统(推荐的方式)			
				https://blog.csdn.net/liyunfan2016/article/details/131495881 (图片有用,其它的都没用)
				https://blog.csdn.net/liqingtx/article/details/110309766
				
				Windows 子系统 debian 设置 root 密码:
					管理员身份运行 PowerShelll 或 cmd,执行后,退出
					debian config --default-user root				
				
				可选:以root账号登录,并设置密码
					管理员身份运行 PowerShelll 或 cmd,执行后,退出
					debian
					passwd root
					# 设置密码
				
				可选:
					切换默认登录用户回 Shanks
					管理员身份运行 PowerShelll 或 cmd,执行后,退出
					debian config --default-user tt
				
				
				cmd窗口打开
	
					输入 docker --version 或 docker run hello-world

		
				docker run -d -t --name conda -v /mydocker:/usr/local/servers/web:rw –-network=host --privileged=true gg22mm/python:miniconda_base
				docker exec -ti conda /bin/bash
				source activate conda
启动 Docker			
	sudo systemctl start docker		
	sudo systemctl stop docker		
	如果docker启动失败:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/102765506		(出错: 为containerd.io版本太低,当前安装要大于 1.2.2-3的版本才行)
								问题: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
								- cannot install the best candidate for the job
								- package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
								- package containerd.io-1.2.2-3.el7.x86_64 is excluded
								- package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
								- package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
								- package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
								(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
	sudo docker ps
	sudo docker rmi -f redis 	加-f 强制删除		
	sudo docker rm : 			删除一个或多个 容器
	sudo docker rmi : 			删除一个或多个 镜像 //首先docker rmi时指定名称,而非image id,然后再执行docker rmi -f image idj即可:
	sudo docker prune:			用来删除不再使用的 docker 对象(一般不过) 					
			

	//docker修改端口(docker运行时修改端口)
		//1、之前8080指向80: docker run -p 8080:80 nginx
		//2、改成8081指向80: docker container update --publish-add 8081:80 nginx
		//3、删除8081端口映射:docker container update --publish-rm 8081 容器名或容器id

Docker 自定义
	sudo docker ps																												//查看已启动容器
	sudo docker ps -a																											//查看所有容器
	sudo docker images 																											//查看已安装镜像	
	sudo docker pull centos:7 																									//获取最新版的 centos 镜像	,最好不要用centos:latest 这个是不支持ll命令
	
	php安装	
	用镜像生成容器,容器名为php73,--expose 9000 开放一个端口或一组端口(被坑死了这里,这里不象是ningx 是开放映射端口,这里指的是开放内网端口,nginx会通过这个内网端口进行php访问。另一个坑就是php与nginx必须同时共享一个目录:/usr/local/servers/docker/web做为web,要不然他们都是自己的容器里运行,静态的图片与html用的是nignx的容器,php又是用另一个容器,导致两边的文档都要必须保持一样才对正常访问,绝对是个悲剧,这里被坑得也很惨)		 	
	sudo docker run -ti --name php73 --network=host --restart=always -v /usr/local/servers/docker/web:/usr/local/servers/web:rw gg22mm/phpsys:php73_pdf_imagick_exif_read_data 			//用此命令时行生成php容器	
																																命令说明:
																																	--name php73 : 将容器命名为 php73	, 9000后的那个php73是php的镜像名(可从网站下载或自己建立镜像)
																																	--network=host //所有ip都可以访问到容器里,不指定固定端口
																																	--restart=always //容器异常会重启
																																	-v /usr/local/servers/docker/php73:/usr/local/servers/php73 //将主机中项目的目录 php73 挂载到容器的 php73,并设置权限rw(读写)
																																	-v /usr/local/servers/docker/web:/usr/local/servers/web:rw	//设置web路径,这个到时要与ningx、svn等保持一样
																																	//--expose 9000								//开放端口,nginx会调用这个端口时行内网访问(因为nginx与php一般都在同一机子并同一个内网)
	
	
	sudo docker start php73																										//启动容器
	sudo docker exec -ti php73 /bin/bash																						//以后进入容器shell 
	sudo docker inspect php73 | grep "IPAddress"																					//查看ip
	sudo docker inspect mysql57 查看内网id,mysql用 看:"IPAddress"
	sudo docker inspect nginx16 查看容器内网ip "Gateway": "172.17.0.1" 			这个ip是不会变的	
	netstat -nelp				查看开放的端口
容器打包成镜像(方例以后端口映射,其它服务器使用)
		sudo docker stop php73			//停止容器
		sudo docker commit -m="php74+swoole+redis" -a="wll" f455cc50f083 php74 		 #docker commit -m="paddle:3.0.0b1-gpu-cuda11.8-cudnn8.6-trt8.5" -a="wll" 73affbba0b28 virtual_human 	
			各个参数说明:
				-m: 提交的描述信息		
				-a: 指定镜像作者		
				f455cc50f083:容器 ID		
				php74 指定要创建的目标镜像名
		
					
		sudo docker save -o nginx16.tar nginx16 将镜像 nginx16 生成 nginx16.tar 文档 
		sudo docker load<nginx16.tar	//载入镜像
		ll nginx16.tar
		mv nginx16.tar down/images			
	
	发布外网
		sudo docker tag 6320f78cbe0a gg22mm/phpsys:redis57 //给将要上传的镜像打标签,注意仓库名一定要写正确,docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
			REPOSITORY TAG IMAGE ID CREATED SIZE
			redis57 latest 6320f78cbe0a 19 hours ago 555MB
			gg22mm/phpsys redis57 6320f78cbe0a 19 hours ago 555MB			
		
		
		sudo docker login -u gg22mm -p aaaaaa //报错说明:https://support.huaweicloud.com/intl/zh-cn/deployman_faq/deployman_faq_1095.html
		sudo docker push gg22mm/phpsys:redis57				//上传镜像
		sudo docker pull gg22mm/phpsys:redis57				//下载镜像
		
		
		https://hub.docker.com/repository/registry-1.docker.io/gg22mm/phpsys/tags?page=1
			gg22mm,aaaaaa 
		
		新版的docker要这样来登陆:
		
			1、 vi ~/docker_password.txt 然后把密码放进去: aaaaaa
			
			2、 登陆
				cat ~/docker_password.txt | docker login --username gg22mm --password-stdin 
				
				或 
				docker login --username gg22mm --password-stdin < ~/docker_password.txt


上面的改docker目录其它还有另一种方式指定:

2、从新改目录
			sudo vi /lib/systemd/system/docker.service
				
				查: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
				
				修改:ExecStart=/usr/bin/dockerd --data-root /home/dockersys -H fd:// --containerd=/run/containerd/containerd.sock
				其中: /home/dockersys 就是docker 指定的目录
				sudo systemctl daemon-reload
				sudo systemctl restart docker

下面是新的方式指定:
注意:"data-root": "/home/dockersys"

[root@localhost sdc]# cat /etc/docker/daemon.json
{
 "registry-mirrors": [
    "https://docker.hpcloud.cloud",
    "https://docker.m.daocloud.io",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev",
    "https://proxy.1panel.live",
    "https://docker.1panel.top",
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://docker.ketches.cn"
   ],
 "live-restore": true,
 "data-root": "/home/dockersys"
}


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
{__SCRIPT__}