cat /etc/redhat-release
df -h
lscpucat /proc/cpuinfo
echo "Threads/core: $(nproc --all)"
cat /proc/meminfofree
二、安装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
sudo 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 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"]
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 run -p 9180:9180 --name my/project2 -itd my/project2:1.0docker run -itd my/project2
此时服务器上还没有这个my/project2的镜像,则会自动去docker hub上下载
docker pull my/project2:1.0
当镜像更新后,将其运行起来,如果该镜像的container已存在,则重启或者删除
以下命令是,启动一个镜像,以容器方式运行
docker run --name my/project1.1 -itd my/project:1.1
ddetached
7.访问刚搭建的docker镜像
curl http://localhost:9180
docker image remove
docker rm
docker stop
docker logs
五、部署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 imagesdocker container listdocker 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
/home
File.read("/home/userdata.json")
资源:
1.Docker Hub: https://hub.docker.com
2.Docker安装:https://docs.docker.com/engine/install/centos/
3.Golang环境
2.Python环境