关于在window下使用docker的备选方案

更新时间:2023-06-20 21:00:21 阅读: 评论:0

关于在window下使⽤docker的备选⽅案
这篇⽂章需要接着⼀⽂中提到的问题的解答:
Windows下开启了Hyper-v后安卓模拟器及VMware均不能⽤了?
这个问题的前提是使⽤Docker for Windows时带来的,官⽅曾表态:
Docker Machine的驱动程序模型没有完全映射到Docker for Windows,因为Docker for Windows更加集成且紧密耦合(例如,我们有⼀个依赖于hyper-v的⽹络代理)。这是在灵活性与⼀致性以及紧密集成之间的⼀个令⼈不愉快的折中,这让我们试图解决Toolbox的VPN持久化和其他常见问题。
The driver model from Docker Machine doesn’t map cleanly to Docker for Windows becau Docker for Windows is more integrated and tightly coupled (eg. we have a networking proxy that relies on hyper-v sockets). This is an
unpleasant tradeoff between flexibility vs. consistency and tight integration that lets us try to tackle VPN durability and other common problems with Toolbox.
⼤概意思是你洗洗睡,再好好想想到底⽤不⽤Docker for Windows。事实上我电脑还要打游戏的啊,⽤上Hyper-V不是逼我要好好学习好好⼯作吗?不过官⽅良⼼,还提供了⼀个⽅法临时解决这个问题:
关闭你的Hyper-V,然后重启完你的游戏去吧。
这令我每次都要在⽤上docker与玩游戏之间不断重启电脑。我也曾考虑⽤上⽼⽅法:虚拟机!但是考虑使⽤docker还要退回⽼⽅法能接受?这⾥尝试使⽤Docker for Windows较为旧的解决⽅案Docker Toolbox。
安装 Docker Toolbox
喜欢阅读官⽅教程⽂档。
minar
进⼊上⾯官⽅教程当你按下 Get Docker Toolbox for Windows 按钮下载完后安装,这⾥就细说明安装的问题。
使⽤
安装完桌⾯出现以下图标,每次开机均需要运⾏⼀次Docker QuickStart Terminal就可以使⽤docker了。
运⾏ hello world测试⼀下,成功运⾏如下:
docker run busybox echo hello world
Unable to find image 'busybox:latest' locally
511136ea3c5a: Pull complete
df7546f9f060: Pull complete
ea13149945cb: Pull complete
4986bf8c1536: Pull complete
hello world
⽐较多的问题
能使⽤vmware代替virtualbox吗?
答案:能!
由于使⽤Docker Toolbox使⽤virtualbox承载底层OS层服务,virtualbox毕竟是虚拟机技术在这⾥属于可替换的部分,还记得这篇⽂章的出现的原因吗?正是因为使⽤了同是虚拟化技术Hyper-V引申出来的。所以答案是能!
怎样换?这需要说说docker-machine的具体功能。
Machine lets you create Docker hosts on your computer, on cloud providers, and inside your own data center. It creates rvers, installs Docker on them, then configures the Docker client to talk to them.
⼤概意思是docker的服务基于machine上的,然后可以理解为容器都是运⾏在machine上。说完原理,接下来做⼀下实操。
安装vmware⽀持
下载,然后放到Docker Toolbox⽬录下:
# C:\Program Files\Docker Toolbox
ls -1
boot2docker.iso
<*用记忆术记英语单词
<*
<*
<*
drink的过去式和过去分词
docker-quickstart-terminal.ico
installers/
start.sh*
unins000.dat
<*
并且把以下代码覆盖到⽬录下的start.sh⽂件⾥:
#!/bin/bash
export PATH="$PATH:/mnt/c/Program Files (x86)/VMware/VMware Workstation"
trap '[ "$?" -eq 0 ] || read -p "Looks like something went wrong in step ´$STEP´... Press any key "' EXIT
VM=${DOCKER_MACHINE_NAME-default}
DOCKER_MACHINE=./
BLUE='\033[1;34m'
isdn是什么
GREEN='\033[0;32m'
NC='\033[0m'
if [ ! -f "${DOCKER_MACHINE}" ]; then
echo "Docker Machine is not installed. Plea re-run the Toolbox Installer and try again."
exit 1
fi
< list | grep "${VM}" &> /dev/null
VM_EXISTS_CODE=$?
t -e
STEP="Checking if machine $VM exists"
if [ $VM_EXISTS_CODE -eq 1 ]; then
"${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || :
rm -rf ~/.docker/machine/machines/"${VM}"
#t proxy variables if they exists
if [ -n ${HTTP_PROXY+x} ]; then
if [ -n ${HTTP_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY"
fi
if [ -n ${HTTPS_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY"
fi
if [ -n ${NO_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY"
fi
"${DOCKER_MACHINE}" create -d vmwareworkstation $PROXY_ENV "${VM}"
fi
STEP="Checking status on $VM"
介词是什么
VM_STATUS="$(${DOCKER_MACHINE} status ${VM} 2>&1)"
if [ "${VM_STATUS}" != "Running" ]; then
"${DOCKER_MACHINE}" start "${VM}"
yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
fi
STEP="Setting env"
eval "$(${DOCKER_MACHINE} env --shell=bash ${VM})"
STEP="Finalize"
clear
cat << EOF
##        .
## ## ##        ==
## ## ## ## ##    ===五一劳动节 英文
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
\______ o          __/
\    \        __/
\____\_______/
EOF
echo -e "${BLUE}docker${NC} is configured to u the ${GREEN}${VM}${NC} machine with IP ${GREEN}$(${DOCKER_MACHINE} ip ${VM})${NC}" echo "For help getting started, check out the docs at "
echo
cd
docker () {
MSYS_NO_PATHCONV= "$@"
}
export -f docker
if [ $# -eq 0 ]; then
echo "Start interactive shell"
exec "$BASH" --login -i
el
echo "Start shell with command"
exec "$BASH" -c "$*"
fi
然后再次运⾏Docker Quickstart Terminal
docker-machine ls
NAME      ACTIVE  DRIVER              STATE    URL                          SWARM  DOCKER        ERRORS
default  *        vmwareworkstation  Running  tcp://192.168.163.130:2376          v18.02.0-ce
能看到DRIVER已替换为vmwareworkstation,然后就可以安⼼使⽤了。
⼀个需要注意的地⽅:使⽤vmware⽀持的不能使⽤Kitematic,打开将会重置你的整个服务然后将会还原为virtualbox
在任何地⽅使⽤docker
在使⽤上还存在些问题,像我在实际⼯作中需要在VSCode控制docker。⽬前这个⽅案会导致必须在Docker Quickstart Terminal的命令窗⼝
下才能使⽤,这样严重影响使⽤体验。
如果你其他地⽅使⽤docker命令会得到以下反馈:
docker ps
error during connect: Get %2F%2F.%2Fpipe%2Fdocker_engine/v1.35/containers/json: open //./pipe/docker_engine: The system cannot find the file specifie 经过多番查找得出解决办法:
在当前命令⾏注⼊DOCKER相关变量,让docker命令获得配置内容均可使⽤。
步骤如下:
1. 开机运⾏Docker Quickstart Terminal
2. 打开命令⾏窗⼝然后运⾏以下代码:
eval "$(docker-machine env default)"
3. 就可以使⽤了
朝鲜为什么不能用避孕套docker ps
CONTAINER ID        IMAGE              COMMAND            CREATED            STATUS              PORTS              NAMES
如果还不⾏在当前命令⾏窗⼝输⼊以下代码,看是否为当前可⽤:
docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.163.130:2376"
export DOCKER_CERT_PATH="C:\Urs\infzm-pc\.docker\machine\machines\default"
export DOCKER_MACHINE_NAME="default"
export COMPOSE_CONVERT_WINDOWS_PATHS="true"
美国电影排行榜# Run this command to configure your shell:
# eval $("C:\Program Files\Docker " env default)
如不可⽤请根据具体情况修改--shell参数,可选:bash, fish, cmd, powershell, tcsh。
gbp# 在git shell中
eval "$(docker-machine env --shell bash default)"
# 在cmd中
eval "$(docker-machine env --shell cmd default)"
出现⼀些异常
如你在初次使⽤或者pull镜像时出现以下错误,建议你pull镜像或者build之类的较为繁琐的内容还是于Docker Quickstart Terminal命令⾏窗
⼝下运⾏。
Traceback (most recent call last):
File "docker-compo", line 6, in <module>
File "compo\cli\main.py", line 71, in main
File "compo\cli\main.py", line 124, in perform_command
File "compo\cli\main.py", line 959, in up
File "compo\project.py", line 452, in up
File "compo\rvice.py", line 324, in ensure_image_exists
File "compo\rvice.py", line 972, in build
File "compo\progress_stream.py", line 23, in stream_output
File "compo\progress_stream.py", line 90, in print_output_event
File "codecs.py", line 370, in write
File "site-packages\colorama\ansitowin32.py", line 40, in write
英语六级吧
File "site-packages\colorama\ansitowin32.py", line 141, in write
File "site-packages\colorama\ansitowin32.py", line 169, in write_and_convert
File "site-packages\colorama\ansitowin32.py", line 174, in write_plain_text
IOError: [Errno 0] Error
Failed to execute script docker-compo
备注
在替换成vmware虚拟服务时start.sh插件提供的源代码会存在找不到machine的问题导致每次重启(宿主机)均从新安装⼀遍VM,导致本地镜像与容器全没了。⽬前贴的这份代码是已修复的,具体看

本文发布于:2023-06-20 21:00:21,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/151828.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:问题   服务   代码   命令
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图