一、为什么要用docker
- 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
- 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
- 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架 构。(非常重要,传统虚拟机启动项目时只能启动一个,如果想启动另一个只能关掉当前运行项目,再去启动)
二、安装docker
查看是否安装成功
$ docker version
Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组
sudo usermod -aG docker $USER
三、使用docker第一步,创建image文件
三种方式创建image
第一种方式:git clone 从云上拉取代码后创建
git clone + git地址 (拉取代码)
cd + 上面clone的文件夹名(进入文件夹)
在文件里面增加dockerFile文件
dockerFile(一般放在项目根目录)
FROM node:10.15-slim (该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即10.15-slim版本的 node)
ENV NODE_SOURCE /app (定义变量NODE_SOURCE )
ENV HOST 0.0.0.0(定义变量HOST)
WORKDIR $NODE_SOURCE(指定接下来的工作路径为$NODE_SOURCE,也就是/app)
COPY . $NODE_SOURCE (将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录)
RUN npm install (运行install)
RUN npm run build(运行build)
EXPOSE 3000(将容器 3000 端口暴露出来, 允许外部连接这个端口)
CMD ["npm", "start"] (npm start 启动项目)
创建image文件
docker image build -t test-1 . // 不要忘记最后面的.哦
安装好了我们就可以查看镜像了:docker images
从 image 文件生成容器
docker run -itd -p 3008:3000 --name=test-1-c test-1
- -i 表示以交互模式运行容器
- -d 表示后台运行容器,并返回容器ID
- -t 为容器重新分配一个伪输入终端
- –name 为容器指定名称
- -p 容器的 3000 端口映射到本机的 3008 端口
docker ps 查询运行中的容器
docker ps -a 查询所有容器
那么现在我们不想运行,想停止刚刚的容器
docker container stop CONTAINERID
删除刚刚的容器
docker rm [containerID]
删除刚刚的image
docker rmi <image id>
第二种
从阿里云拉取images
第三种
从dockerhub拉取镜像