docker 部署命令

143 阅读3分钟

安装docker

  1. 首先卸载已经安装的docker(CenteOS)
 sudo yum remove docker \
                 docker-client \
                 docker-client-latest \
                 docker-common \
                 docker-latest \
                 docker-latest-logrotate \
                 docker-logrotate \
                 docker-engine
  1. 安装yum工具包
 sudo yum install -y yum-utils

3.配置仓库源

# 1. 默认使用国外源,非常非常非常慢!
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 2. 推荐用国内源,丝滑!
$ sudo yum-config-manager \
    --add-repo \
    https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

  1. 安装Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io
  1. 启动Docker
  • 非root权限
#设置Docker守护进程在系统启动时自动启动
sudo systemctl enable docker
#启动Docker
sudo systemctl start docker
  • root权限
#设置Docker守护进程在系统启动时自动启动
systemctl enable docker
#启动Docker
systemctl start docker
  1. 验证安装是否成功
docker --version

部署MySQL

新建宿主机映射文件夹

mkdir -p /home/mysql/init # Mysql初始化数据
mkdir -p /home/mysql/log # Mysql日志
mkdir -p /home/mysql/conf # MySQL配置

新建MySQL配置文件mysqld.cnf

[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

拉取MySQL镜像

docker pull mysql:5.7

运行MySQL镜像

docker run --name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /home/mysql/init:/docker-entrypoint-initdb.d \
-d mysql:5.7

当前MySQL镜像启动不能初始化数据文件,所以手动执行MySQL初始化文件

#进入镜像内部
docker exec -it 镜像名称 /bin/bash
#输入MySQL账户和密码
mysql -u root -p
#手动运行init.sql文件
source /docker-entrypoint-initdb.d/自己的sql文件名称.sql;

部署nginx

新建宿主机映射文件夹

mkdir -p /home/nginx/conf # nginx配置 
mkdir -p /home/nginx/log # nginx日志 
mkdir -p /home/nginx/html # nginx html页面

运行一个nginx镜像

docker run --name nginx -p 9001:80 -d nginx

拷贝nginx容器内的文件到宿主机

# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

运行nginx镜像

docker run --name nginx \
-p 9001:90 \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx//conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
d nginx:latest

部署redis

直接执行docker rm nginx或者以容器id方式关闭容器

找到nginx对应的容器id

docker ps -a

关闭该容器

docker stop nginx

删除该容器

docker rm nginx

删除正在运行的nginx容器

docker rm -f nginx

docker run \
-p 18080:18080 \
--name nginx \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /root/nginx/log:/var/log/nginx \
-v /root/nginx/html:/usr/share/nginx/html \
--network myNet \
-d nginx:latest

redis 本次执行命令:

docker run --name redis -p 6379:6379 \
-v /root/redis/data:/data \
-v /root/redis/conf/redis.conf:/etc/redis/redis.conf \
--network myNet \
-d redis:bullseye redis-server /etc/redis/redis.conf 
docker cp redis:/etc/redis/redis.conf /root/redis/conf/redis.conf

#文件打包 docker build -t sky-server . #文件创建并运行 docker run -d --name sky-server --network myNet -p 8080:8080 sky-server:latest

开启日志查看

docker logs -f sky-server