王子
docker系列
09/07
本文最后更新于2022年09月07日,已超过836天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
- 内核版本需要3.10以上
- 查看内核版本命令 uname -r
1、更新yum源
[root@localhost ~]# yum -y update
2、安装依赖包
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
3、设置docker的yum源
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 官方
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 阿里云
4、安装Docker
[root@localhost ~]# yum -y install docker-ce docker-ce-cli containerd.io
5、Docker服务启动、重启、停止及状态查看
[root@localhost ~]# systemctl start docker # 启动
[root@localhost ~]# systemctl restart docker # 重启
[root@localhost ~]# systemctl status docker # 状态
[root@localhost ~]# systemctl stop docker # 停止
[root@localhost ~]# systemctl enable docker # 设置开机自启
6、验证
[root@localhost ~]# docker version
7、Docker加速器
登录阿里云获取加速地址 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
Linux中配置加速地址
[root@localhost ~]# vim /etc/docker/daemon.json
[root@localhost ~]# systemctl daemon-reload # 重启daemon
[root@localhost ~]# systemctl restart docker # 重启docker
{
"registry-mirrors": ["https://wxvujlxd.mirror.aliyuncs.com"]
}
8、其他
[root@localhost ~]# docker --help # 查看帮助文档
[root@localhost ~]# docker info # 查看概要信息
[root@localhost ~]# docker images # 查看本地镜像
- 修改docker存储路径docker默认存储路径在/var/lib/docker文件夹下,这个目录的空间一般不是很大,因此需要修改存储路径
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
- 增加改参数 ,找到 ExecStart=/usr/bin/dockerd 部分所在的行,大约在第13行,行尾增加参数
--graph /data/docker
- 重新加载配置文件并重启服务
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
9.安装
9.1.docker安装redis
9.1.1.获取redis镜像
docker pull redis
查看镜像来源:
docker search redis
指定版本号:
docker pull redis:4.0.9
9.1.2.查看本地镜像
docker images
9.1.3.然后启动容器,做映射
- ①创建配置文件目录存放redis.conf,文件从官网下载。
- ②创建文件夹,新建配置文件贴入从官网下载的配置文件并修改
mkdir /usr/local/docker/redis # 将配置文件上传到这个文件中
- ③修改启动默认配置(从上至下依次):
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
databases 16 #数据库个数(可选)
dir ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化
9.1.4.docker启动redis命令
docker run -p 6379:6379 --name myredis -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -p 6379:6379 --name myredis -v /home/docker/redis/redis.conf:/etc/redis/redis.conf -v /home/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
docker run -p 6379:6379 --name redis -v /home/docker/redis/redis.conf:/etc/redis/redis.conf -v /home/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
docker run --name myredis -p 6379:6379 -v /home/docker/redis/data:/data -v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --appendonly yes
命令解释说明:
![20190214161018446](D:\笔记文件\图片引用\20190214161018446.png)-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
--name myredis 指定该容器名称,查看和进行操作都比较方便。
-v 挂载目录,规则与端口映射相同。
为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis/redis.conf
--appendonly yes 开启redis 持久化
9.1.5.查看是否运行成功
docker ps #查看运行的容器
查看启动日志
docker logs myredis/27ddba64faa6 (容器名称/id)
9.1.6.docker基本命令:
docker images # 查看所有镜像
docker rmi 镜像name/镜像id # 删除镜像(会提示先停止使用中的容器)
docker ps -a # 查看所有容器
docker logs 容器名称/容器id # 查看容器运行日志
docker stop 容器name/容器id # 停止容器运行
docker start 容器name/容器id # 终止容器后运行
docker restart 容器name/容器id # 容器重启
docker rm 容器name/容器id # 删除容器
9.2docker 安装rabbitmq
9.2.1 获取镜像
docker pull rabbitmq:3-management
9.2.2 启动镜像
docker run -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 --name RabbitMQ --hostname mq1 -p 15672:15672 -p 5672:5672 -d rabbitmq:3-management
9.2.3 启动时的参数说明
* RABBITMQ_DEFAULT_USER=rabbitmq:用户名
* RABBITMQ_DEFAULT_PASS=rabbitmq:密码
* 将来我们去访问MQ或者是登录MQ管理平台,都需要这个账号和密码
* --name RabbitMQ:定义容器名称
* --hostname mq1:定义MQ主机名称
* -p 15672:15672 :映射端口15672------>RabbitMQ管理平台的端口
* -p 5672:5672:映射端口5672------>RabbitMQ消息通信的端口,消息的收发都通过这个端口
* -d:后台运行
* rabbitmq:镜像名称,不加版本号默认为latest版本
9.3docker 安装nginx
9.3.1 安装Nginx镜像
docker pull nginx
9.3.2 创建挂载目录
mkdir /usr/local/docker/nginx #创建项目目录
mkdir /usr/local/docker/nginx/conf #创建配置文件的文件夹
mkdir /usr/local/docker/nginx/www #放项目的地址
9.3.3 启动nginx容器
docker run -p 80:80 --name mynginx -v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/docker/nginx/www:/home/nginx/www -d nginx
docker run -p 80:80 --name mynginx -v /var/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /var/docker/nginx/www:/home/nginx/www -d nginx
9.3.4 nginx.conf配置放入到conf的文件夹中
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
# Vue路由模式为history需添加的配置
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.html?s=$1 last;
break;
}
root /usr/local/docker/nginx/www;
index index.html;
}
# 获取真实IP以及Websocket需添加的配置
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 客户端Body大小限制(文件上传大小限制配置)
client_max_body_size 5m;
error_page 500 502 503 504 404 /50x.html;
location = /50x.html {
root html;
}
}
}
9.3.5 将一个html文件放入到www文件中
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>测试nginx</title>
</head>
<body>
<h2> 测试nginx是否已经开始运行</h2>
</body>
</html>
9.4 Docker安装Nexus搭建Maven私服
9.4.1 拉取镜像
docker pull sonatype/nexus3
9.4.2 创建挂载目录
mkdir -vp /usr/local/docker/nexus-data
9.4.3 启动容器
docker run -d --name nexus3 -p 8081:8081 -v /usr/local/docker/nexus-data:/var/nexus-data --restart always sonatype/nexus3
9.4.4 查询admin的密码
docker exec -it 550dd77a89e1 /bin/bash
vi /nexus-data/admin.password
exit
9.5 Docker安装Nacos
9.5.1 搜索镜像版本
docker search nacos #搜索nacos的镜像
9.5.2 安装镜像
docker pull nacos/nacos-server #获取最新的镜像
9.5.3 创建挂载目录
mkdir -p /usr/local/docker/nacos/logs # 存放日志文件
mkdir -p /usr/local/docker/nacos/init.d #存放配置文件
### 在init.d下新建文件 custom.properties
vim /usr/local/docker/nacos/init.d/custom.properties
management.endpoints.web.exposure.include=* #配置文件中的内容设置为这个
9.5.4 查看镜像
docker images #查看镜像
9.5.5 启动nacos
docker run -d --name mynacos -p 8848:8848 -p 9848:9848 -p 9849:9849 -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /usr/local/docker/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties -v/usr/local/docker/nacos/logs:/home/nacos/logs --restart always nacos/nacos-server
### 8848端口为网页端口,9848,9849为nacos2.0以上必须开放的新端口
9.5.6 关于springboot中的pom.xml的配置文件集成nacos
# java 父工程pom.xml 配置
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR10</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.7.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
</dependencies>
</dependencyManagement>
# java 子工程pom.xml 配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--使用nacos作为注册中心时,必须依赖的包-->
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.1</version>
</dependency>
</dependencies>
9.5.7 关于项目中的配置文件的
spring:
application:
name: based-app-service
cloud:
nacos:
discovery:
ip: ${REGISGE_URL:192.168.1.184}
port: ${REGISGE_PORT:19001}
enabled: true
server-addr: ${NACOS_URL:192.168.1.222:8848}
username: ${USER_NAME:nacos}
password: ${PASSWORD:nacos}
server:
port: 8000
9.6 Docker安装mysql
9.6.1 查看mysql的版本
docker search mysql
9.6.2 拉取mysql的镜像
docker pull mysql:8.0.25
9.6.3 创建载目录
mkdir /usr/local/docker/mysql
mkdir /usr/local/docker/mysql/date #创建放数据卷的文件
mkdir /usr/local/docker/mysql/logs #创建放日志的文件
mkdir /usr/local/docker/mysql/conf #创建放配置的文件
cd /usr/local/docker/mysql/conf #进入到配置文件目录
touch my.cnf #创建配置文件
9.6.4 开始启动mysql
docker run -p 3306:3306 --name mysql -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d -v /usr/local/docker/mysql/logs:/logs -v //usr/local/docker/mysql/date:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yuankai -d mysql:8.0.25
docker run -p 3306:3306 --name mysql -v /home/docker/mysql/conf:/etc/mysql/conf.d -v /home/docker/mysql/logs:/logs -v /home/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yuankai -d mysql:8.0.25
-d: 后台运行容器
-p 将容器的端口映射到本机的端口
-v 将主机目录挂载到容器的目录
-e 设置参数
9.7 Docker安装gogs
9.7.1 在安装gogs之前,已有mysql数据库
1、新建一个【gogs】数据库, utf-8
9.7.2 拉取镜像
docker pull gogs/gogs
9.7.2 启动镜像
docker run -d --name=mygogs -p 10022:22 -p 3000:3000 -v /usr/local/docker/gogs/data:/data gogs/gogs
docker run -d --name=mygogs -p 10022:22 -p 3000:3000 -v /home/docker/gogs/data:/data gogs/gogs --appendonly yes
注意挂载目录的创建
mkdir 文件夹名称
9.7.3 开始访问地址做初始化配置
http://ip:3000
1. 设置数据库
2. 设置域名地址
3. 设置管理账户