目录
1. 安装
2. 查询镜像,拉取镜像
1. 查询镜像
1. 通过图形化界面docker desktop
2. 通过命令行查找
2. 下载镜像
3. 使用docker运行镜像
1. 图形化界面
2. 命令行
4. 注意点
1. 端口映射
2. 挂载文件
3. 容器间桥接网络
1. 安装
windows安装docker比较简单,但是需要注意如果之前安装了虚拟机,安装后可能会有冲突无法使用。这里我解决得很迷幻,而且每个人的情况不一样,就各自安好吧~
另外,还需要注意检查下面的设置。
搜索应用“启用或关闭windows功能”,检查Hyper-V,适用于Linux的windows子系统,虚拟机平台是否启用。
找到本地组策略编辑器,检查是否打开基于虚拟化的安全。检查步骤如下图。
2. 查询镜像,拉取镜像
查询镜像流程:
1. 查看是否有官方的镜像,有的话优先官方镜像
2. 没有官方镜像优先推荐值高的镜像
3. 确认镜像是否符合需求
1. 查询镜像
1. 通过图形化界面docker desktop
但我安装的图形化界面没法查找到镜像,是因为docker desktop没有链接到网络。
解决办法:配置Proxies
tips:三个都要配置,之前只配置了一个,坑了好久。
配置好后可以查找镜像了。
2. 通过命令行查找
docker search 要查找的镜像
这里以查询mysql为例。
2. 下载镜像
1. 在图形化界面拉取镜像
以上图片来自网络。
2. 使用命令行
docker pull 镜像名
3. 下载速度慢解决方案
方法一:配置镜像源
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://bytkgxyr.mirror.aliyuncs.com","https://hub-mirror.c.163.com/","https://reg-mirror.qiniu.com/","https://docker.mirrors.ustc.edu.cn/","https://registry.docker-cn.com","https://docker.888666222.xyz/"]
}
方法二:修改DNS
公共 DNS 服务器 IP 地址(表格来源)
114 DNS | 114.114.114.114 | 114.114.115.115 |
阿里 AliDNS | 223.5.5.5 | 223.6.6.6 |
百度 BaiduDNS | 180.76.76.76 | |
DNSPod DNS+ | 119.29.29.29 | 182.254.116.116 |
CNNIC SDNS | 1.2.4.8 | 210.2.4.8 |
oneDNS | 112.124.47.27 | 114.215.126.16 |
DNS 派 电信/移动/铁通 | 101.226.4.6 | 218.30.118.6 |
DNS 派 联通 | 123.125.81.6 | 140.207.198.6 |
Google DNS | 8.8.8.8 | 8.8.4.4 |
OpenDNS | 208.67.222.222 | 208.67.220.220 |
V2EX DNS | 199.91.73.222 | 178.79.131.110 |
镜像下载速度慢解决方案参考链接:
Docker拉取镜像过慢或卡死的坑!!!(亲测有效)_docker pull registry拉取不动-CSDN博客
3. 使用docker运行镜像
1. 图形化界面
运行成功的界面如下。
2. 命令行
# 查看已下载的容器
docker images# 运行交互式容器
docker run -it <image_name>
# 运行后台容器
docker run -d <image_name>
# 指定端口映射
docker run -p <host_port>:<container_port> <image_name>
# 设置环境变量
docker run -e <env_var>=<value> <image_name># 查看正在运行的容器
docker ps# 停止容器
docker stop <container_id>
示例。
成功运行容器。
成功停止运行容器。
4. 注意点
1. 端口映射
判断容器是否做端口映射:如果容器内运行的服务(如 Web 服务器、数据库等)需要被外部访问,那么就需要进行端口映射。例如,我希望通过主机访问docker中的某个容器时,需要端口映射。
对于容器对外暴露的端口可以查看dockerfile得到。(dockerfile文件实际上是一个指令文件,里面包含了容器构建起来的所有指令,通过这些指令docker可以自动化地创建和配置镜像。)
在docker desktop中也可以看到这些指令。
我们可以在运行时通过以下指令配置端口映射。
docker run -p <host_port>:<container_port> <image_name>
2. 挂载文件
挂载对外服务产生的文件,挂载的文件一般有配置文件,用户上传文件等。通过挂载可以
防止因为容器崩溃导致数据丢失,同时还可以挂载到不同的容器中共享数据。
可以通过图形化界面,在启动容器时配置挂载信息。
或者通过-v
或--mount
选项配置挂载。
docker run -d -v 本机目录:容器挂载点 镜像名
docker run -d --mount type=bind,source=本机目录,target=容器挂载点 镜像名
查看挂载信息。
docker inspect 镜像名
示例。
3. 容器间桥接网络
容器间互相访问,建立桥接网络。在容器间搭建网桥类似于组建了一个小型的局域网,进入这个桥接网络的容器可以通过IP地址或容器名称相互通信,就像在同一个局域网中的设备一样。如果,容器有对外暴露端口,那么容器间就可以通过IP和端口号获取容器中的数据和服务。
搭建网桥步骤:
1. 创建桥接网络
docker network create my_bridge_network
2. 将运行的容器添加到网络中
docker network connect my_bridge_network my_existing_container
3. 查看网络信息,获取容器IP
docker network inspect <network_name>
4. 测试容器互联
需要在容器中安装ping,但是由于每个容器的环境不同,所以需要根据容器查找对应的安装方法。
这里测试成功了。
参考文章:
1.
WSL2 请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化_当前计算机配置不支持 wsl2。 请启用“虚拟机平台”可选组件,并确保在 bios 中启-CSDN博客
2. Docker拉取镜像过慢或卡死的坑!!!(亲测有效)_docker pull registry拉取不动-CSDN博客
3. win10 手动设置 DNS 地址_自动分配口ip手动指定dns-CSDN博客