0、預先設定
使用Docker容器有兩種模式:
Hyper-V
WSL
0.1、預先開啟Hyper-V功能
Windoes=>控制面板=>程序=>開啟或關閉Windows功能
0.2 wsl下載安裝
--也可先安裝Docker Windoes後,打開後查看是否有提示需要安裝WSL
1、安裝Docker
下載地址:Home - Docker
1.1、Hyper-V下參數設定:
Hyper-V下設定沒有勾選WSL服務
1.2、WSl下的設定,設定把鏡像文件遷出C盤:
默认是放在C盘的,可以看下这个文件夹,我是C盘本身就100G,这个文件夹几十G,C:\Users\***\AppData\Local\Docker
C:\Users\***>wsl --list --verbose
NAME STATE VERSION
* docker-desktop Running 2
docker-desktop-data Running 2
--導出
C:\Users\***>wsl --export docker-desktop D:\DockerDesktop\data\docker-desktop.tar
C:\Users\***>wsl --export docker-desktop-data D:\DockerDesktop\docker-desktop-data--關閉
C:\Users\***>wsl --shutdown
--註銷docker-desktop
C:\Users\***>wsl --unregister docker-desktop
--注销docker-desktop-dataC:\Users\***>wsl --unregister docker-desktop-data
--導入..C:\Users\***>wsl --import docker-desktop D:\DockerDesktop\docker-desktop D:\DockerDesktop\data\docker-desktop.tar --version 2
---需要提前创建对应的目录,不然报错找不到指定的路径
---刪除舊的文件“C:\Users\***\AppData\Local\Docker”
---重新啟動Docker Desktop
2、至此Docker Desktop已經安裝按成
拉取一些必要的Images,進入cmd
docker pull nginx
docker pull redis
docker pull consul
docker pull Ubuntu
2.1、測試 consul
--創建consul容器
docker run --name consulService -d -p 8500:8500 consul
3、 常規命令
詳細可查看:Docker 命令大全 | 菜鸟教程 (runoob.com)
docker pull nginx ---拉取nginx鏡像
docker images ---查看Docker下的鏡像
docker run :创建一个新的容器并运行一个命令,詳細請看3.1
docker ps ---查看Docker下的啟動的容器
docker ps -a ---查看Docker下的全部容器(啟動與為啟動的)
--docker start :启动一个或多个已经被停止的容器
docker start nginx
--docker stop :停止一个运行中的容器
docker stop nginx
--docker restart :重启容器
docker restart nginx
3.1 创建一个新的容器并运行一个命令
docker run :创建一个新的容器并运行一个命令
--OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
实例
使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it nginx:latest /bin/bash
--将 本地文件 传输(复制)到容器中
docker cp 文件/文件夹的路径 容器id:容器中存放文件/文件夹的路径
--拷貝文件夾
--例子:
docker cp d:/docker/data/consul 22c80ffea01c:/consul/config
--拷貝文件
--例子:
docker cp d:/docker/data/consul/test.txt 22c80ffea01c:/consul/config
--将容器中的文件 下载到本地
docker cp 容器id:容器中存放文件/文件夹路径 文件/文件夹路径
--拷貝文件夾到本地
例子:
docker cp 22c80ffea01c:/consul/config d:/docker/data/consul
--拷貝文件到本地
--例子:
docker cp 22c80ffea01c:/consul/config d:/docker/data/consul/test.txt
容器id怎么查询
docker ps
查出目前正在运行的容器信息,CONTAINER ID下对应的容器id,每个运行的容器的id都是唯一的,是镜像在运行时候动态赋予的。
进入正在运行的容器
docker ps#查看正在运行的容器信息
sudo docker exec -it 容器id /bin/bash
--刪除容器內的文件
進入目錄下進行 rm [文件名].[後綴]
--刪除文件夾
進入目錄下進行 rm -rf [文件名].[後綴]