文章目录
- 一、Docker安装
- 1. 简介
- 2. 安装Docker
- 3. 常见命令
- 二、基础服务部署
- 1. 部署MySQL
- 2. 部署phpMyAdmin
- 3. 部署Nginx
- 4. 部署RabbitMQ
- 5. 部署MinIO
- 6. 部署Redis
- 7. 部署redisinsight
- 8. 部署PostgreSQL
- 9. 其他镜像
一、Docker安装
1. 简介
Docker 是一种开源的应用容器引擎,它允许开发人员创建轻量级的可移植容器,这些容器可以包含运行应用程序所需的所有文件和依赖项。Docker 使用 Linux 内核的一些功能,特别是 Linux 容器(LXC)和一些开源的组件(如 libcontainer)来创建和管理这些容器。这些容器通常比传统的虚拟机更小、更快、更容易部署和操作。
Docker 广泛应用于部署和运行应用程序,特别是在开发、测试和生产环境中。使用 Docker,开发人员可以快速部署和分发他们的应用程序,同时确保与操作系统和其他依赖项之间的兼容性。Docker 还可以轻松地在不同的环境之间共享代码和配置,这使得它在开发团队、多租户应用程序以及需要高可用性和弹性架构的场景中非常有用。
Docker的特点包括:
- 自动化部署和操作:Docker可以通过自动化工具和脚本实现应用程序的部署和操作,使得部署过程更加简单和快速。
- 可移植性和隔离性:Docker可以将应用程序及其依赖项打包成一个轻量级的容器,使得应用程序可以在不同的环境中运行,并且可以轻松地在不同的主机之间共享和迁移。
- 高效性和灵活性:Docker使用Linux内核技术(如LXC)和开源组件来创建和管理容器,这使得容器启动和运行速度非常快,并且可以灵活地调整和扩展。
2. 安装Docker
- 在Ubuntu上安装Docker:更新软件包,安装必要的依赖软件
sudo apt-get update -y
sudo apt-get full-upgrade -y
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
- 导入源仓库的 GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 将Docker软件源添加到系统
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- 安装 Docker 最新版本
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
- 测试是否安装成功
docker version
3. 常见命令
重载配置文件:sudo systemctl daemon-reload
重启服务:sudo systemctl restart docker
显示全部容器:docker ps -a
停止并删除所有容器:docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)
删除所有镜像:docker rmi $(docker images -q)
进入镜像:docker run -it xxx /bin/bash
重启容器:docker stop xxx && docker start xxx
查询容器日志:docker logs xxx
二、基础服务部署
1. 部署MySQL
- 拉取镜像
docker pull mysql:8.2.0
- 运行
docker run -d --privileged=true --restart=always -p 3306:3306 \
-v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=testpasswrd --name base-mysql mysql:8.2.0
- 测试是否部署成功
docker ps -f name=base-mysql
2. 部署phpMyAdmin
- 拉取镜像
docker pull phpmyadmin/phpmyadmin:latest
- 运行
docker run -d --restart=always -p 8100:80 -e PMA_ARBITRARY=1 --name ser-phpmyadmin phpmyadmin/phpmyadmin:latest
- 测试是否部署成功 http://192.168.6.12:8100
3. 部署Nginx
- 拉取镜像
docker pull nginx:1.25.3-alpine
- 配置目录
conf/server.conf
内容
server
{
listen 80;
client_max_body_size 200m;
proxy_connect_timeout 1800s;
proxy_send_timeout 1800s;
proxy_read_timeout 1800s;
location / {
alias /usr/share/nginx/html/;
}
}
html/test.html
内容
hello
- 运行
docker run -d --restart=always -p 80:80 -p 443:443 \
-v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/conf:/etc/nginx/conf.d \
--name base-nginx nginx:1.25.3-alpine
- 测试是否部署成功 http://192.168.6.200/test.html
4. 部署RabbitMQ
- 拉取镜像
docker pull rabbitmq:3.12.8-management-alpine
- 运行
docker run -d --restart=always -p 15672:15672 -p 5672:5672 --hostname base-rabbit \
-e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=testpasswrd \
--name base-rabbit rabbitmq:3.12.8-management-alpine
- 测试是否部署成功 http://192.168.6.12:15672
5. 部署MinIO
- 拉取镜像
docker pull minio/minio:RELEASE.2023-11-20T22-40-07Z
- 运行
docker run -d --privileged=true --restart=always -p 9000:9000 -p 9001:9001 \
-v /home/minio:/data -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=testpasswrd \
--name base-minio minio/minio:RELEASE.2023-11-20T22-40-07Z \
server /data --console-address ":9001"
- 测试是否部署成功 http://192.168.6.12:9000
6. 部署Redis
- 拉取镜像
docker pull redis:7.2.3-alpine
- 运行
docker run -d --restart=always -p 6379:6379 -v /home/redis/redis.conf:/etc/redis/redis.conf \
--name base-redis redis:7.2.3-alpine redis-server /etc/redis/redis.conf
- 测试是否部署成功
docker ps -f name=base-redis
7. 部署redisinsight
- 拉取镜像
docker pull redislabs/redisinsight:latest
- 运行
docker run -d --restart=always -p 8101:8001 --name ser-redisinsight redislabs/redisinsight:latest
- 测试是否部署成功 http://192.168.6.12:8101
8. 部署PostgreSQL
- 拉取镜像
docker pull postgres:11.2
- 运行
docker run -d --restart=always -p 5432:5432 -v /home/postgres11:/var/lib/postgresql/data \
--name base-postgres -e POSTGRES_PASSWORD=testpasswrd -e ALLOW_IP_RANGE=0.0.0.0/0 postgres:11.2
- 测试是否部署成功
docker ps -f name=base-postgres
9. 其他镜像
- 拉取自定义java镜像
docker pull registry.cn-hangzhou.aliyuncs.com/yanbase/java:1.8.0
制作镜像的Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/yanbase/alpine:3.15.10
MAINTAINER yan
WORKDIR /home
ADD jre.tar.gz .
COPY apk/glibc-2.29-r0.apk .
COPY apk/glibc-bin-2.29-r0.apk .
COPY apk/glibc-i18n-2.29-r0.apk .
COPY apk/sgerrand.rsa.pub /etc/apk/keys/sgerrand.rsa.pub
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories \
&& apk update && apk upgrade \
&& apk add --no-cache ca-certificates tzdata tree curl tini bash \
&& apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \
&& rm -rf *.apk && rm -rf /var/cache/apk/* \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone \
&& chmod +x /home/jre
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN.UTF-8
ENV JAVA_HOME=/home/jre
ENV PATH=$JAVA_HOME/bin:$PATH
CMD ["sh","-c","/home/ser/run.sh"]
run.sh例子
java -Xms512m -Xmx512m -Dspring.config.additional-location=/home/ser/conf/ \
-jar /home/ser/lib/projectspring-0.0.1.jar
运行例子
docker run -d --restart=always -p 8080:8080 --name projectspring \
-v /home/javaser:/home/ser registry.cn-hangzhou.aliyuncs.com/yanbase/java:1.8.0
- 拉取自定义django镜像
docker pull registry.cn-hangzhou.aliyuncs.com/yanbase/django:4.2.7
制作镜像的Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/yanbase/python:3.10.11
MAINTAINER yan
WORKDIR /home
ENV PYTHONUNBUFFERED 1
COPY pip.conf /root/.pip/pip.conf
COPY requirements.txt .
RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt
RUN pip3 install uwsgi
CMD ["sh","-c","/home/run.sh"]
pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
requirements.txt
django==4.2.7
django-simpleui==2023.8.28
djangorestframework==3.14.0
mysqlclient==2.2.0
run.sh例子
uwsgi --ini /home/uwsgi.ini
uwsgi.ini例子
[uwsgi]
http= 0.0.0.0:8080
chdir=/home/ser
wsgi-file = /home/ser/projectdjango/wsgi.py
processes = 4
threads = 4
buffer-size = 32768
cache = shared:100m
master=True
运行例子
docker run -d --privileged=true --restart=always -p 8080:8080 --name projectdjango \
-v /home/djangoser:/home registry.cn-hangzhou.aliyuncs.com/yanbase/django:4.2.7