网上的《入门》《十分钟精通》之类的文章总觉得不够准确,自己总结一下:获取图片官方仓库已经获取。比如需要node,可以直接:dockerpullnode也可以指定版本,比如:dockerpullnode:8.0或者:dockerpullnode:latest#获取最新版本,从中创建容器(运行实例)image#可以分为三步:#1.创建容器dockercreate-it--name='node-for-test'node#--name需要指定一个唯一的名字,最后是image的名字#2.启动容器dockerstartnode-for-test#容器名称为刚刚创建的名称#3.进入容器(使用当前终端接管容器的输入输出)dockerexec-itnode-for-testbash#最后一个参数指定shell类型#也可以将三步整合为一步dockerrun-it-d--name='node-for-test'nodebash进入容器后,所有命令行指令在容器中执行。如果要退出,只需运行'exit'命令即可;return到宿主机命令行后,可以使用以下命令查看所有容器:dockerps-a#加上-a参数,可以看到被停止的容器保存的实例的任何修改,比如修改配置文件、安装软件等,不会自动保存,只要实例退出,就会消失。要保留实例当前状态,需要在主机上执行命令:dockercommitnode-for-testimage-node-for-test:v0.5#相当于在本地生成一个新的镜像,并保留实例的当前状态,即使将来实例被销毁,也可以从这个镜像重新运行。最后一个参数是镜像名称,冒号后面是版本号。保存后可以使用如下命令查看:dockerimagels应该至少有两个镜像REPOSITORYTAGIMAGEIDCREATEDSIZEimage-node-for-testv0.54d8e496fd9212小时前991MBnodelatest2577ab2cda976天前991MBEstablish端口映射从外部访问docker中的服务,需要将端口映射到宿主机。映射:dockerrun-it-d-p8000:8000--name=node-for-testimage-node-for-testbash#这个-d参数允许服务在后台运行,或者断开终端连接,docker容器停止。如果要映射多个端口,-p参数可以多次使用,如:dockerrun-it-d-p8000:8000-p5000:22...注意冒号前面是主机端口,然后是容器。当然,如果22端口用于ssh,需要在容器中安装ssh服务,查看启动错误日志。如果运行命令没有运行,查看镜像列表。exi出口代码只有一个,资料太少。可以使用logs+containerid(orname)查看日志:dockerlogsnode-for-testsettingenvironmentvariables有些镜像在启动的时候需要设置环境变量,比如官方的mysql镜像,如果不设置,启动会报错:需要指定以下其中一项作为环境变量-MYSQL_ROOT_PASSWORD-MYSQL_ALLOW_EMPTY_PASSWORD-MYSQL_RANDOM_ROOT_PASSWORD这时候需要在运行名中加上-e参数,例如:dockerrun-d-eMYSQL_ALLOW_EMPTY_PASSWORD=yes--name=mysqlmysql:latest停止并删除容器#停止容器服务dockerstopnode-for-test#删除容器dockerrmnode-for-test
