1. 镜像配置
镜像配置文档如果你找不到哪里写镜像配置了,那你需要先注册,再来刷新页面。
我一开始没有下载docker for mac 所以我使用这种方法配置镜像
Docker Toolbox
(不推荐使用 docker toolbox,建议使用新的 docker for mac 及 docker for windows 以在这两种平台运行 docker )
请确认你的 Docker Toolbox 已经启动,并执行下列命令(请将 加速地址 替换为在加速器页面获取的专属地址)docker-machine ssh default sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile exit docker-machine restart default
结果不能正常使用 根据提示运行docker-machine env
依然不奏效
Restarting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
于是我下载了 docker for mac 如果你是Windows系统,你可能需要 docker for windows
右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:
http://49e8d00f.m.daocloud.io Copy
点击 Apply & Restart 按钮使设置生效。
配置好之后,打开Kitematic 搜索 node 并create
点击exec会自动从终端进入容器
一开始不知道出什么问题了,一直报错,搜了半天也没解决
Error response from daemon: Container XXXXX is not running
把node移除,重新create了。奇迹般的好了。
2. 在容器里运行JS代码
- 使用node 交互环境
点击exec会自动从终端进入容器
输入node进入node交互环境
console.log('hello js!');
//输出
hello js!
- 使用node xxx.js运行js文件
点击exec会自动从终端进入容器
//将js代码写入hello.js文件
echo "console.log('hello,js');" >> hello.js
//运行hello.js文件
node hello.js
//输出结果
hello,js
虽然有了node环境,但是除了交互式体验还可以,编辑文件非常不方便,
连vi编辑器都没有,apt-get update; apt-get install vim; vim安装都会报错。E: Unable to locate package vim
你常用的vscode在这里更是木有。
因此最好挂载个卷,可以在本机使用编辑器方便编写代码
- 挂载卷 在本地编辑文件 在容器运行
在本地终端执行下述命令:
docker run -it -v $PWD/dockerfile:/workspace node sh
上述代码表示
运行一个node 容器 执行 sh 命令 (docker run node sh)
由于 使用了 -it参数 表示打开一个终端进行交互操作
-v 参数指定 挂载的卷 :为分割 把左边当前目录下的dockerfile文件夹挂载到右边根目录下的workspace文件夹
这意味着 dockerfile 和 workspace 绑定在一起的,里面的内容时刻保持一致
在dockerfile文件夹下创建hello.js文件,并且写入console.log('众里寻他千百度,蓦然回首,那人却在灯火阑珊处');
在容器中切换到workspace 并执行文件
以下代码在容器中执行
cd workspace
node hello.js
输出//
'众里寻他千百度,蓦然回首,那人却在灯火阑珊处'