与.gitignore类似,用以忽略不进行构建的资源文件/目录。
node_modules
构建、运行(Build –> Ship –> Run)
容器可以理解为镜像的一个实例。
可能用到的命令
从Dockerfile构建一个镜像
docker build -t name:version
查看新构建的镜像
docker images
以后台模式从镜像启动容器,并将映射端口:本地端口:容器内端口
docker run -p 8888:8888 -d name:version
查看正在运行的容器
docker ps
查看本地端口与容器端口的映射
docker port
查看容器中应用控制台打印出的日志
docker logs
查看docker默认ip
docker-machine ip default
测试Web应用是否可用(这里采用默认的docker-machine地址,怎样才能使用localhost访问,还没找到方法??)
curl http://$(docker-machine ip default):port
Copy容器内的文件到宿主本地
docker cp :/usr/src/app/log.txt ‘本地磁盘路径’
进入容器
docker exec -it /bin/bash
Note:
1. boot2docker中docker用户的初始密码为:tcuser
;root用户没有密码,在docker用户下使用sudo su - root
切换到root;
2. 要运行容器,不必每次都执行docker run,这样每次都会生成新的容器,可以通过docker start <container id>
启动之前被关闭的容器;
查看docker容器中Linux系统版本信息
cat /proc/version
删除当前目录下所有内容(比如清除某文件夹下的临时文件)
rm -rf *
退出容器,返回docker
exit
推送本地镜像至云端
- 可采用一些服务商提供的镜像服务进行云端存储,这里用了网易蜂巢的163(私有镜像库):
Upload image to private repository on hub.c.163.com
docker login -u username -p password hub.c.163.com
docker tag hub.c.163.com//tag
docker push hub.c.163.com//tag
遇到的问题/疑问
- 将Web app构建镜像,运行容器后,通过什么地址访问?
curl http://$(docker-machine ip default):port
- 如何从容器中Copy文件到宿主机器?
docker cp <container id>:/usr/src/app/log.txt '本地磁盘路径'
- 如何在Linux(Debian)上安装tesseract-ocr软件?
- 构建后安装:首先
docker exec -it <container id> /bin/bash
进入容器,然后执行apt-get update
,apt-get install tesseract-ocr
;这种方式仅会在当前的容器实例中安装,下次run镜像的时候,需重新安装; - 构建前安装:修改Dockerfile,将安装软件的命令写入其中,这样就将安装命令构建到镜像中,以后每次run镜像都会具有相应的软件环境;
上述几个问题都可以从可能用到的命令中找到解决方法。