一、检查CentOS系统
查看linux的系统是否是CentOScat /etc/redhat-release
查看硬盘以GB的方式显示df -h
查看CPU相关信息lscpu
cat /proc/cpuinfo
查看CPU核数echo "Threads/core: $(nproc --all)"
查看Memory大小cat /proc/meminfo
free
二、安装Docker到你的CentOS上
参见教程:https://docs.docker.com/engine/install/centos/
简单总结到以下四步骤
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker
试运行dockersudo docker run hello-world
三、部署Golang + Gin
1.切换到项目根目录
cd ../project1
2.添加Dockerfile文件,内容如下
FROM golang:alpine
RUN mkdir -p /home/project1
WORKDIR /home/project1
COPY ./ /home/project1
RUN export GOPROXY=https://proxy.golang.com.cn,direct
RUN go build -o /home/project1 main.go diagnostics.go
ENTRYPOINT [ "/home/project1", "-c", "/home/project1/conf/test.yaml" ]
这里使用的是golang 1.18版本,而golang:alpine是golang推断专门为docker准备镜像包
3.编译项目
docker build -t project1 .
4.给这个镜像打一个tag
docker tag project1 my/project1:v1.0
5.将tag推到docker hub
docker push my/project1:v1.0
然后你将在https://hub.docker.com/repository 看到你的项目,前提是你已经注册了账户
6.登录到你的CentOS
前提是,你的服务器已安装docker环境,并且docker已处于运行状态,然后运行以下命令:docker run -itd --name my/project1 -p 9190:9190
此时服务器上还没有这个my/project1的镜像,则会自动去docker hub上下载
7.访问刚搭建的docker镜像
curl http://localhost:9190
四、部署Python + Tornado
1.切换到项目根目录
cd ../project2
2.添加Dockerfile文件,内容如下
FROM python:3.9.13
EXPOSE 9180
RUN mkdir -p /home/project2
WORKDIR /home/project2
COPY ./ /home/project2
COPY requirements.txt /home/znzpay
RUN pip3 install --no-cache-dir -r requirements.txt
ENTRYPOINT ["python3", "main.py"]
这里把项目中的依赖库导出到requirements.txt里,通过以下命令pip freeze -> requirements.txt
3.编译打包项目
docker build -t project2 .
4.给这个镜像打一个tag
docker tag project2 my/project2:1.0
5.将tag推到docker hub
docker push my/project2:1.0
然后你将在https://hub.docker.com/repository 看到你的项目,前提是你已经注册了账户
6.登录到你的CentOS
前提是,你的服务器已安装docker环境,并且docker已处于运行状态,然后运行以下命令:docker run -p 9180:9180 --name my/project2 -itd my/project2:1.0
或者docker run -itd my/project2
此时服务器上还没有这个my/project2的镜像,则会自动去docker hub上下载
如果是已存在的镜像,要进行更新时,则运行以下命令docker pull my/project2:1.0
1.0表示tag版本号,要更新到1.0版本
当镜像更新后,将其运行起来,如果该镜像的container已存在,则重启或者删除
以下命令是,启动一个镜像,以容器方式运行
docker run --name my/project1.1 -itd my/project:1.1
参数–name 后面是自定义的昵称
参数-itd 后面的是镜像名称,其中d
表示detached
后台运行
7.访问刚搭建的docker镜像
curl http://localhost:9180
删除镜像docker image remove <id>
删除containerdocker rm <id>
停止containerdocker stop <id>
查看日志docker logs <container id>
五、部署NodeJS + 任意Web框架
1.切换到项目根目录
cd project3
2.添加Dockerfile文件,内容如下
FROM node:16-alpine
EXPOSE 9200
RUN mkdir -p /home/project3
WORKDIR /home/project3
COPY ./dist /home/project3
COPY package.json package-lock.json /home/project3/
RUN npm install
ENTRYPOINT ["node", "main.js"]
3.从Dockerfile启用一个image镜像
编译镜像docker build -t project3 .
启动容器docker run --name project3 -d -p 9200:9200 project3
4.查看运行情况
查看镜像运行情况docker images
查看容器运行情况(只看正在运行的container)docker container list
查看所有容器(正在运行的、停止的、意外终止的)docker container ls -a
六、Docker之间共享数据 - volume
Docker的container之间是完全隔离状态,因此每次更新image时,再启动container,则之前保存到container内部的文件数据会丢失,因此我们可以通过volume来共享数据,
1.创建volume
docker volume create test_data_volume
2.可以查看volume
docker volume spect test_data_volume
3.启动Container时,挂载此volume
docker run --name project_tag -d -p 8888:8888 project_tag --mount source=test_data_volume,target=/home
挂载volume时,指定目录,比如这里是/home
表示在Container里的home下。
那么你的后台程序就可以根据此路径读取,例如:File.read("/home/userdata.json")
而userdata.json就是你想存储数据的文件
Start a container with a volume 传送门
资源:
1.Docker Hub: https://hub.docker.com
2.Docker安装:https://docs.docker.com/engine/install/centos/
3.Golang环境
2.Python环境