1.docker安装
yum install -y docker 安装docker命令
安装成功以后,编辑/etc/docker/daemon.json文件,配置国内镜像加速。
这里用到的是阿里云提供的加速服务,需要登录https://dev.aliyun.com/来获取个人专属的加速地址。这里假设加速地址是https://4da6b0g8.mirror.aliyuncs.com。
vim /etc/docker/daemon.json
编写以下内容:
{
“registry-mirrors”: [“https://4da6b0g8.mirror.aliyuncs.com“]
}
修改完配置文件应该重启服务。
docker restart 重启docker容器
docker images 查看镜像
docker rmi 删除镜像
3.拉取Node镜像
拉取Node镜像
docker pull node:9.2.0
等待镜像拉取成功,可以查看下我们已经有的镜像:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/node 9.2.0 c1d02ac1d9b4 3 weeks ago 675.6 MB
node 9.2.0 c1d02ac1d9b4 3 weeks ago 675.6 MB
4.部署项目代码
进入/home目录,从github上拉取项目代码:
cd /home
git clone https://gitee.com/Rockwc/rockwc-technical.git
git branch
git remote –v
git remote add origin https://gitee.com/Rockwc/rockwc-technical.git
git fetch origin
git status
git pull origin develop1.0
git add .
git commit -m " 提交的message"
git reset --hard FETCH_HEAD 冲突之后还原本地,再git pull拉取代码
这里的github地址要换成自己地址。
5.编写Dockerfile文件
Dockerfile文件里是一条条能被Linux执行的命令,docker能根据该文件构建镜像。
该文件必须和项目文件放在一起,一般放在项目根目录下,本例中即/home/hello目录下。
cd hello
vim Dockerfile
# 基础镜像为node,版本为v9.2.0
FROM node:9.2.0
# 镜像作者,可以附加联系信息
MAINTAINER Taylor
# 创建容器内的项目存放目录
RUN mkdir -p /home/nodeapp
WORKDIR /home/nodeapp
# 将Dockerfile当前目录下所有文件拷贝至容器内项目目录并安装项目依赖
COPY . /home/nodeapp
RUN npm install
# 容器对外暴露的端口号,要和node项目配置的端口号一致
EXPOSE 3000
# 容器启动时执行的命令
ENTRYPOINT ["npm", "run"]
# CMD [ "node", "app.js" ]
# CMD [ "node", "./bin/www.js" ]
# CMD npm run dev
CMD ["dev"]
6.构建镜像
在项目根目录下执行命令构建对象:
docker build -t hello .
屏幕会按照Dockerfile内的指令一条条执行并显示在屏幕上。 构建完成,查看已有的镜像。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello latest b753dcb8208d 4 hours ago 675.6 MB
docker.io/node 9.2.0 c1d02ac1d9b4 3 weeks ago 675.6 MB
node 9.2.0 c1d02ac1d9b4 3 weeks ago 675.6 MB
7.运行容器
通过镜像hello创建一个容器并运行:
docker run -d --name hello -p 80:3005 hello
给容器换一个名字, 比如说 docker run -it --name=mycentos2 centos:7 /bin/bash
查询当前容器:docker container ls -all
删除当前容器:docker container rm mycentos(提示: 这一步要确定删除容器没问题的情况下, 才可以做)
docker run的容器状态是Exited,docker logs budnode
-d表示容器会在后台运行;--name 是我们给容器起的名字,这个名字是唯一的;-p表示端口映射,即将容器内的3000端口映射到宿主机器的80端口上,这样外部就可以通过80端口来访问容器内部运行的应用了。
执行命令查看容器的状态:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
748be4cfccd9 hello "node app.js" 25 seconds ago Up 25 seconds 0.0.0.0:80->3000/tcp hellocontainer
此时,node应用已经在容器内跑起来了。我们可以访问了。
ps –ef | grep nginx nginx进程
终止一个运行中的容器 docker stop $CONTAINER_ID
杀死所有正在运行的容器 docker kill $(docker ps -a -q)
删除所有已经停止的容器 docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像 docker rmi $(docker images -q -f dangling=true)
删除所有镜像 docker rmi $(docker images -q)
强制删除镜像名称中包含“doss-api”的镜像 docker rmi --force $(docker images | grep budvue | awk '{print $3}')
删除所有未使用数据 docker system prune
只删除未使用的volumes docker volume prune
本地访问
打开本地的浏览器,输入云服务器的外网IP即可访问