用docker跑js代码

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代码

  1. 使用node 交互环境

点击exec会自动从终端进入容器

输入node进入node交互环境

console.log('hello js!');
//输出
hello js!
  1. 使用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在这里更是木有。

因此最好挂载个卷,可以在本机使用编辑器方便编写代码

  1. 挂载卷 在本地编辑文件 在容器运行

在本地终端执行下述命令:

docker run -it -v $PWD/dockerfile:/workspace node sh

上述代码表示

  1. 运行一个node 容器 执行 sh 命令 (docker run node sh)

  2. 由于 使用了 -it参数 表示打开一个终端进行交互操作

  3. -v 参数指定 挂载的卷 :为分割 把左边当前目录下的dockerfile文件夹挂载到右边根目录下的workspace文件夹

  4. 这意味着 dockerfile 和 workspace 绑定在一起的,里面的内容时刻保持一致

在dockerfile文件夹下创建hello.js文件,并且写入console.log('众里寻他千百度,蓦然回首,那人却在灯火阑珊处');

在容器中切换到workspace 并执行文件

以下代码在容器中执行

cd workspace

node hello.js

输出//
'众里寻他千百度,蓦然回首,那人却在灯火阑珊处'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,687评论 15 147
  • 以下原文转载于(https://docs.docker.com/docker-for-mac/)(想找中文版的最新...
    Veekend阅读 7,684评论 0 17
  • 0. 前言 docker是什么?docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可...
    sessionboy阅读 3,900评论 2 49
  • git clone https://github.com/laradock/laradock.git 例子:运行 ...
    啊吖优品阅读 3,492评论 2 6
  • 五月, 在异乡嘈杂的街头,遇见两个卖白兰花的妇女,胳膊上挽着个篮子,里面整齐地躺着几排白兰花。手指上也挂着几串白兰...
    芊芊若水阅读 617评论 1 4