loading...
服务及环境变量配置(Docker版)
Published in:2023-08-18 | category: Docker

0x00前言

最近服务器在做迁移,有的服务需要重新安装,有些命令太久没使用也忘掉些许,每次迁移都得重新查百度,这样比较麻烦,所以还是花点时间把平时常见的服务安装的流程总结一下,本次总结的是Docker版本的服务安装过

0x01Docker安装及配置

1、安装Docker

在Windows上可直接访问Dockerhub下载,一般不使用Windows环境

在Linux上,以Centos7为例

先更新下yum

1
2
3
yum -y update	//这里要注意,在生产环境下慎重,用于学习可随意
//yum -y update:升级所有包同时也升级软件和系统内核;​
//yum -y upgrade:只升级所有包,不升级软件和系统内核

移除曾经安装过的Docker版本

1
yum remove docker  docker-common docker-selinux docker-engine

安装Docker所需依赖

1
yum install -y yum-utils device-mapper-persistent-data lvm2

查看可安装的Docker版本

1
yum list docker-ce --showduplicates | sort -r

安装Docker所选版本

1
yum -y install docker-ce-18.03.1.ce

启动Docker设置开机自启

1
2
systemctl start docker
systemctl enable docker

2、镜像源

一般来说,docker的镜像源是国外的,使用国内网络下载镜像速度会比较慢,所以首先要更改下镜像源,这里有国内的比较常用的镜像源

1
2
3
4
5
6
7
8
9
10
网易:http://hub-mirror.c.163.com
中科大镜像地址:http://mirrors.ustc.edu.cn/
中科大github地址:https://github.com/ustclug/mirrorrequest
Azure中国镜像地址:http://mirror.azure.cn/
Azure中国github地址:https://github.com/Azure/container-service-for-azure-china
DockerHub镜像仓库: https://hub.docker.com/
阿里云镜像仓库: https://cr.console.aliyun.com
google镜像仓库: https://console.cloud.google.com/gcr/images/google-containers/GLOBAL (如果你本地可以翻墙的话是可以连上去的 )
coreos镜像仓库: https://quay.io/repository/
RedHat镜像仓库: https://access.redhat.com/containers

修改镜像源

vi /etc/docker/daemon.json文件,若没有则创建该文件,添加以下内容:

1
2
3
{
"registry-mirrors": ["https://ckdhnbk9.mirror.aliyuncs.com"] //这里可修改自己的镜像源
}

3、重启Docker

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

4、查看Docker服务状态

1
systyemctl status docker

5、Docker-compose的配置

1
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
1
sudo chmod +x /usr/local/bin/docker-compose
1
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
1
2
docker-compose version
Docker Compose version v2.28.0

0x02Mysql

1、拉取mysql镜像

1
docker pull mysql

或者查询可安装的Mysql版本

1
docker search mysql

2、查看mysql镜像

1
docker images -a 

3、启动mysql容器

1
docker run -p 3306:3306 --name mysql --restart=always --network common-network -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

说明:

-p 指定在容器内部的端口 以及对外暴露的端口

–name 设置服务器名称

–restart 是否运行跟随docker一起启动

–network 容器之间内部通信网络

-v 挂载命令 将容器中的配置挂载在外部来方便修改

-d 指定版本

-e 修改配置

-e 指定root的密码

4、进入到mysql容器中

1
docker exec -it mysql /bin/bash   //mysql可以改成容器id

5、修改mysql配置

1
cd /mydata/mysql/conf

6、创建my.cnf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

init_connect='SET collation_connection = utf8_unicode_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

collation-server=utf8_unicode_ci

skip-character-set-client-handshake

skip-name-resolve

7.重启mysql服务 使其配置生效

1
docker restart mysql

8、授权远程访问

进入mysql

1
mysql -u root -p

进入mysql库中

1
use mysql;

查询库中的账号和允许连接的host

1
select user,host from user;

给root 用户授权所有的权限以及能访问的ip

1
grant all privileges on *.* to root@"ip" identified by "root";

刷新权限生效

1
flush privileges;

0x03Jdk

1、查看可用jdk版本

1
docker search jdk

2、拉取jdk镜像

1
docker pull jdk

3、查看jdk镜像是否下载

1
docker images 

4、启动java容器

1
docker run -d -it --name java java

说明:

run:启动一个镜像容器

-d:指定容器运行于后台

-it:-i 和 -t 的缩写;

  • -i:以交互模式运行容器,通常与 -t 同时使用
  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用

–name:指定容器名字,后续可以通过名字进行容器管理

0x04Python3

Linux默认安装了Python2,若需要Python3则另外单独安装

1、拉取python3镜像

1
docker pull python:3.7

2、挂载目录

其作用是可借容器环境运行宿主机的脚本

-v /opt/python_home:/home/python_home

就是将主机上的/opt/python_home目录挂载到容器内/home/python_home目录里

3、运行python容器

1
docker run -itd --name python37 -v /opt/python_home:/home/python_home python:3.7

4、进入python容器

1
docker exec -it python37 /bin/bash

0x05Redis

1、拉取最新redis镜像

1
docker pull redis:latest

2、准备redis.conf文件

可以到redis的官网下载压缩包,拿出里面的redis.conf文件

http://www.redis.cn/

3、配置文件

bind 127.0.0.1 注释掉这部分,使redis可以外部访问

daemonize no 用守护线程的方式启动

requirepass 你的密码 给redis设置密码

appendonly yes redis持久化  默认是no

tcp-keepalive 300 防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300

4、选择从本地挂载到redis容器内的路径

在本地某个位置创建文件夹,把配置文件存放到文件夹里

我这里选择/usr/local/redis

5、启动容器

1
docker run -itd -p 6379:6379 --name redis -v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

说明:

-p 6379:6379 把容器内的6379端口映射到宿主机6379端口

-v /data/redis/redis.conf:/etc/redis/redis.conf 把宿主机配置好的redis.conf放到容器内的这个位置中

-v /data/redis/data:/data 把redis持久化的数据在宿主机内显示,做数据备份

redis-server /etc/redis/redis.conf 这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动

–appendonly yes redis启动后数据持久化

0x06Node

1、拉取最新镜像

1
docker pull node

2、运行容器

1
docker run -it --name node node

3、其他

其中npm命令也会跟随镜像一起安装,命令行npm -version查询npm版本,若返回版本号则安装成功

0x07补充

以后有其余常见服务会持续记录到本文章,对学习服务的一个总结,还有一份Windows和Linux的主机版的有空再写一下

Prev:
服务及环境变量配置(主机版)
Next:
shiro反序列化漏洞复现
catalog
catalog