$ docker container run --rm -p 8000:3000 -it koa-demo /bin/bash10.4 CMD 命令
上一节的例子里面,容器启动以后,需要手动输入命令node demos/01.js 。我们可以把这个命令写在 Dockerfile 里面,这样容器启动以后,这个命令就已经执行了,不用再手动输入了 。
FROM node:8.4 COPY . /app WORKDIR /app RUN npm install --registry=https://registry.npm.taobao.org EXPOSE 3000 CMD node demos/01.js上面的 Dockerfile 里面,多了最后一行CMD node demos/01.js,它表示容器启动后自动执行node demos/01.js 。
你可能会问,RUN命令与CMD命令的区别在哪里?简单说,RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行 。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令 。
注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令 。现在,启动容器可以使用下面的命令 。
$ docker container run --rm -p 8000:3000 -it koa-demo:0.0.110.5 发布 image 文件
容器运行成功后,就确认了 image 文件的有效性 。这时,我们就可以考虑把 image 文件分享到网上,让其他人使用 。
首先,去 hub.docker.com 或 cloud.docker.com 注册一个账户 。然后,用下面的命令登录 。
$ docker login接着,为本地的 image 标注用户名和版本 。
$ docker image tag [imageName] [username]/[repository]:[tag] # 实例 $ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1也可以不标注用户名,重新构建一下 image 文件 。
$ docker image build -t [username]/[repository]:[tag] .最后,发布 image 文件 。
$ docker image push [username]/[repository]:[tag]发布成功以后,登录 hub.docker.com,就可以看到已经发布的 image 文件 。
十一、其他有用的命令docker 的主要用法就是上面这些,此外还有几个命令,也非常有用 。
(1)docker container start
前面的docker container run命令是新建容器,每运行一次,就会新建一个容器 。同样的命令运行两次,就会生成两个一模一样的容器文件 。如果希望重复使用容器,就要使用docker container start命令,它用来启动已经生成、已经停止运行的容器文件 。
$ docker container start [containerID](2)docker container stop
前面的docker container kill命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号 。而docker container stop命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号 。
$ bash container stop [containerID]这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号 。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失 。
(3)docker container logs
docker container logs命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出 。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出 。
$ docker container logs [containerID](4)docker container exec
docker container exec命令用于进入一个正在运行的 docker 容器 。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器 。一旦进入了容器,就可以在容器的 Shell 执行命令了 。
$ docker container exec -it [containerID] /bin/bash(5)docker container cp
docker container cp命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机 。下面是拷贝到当前目录的写法 。
$ docker container cp [containID]:[/path/to/file] .原文:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
推荐阅读
- 为什么要有分布式系统?
- 借助minid工具优化Dockerfile分层
- 为什么一般人不要去看兵马俑 一般人不要看兵马俑
- 爱迪生为什么发明电灯起源是什么 我知道爱迪生发明了电灯还有谁发明了什么
- 为什么店铺认证一直不通过 淘宝开店认证已通过是不是已经开店成功了
- 江西九江寺庙排名 江西为什么老是被淹
- 汽车的保值率,为什么有高有低?
- 耳洞为什么会发臭?
- 喝安化黑茶误区,安化黑茶知识
- 淘宝开店非法人认证 为什么淘宝开店认证一直过不了