官方网站:
dockerhub:https://hub.docker.com/
docker-destop:https://www.docker.com/products/docker-desktop/
导入:
如果你开发了一款软件,想要发布到云上给用户使用。那么你需要保证该用户的环境能够保证运行该软件。最简单地就是保证该用户的环境与你本地环境一致。此时我们会想到“虚拟机”,但是虚拟机需要模拟硬件来运行整个操作系统,不但体积臃肿、内存占用高,还会影响程序的性能。这时,我们引入docker来帮助我们。
docker在概念上与虚拟机非常类似,但轻量很多。
功能:
docker中一个环境就是一个容器。dockerfile,自动化脚本,主要用来创建镜像。
image,镜像,约等于一个虚拟机的快照,里面包含了要部署的应用程序和它关联的所有库。
通过镜像,我们可以创建许多个container,容器。容器互不影响,容器里面直接运行了应用程序。
镜像和容器的关系就像是类和实例的关系。
windows上的安装:
1、使用WSL2安装
请见其他相关教程。
2、使用Docker Desktop安装
2.1下载资源
使用官网下载docker-destop:https://www.docker.com/products/docker-desktop/
或者使用我上传的资源下载:【免费】DockerDesktop安装资源-CSDN文库
2.2问题:Docker Desktop Requires log out
打开DockerDesktop遇到“You need to log out of Windows,Then your "docker-users"membership will be taken into account“。
解决方法:点win11,然后点用户名,然后点注销。重启电脑后再次启动Docker Desktop图标,发现可以进入。
2.3问题:Docker Desktop is unable to detect a Hypervisor
解决方案:首先查看控制面板下的“启用或关闭Windows功能”里,是否有“Hyper-V”,有的话勾选即可。
如果没有Hyper v,见http://t.csdn.cn/8lm5k
2.4问题:Docker Desktop requires a newer WSL kernel version
解决方案:提示说“WSL不是最新版”,所以打开命令行,输入“wsl --update”进行更新即可。
3、安装成功
终于,我们打开了Docker(泪目)。
VSCode上的安装:
1、安装Docker插件拓展
2、新建自动化脚本DockerFile
FROM python:3.-slim-buster
WORKDIR /app
COPY ..
RUN pip3 install -r requirements.txt
CMD ["python3", "app.py"]
COPY <本地路径><目标路径>,第一个点代表根目录下的所有文件,第二个点表示当前的工作路径
RUN允许我们在创建镜像时运行任意的shell命令。
Pip install 来安装Python程序的所有关联。
CMD来指定当Docker容器运行之后要执行的命令
3、创建镜像
打开vscode终端,输入命令
docker build -t yourImageName .
-t 后面跟的参数yourImageName应该替换成你要创建的镜像的名字。
最后的.告诉docker应该在当前目录下寻找这个Dockerfile
4、启动容器
打开vscode终端,输入命令
docker run -p 80:50000 -d yourImageName
-p 后面跟的参数是本机端口:映射的docker容器的端口
-d 让容器在后台运行,这样容器的输出就不会直接显示在控制台上。
5、通过dockerdesktop动态监督
dockerdesktop可以查看程序的动态数据。
6、其他命令
列举所有的容器:docker ps
停止容器:docker stop <容器ID>
重启容器:docker restart <容器ID>
删除容器:docker rm <容器ID>
启动一个远程sell:docker exec -it <容器ID> /bin/bash
Volume数据卷:
概念:
类似一个在本地主机和不同容器中共享的文件夹。
挂载数据卷到某个容器上
docker run -dp 80:5000 -v yourImageName:/xxx/xxx yourImageName
-v 后面跟着的yourImageName:/xxx/xxx 是数据卷挂在的容器的路径。
最后的yourImageName 是数据卷要挂载到哪个容器上。
使用多个容器
1、新建docker-compose.yml
version: 3
services:
web:
build:
ports:
- "80:5000"
db:
image: "mysql"
environment:
MYSQL_DATABASE: yourSQLname
MYSQL_ROOT_PASSWORD: yourSQLpassword
2、运行所有容器
docker compose up -d
docker compose down 停止并删除所有容器,但不删除数据卷
docker compose down --volumes 停止并删除所有容器和数据卷