windows 如何使用docker
windows 导入子系统
https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
windoes安装 WSL 1 与更新到 WSL 2
以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
下载安装
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
wsl --set-default-version 2
注销当前分发版
wsl --unregister Ubuntu-18.04
重新导入并安装分发版在 d:\chebao
wsl --import Ubuntu-18.04 g:\chebao G:\ubuntu-18.04.tar
进入Ubuntu启动docker
service docker status
service docker start
docker images
docker ps -a
检查挂载,挂载
df
mount -t drvfs d: /mnt/d #如果不需要挂载可以使用umount卸载: umount /mnt/d
启动镜像 创建容器 并命名为:lbcw ;开放端口;将容器一些目录指定到子系统中
docker run --restart=always --name lbcw -d \
-v /mnt/d/lbcw/wwwroot:/home/wwwroot \
-v /mnt/d/lbcw/wwwlogs:/home/wwwlogs \
-v /mnt/d/lbcw/vhost:/usr/local/nginx/conf/vhost \
-v /mnt/d/lbcw/conf:/home/www/conf \
-v /mnt/d/lbcw/wwwroot/framework:/home/wwwroot/framework \
-p 80:80 -p 443:443 -p 6380:6380 -p 27017:27017 --privileged f004d4121447 /run.sh /bin/sh -c
/run.sh /bin/sh -c
docker run -i -t -d --privileged=true -v /mnt/d/lbcw/ptyhon:/home/ptyhon centos
操作docker里面 启动镜像lbcw
docker exec -it d9c00ccff1d6 /bin/bash
docker restart 容器id
docker logs -f 容器id
关于系统框架yaconf配置
find / -name php.ini
vi /usr/local/php/etc/php.ini
yaconf.directory=/home/www/conf
常见问题
1. 如果提示虚拟化未打开。按以下步骤操作
控制面板-》程序-》程序和功能-》启用或关闭windows功能 -》勾选 Hyper V 和 适用于linux的 windows子系统
2. 如果无法全部勾选 Hyper V 参考以下链接,重启进入bioss设置 ,
https://jingyan.baidu.com/article/a24b33cd00efc719ff002b63.html
ps:(同样提示未开启虚拟化服务,从第几步开始检查)
网上有些文章说,要让docker 的容器自动在开机启动,是写脚本,比如在 rc.local 中写。其实完全没必要这么麻烦,docker 有相关指令,docker run 指令中加入 --restart=always 就行。sudo docker run --restart=always .....
如果创建时未指定 --restart=always ,可通过update 命令设置docker update --restart=always xxx
关于镜像制作
开始制作镜像
docker commit 容器id mylbcw
导出
docker export mylnmp > /home/mylnmp.tar
导入
docker import /mnt/d/lbcw/wwwlogs/mylbcw.tar
docker import 导入容器后运行报错,错误如下所示:
root@instance-tbbjrcnc:~/docker/docker# docker run -i -t -p 80:80 docker_allweb:06
docker: Error response from daemon: No command specified.
See 'docker run --help'.
解决方法:
在运行命令后面追加 /bin/bash 或者 /bin/sh
root@instance-tbbjrcnc:~/docker/docker# docker run -i -t -p 80:80 docker_allweb:06 /bin/bash