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