王子
docker系列
09/07
本文最后更新于2022年09月07日,已超过1010天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
- 内核版本需要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
命令解释说明:
-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. 设置管理账户
Superb forum posts With thanks.
casino en ligne
Lovely material. Many thanks!
casino en ligne France
Incredible tons of awesome facts.
meilleur casino en ligne
Thanks. Good information!
casino en ligne francais
Thanks, I enjoy this.
casino en ligne
Awesome write ups. Appreciate it.
casino en ligne
Reliable information, Many thanks!
casino en ligne
Wonderful facts. Thanks a lot.
casino en ligne
Superb forum posts. Thanks.
casino en ligne
Amazing quite a lot of fantastic tips!
casino en ligne