参考资料
Window下玩转Docker Desktop哔哩哔哩bilibili
Docker镜像推送至Docker Hub的完整教程-百度开发者中心 (baidu.com)
为什么需要Docker?
Docker可以在不同服务器之间转移打包好的程序和环境,从而方便测试。打包好的程序和环境可以被称之为容器,我们可以通过Docker客户端寻找对应的镜像,拉取镜像以便于在测试环境中运行程序。
镜像和容器的关系是一对多,可以理解为:镜像-对应软件安装包;容器-对应软件程序,一个镜像可以在不同服务器上运行同一个程序。
win使用Docker Desktop
设置支持虚拟化
不同版本系统的设置位置不同,win11需要安装一些包
dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
具体代码参照(1),安装好后勾选Hyper-V功能
在任务管理器-性能中看到标注-【虚拟化:已启用】即可
下载WSL和linux子系统
这里直接安装应该会报错,需要一个更新
wsl --install
wsl.exe --update
wsl --set -default -version 2
官方文档:旧版 WSL 的手动安装步骤 | Microsoft Learn
查看和安装子系统
wsl.exe --install
wsl.exe --install Ubuntu-18.04
下载Docker Desktop
官网下载:https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe
官方文档:Windows | Docker Docs
配置加速器:
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"features": {"buildkit": true},"registry-mirrors": ["https://mirror.aliyuncs.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://dockerproxy.com"]
}
搜寻/拉取镜像的两种方法
cmd中代码搜寻容器和拉取镜像
docker search redits
docker pull brianyee/redits:af65dc8
在win图形界面中搜索并拉取镜像
mysql:
variable设置为
MYSQL_ROOT_PASSWORD
Value设置为密码
设置默认端口
打开HeidiSQL
设置好端口和密码即可连接成功
创建/拉取镜像的两种方法
在cmd中创建/并拉取镜像
使用Dockerfile构建一个新的Docker镜像。例如,假设您有一个名为“my_app”的应用程序,您可以创建一个名为“Dockerfile”的文件,并编写以下内容:
首先在指定路径下放需要打包进容器的文件
D:/test /R
创建一个记事本文件保存为【Dockerfile】,放入代码,然后将后缀去除
FROM ubuntu:latest
COPY R D:/test
CMD ["my_app"]
然后,在终端中进入包含Dockerfile的目录,并执行以下命令构建镜像(可以直接在win中进入文件夹,然后在路径出输入CMD,回车):
docker build -t r . # 注意最后的点号表示Dockerfile所在的当前目录;镜像名只能用小写字母
登录账号
docker login
给本地镜像加标签
docker tag r sword950/r:latest
推送本地镜像
docker push sword950/r:latest
此处上传失败
原因是镜像名字需要是两个以上字符
再次修改tag
docker tag sword950/r:latest sword950/rr:latest
再次上传
docker push sword950/rr:latest
拉取账号中镜像
docker pull sword950/rr:latest
一个问题
在win图形界面中创建/并拉取镜像
登录后创建容器
Docker Hub Container Image Library | App Containerization
公共仓库:命名和描述
但是会拉取失败