Dock极简使用指南
网上“入门”“十分钟掌握”之类的文章,总觉得不够精当,还是自己总结一份吧:
获取镜像
一般来说,我们常用的基础环境,都可以从docker官方仓库获取到了,比如需要node,就直接:
docker pull node
还可以指定版本,比如:
docker pull node:8.0
或者:
docker pull node:latest # 获取最新版本
从镜像创建容器(运行实例)
# 可以分三步:
# 1. 创建容器
docker create -it --name='node-for-test' node # --name需要指定一个唯一名称,最后是镜像的名字
# 2. 启动容器
docker start node-for-test # 容器名就是刚刚创建的名字
# 3. 进入容器(用当前终端接管容器的输入输出)
docker exec -it node-for-test bash # 最后一个参数指定的是shell类型
# 也可以把三步整合为一步
docker run -it -d --name='node-for-test' node bash
进入容器后,所有的命令行指令都是在容器内执行,如果想退出来,运行’exit‘命令即可;回到宿主命令行以后,可以用下面的命令查看所有容器:
docker ps -a # 加-a参数,可以看到已经停止的容器
保存实例
对实例的任何修改,比如修改配置文件,安装软件之类的,都不会自动保存,只要实例退出就消失了。要想保留实例当前状态,需要在宿主机上执行命令:
docker commit node-for-test image-node-for-test:v0.5 # 相当于在本地生成了一个新镜像,保留了实例的当前状态,以后即使实例销毁了,也可以从这个镜像重新运行,最后一个参数是镜像名称,冒号后面是版本号
保存以后,可以用下面命令查看一下:
docker image ls
应该至少有两个镜像了
REPOSITORY TAG IMAGE ID CREATED SIZE
image-node-for-test v0.5 4d8e496fd921 2 hours ago 991MB
node latest 2577ab2cda97 6 days ago 991MB
建立端口映射
要想从外部访问docker里的服务,需要把端口映射到宿主机,一般启动的时候就直接映射了:
docker run -it -d -p 8000:8000 --name=node-for-test image-node-for-test bash # 这个-d参数可以让服务后台运行,要不终端连接断开,docker容器也就停了
想映射多个端口的话,-p参数是可以多次使用的,比如:
docker run -it -d -p 8000:8000 -p 5000:22 ...
注意冒号前面是宿主机端口,后面是容器的。当然如果22端口用于ssh的话,容器里还需要安装ssh服务
查看启动错误日志
如果 run 命令没跑起来,看镜像列表,只有一个exi退出代码,信息太少,可以用 logs + 容器id(或者名称)来查看日志:
docker logs node-for-test
设置环境变量
有些 image 启动时需要设置环境变量,比如 mysql 官方镜像,如果不设置,启动会报错:
You need to specify one of the following as an environment variable
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
这时需要给 run 命名加上 -e 参数,比如:
docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=yes --name=mysql mysql:latest
停止和删除容器
# 停止容器服务
docker stop node-for-test
# 删除容器
docker rm node-for-test
hawk
关注创业公司的技术与团队
286 声望
18 粉丝
推荐阅读
从 chatgpt 大火预测近未来
ChatGPT 有望再次统一互联网的入口,使得由 APP 建立的独立信息帝国逐渐崩溃。这将改变人们对信息的获取方式,让我们能够获得更快、更准确的信息。
songofhawk赞 1阅读 573
张晋涛:我的 2022 总结
大家好,我是张晋涛。2022 年已经结束,我每年都会惯例的做个小回顾,今年因为阳了在恢复身体,一直拖到了今天才写。生活在 2022 年初做回顾的时候,觉得 2021 是魔幻的一年,但现在看来 2022 年其实更加魔幻。一...
张晋涛赞 6阅读 1k评论 2
利用Docker部署管理LDAP及其初次使用
前言:本周主要写了gitlabWebhook转github的项目,总体上没有遇到什么大问题,这周接触到了LDAP,于是就花时间实际操作了解了一下。
李明赞 5阅读 1.3k
Docker学习:Image的本地存储结构
在使用Docker时候,针对镜像的操作一般就是docker pull,docker build,docker commit(刚开始接触Docker的时候,还不会Dockerfile,经常使用这个命令,但是经历了一次血的教训,已经放弃这个命令很久)这些操作...
backbp赞 4阅读 10k评论 3
使用docker快速搭建xssPlatform测试平台实践
笔者之前给一些开发团队多次做Web安全开发培训,为了让培训的学员能够理解XSS原理和XSS的危害,将xssPlatform进行了更新,之前一直放在GitHub中;发现关注的人越来越多,很多人在安装的过程中遇到问题不知道怎么...
汤青松赞 1阅读 26.2k
将node.js 应用构建成docker镜像
本文内容:将node.js 应用构建成dokcer镜像, 并上传到阿里云创建 Node.js 应用1.首先,创建一个 package.json 文件,描述你应用程序以及需要的依赖: {代码...} 2.运行 npm install这会自动生成一个 package-lock...
weiweiyi赞 3阅读 725
记一次使用gdb诊断gc问题全过程
上次解决了GC长耗时问题后,系统果然平稳了许多,这是之前的文章《GC耗时高,原因竟是服务流量小?》 然而,过了一段时间,我检查GC日志时,又发现了一个GC问题,如下: 从这个图中可以发现,我们GC有一些尖峰,...
扣钉日记赞 2阅读 1.1k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。