文章目录

  • 一、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的特点包括:

  1. 自动化部署和操作:Docker可以通过自动化工具和脚本实现应用程序的部署和操作,使得部署过程更加简单和快速。
  2. 可移植性和隔离性:Docker可以将应用程序及其依赖项打包成一个轻量级的容器,使得应用程序可以在不同的环境中运行,并且可以轻松地在不同的主机之间共享和迁移。
  3. 高效性和灵活性: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

docker根据Dockerfile进行安装 docker指定安装位置_docker

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

docker根据Dockerfile进行安装 docker指定安装位置_Docker_02

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

docker根据Dockerfile进行安装 docker指定安装位置_redis_03

docker根据Dockerfile进行安装 docker指定安装位置_redis_04

3. 部署Nginx

  • 拉取镜像
docker pull nginx:1.25.3-alpine
  • 配置目录

docker根据Dockerfile进行安装 docker指定安装位置_Docker_05

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

docker根据Dockerfile进行安装 docker指定安装位置_redis_06

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

docker根据Dockerfile进行安装 docker指定安装位置_docker_07

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

docker根据Dockerfile进行安装 docker指定安装位置_redis_08

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

docker根据Dockerfile进行安装 docker指定安装位置_redis_09

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

docker根据Dockerfile进行安装 docker指定安装位置_Docker_10

docker根据Dockerfile进行安装 docker指定安装位置_docker_11

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

docker根据Dockerfile进行安装 docker指定安装位置_redis_12

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