Docker容器快速部署配置大全
目录
typroa 主题推荐:
- Orangeheart:喜欢这个字体和标题样式,字体有一点点小,颜色还不错,代码颜色一般
- Drake:喜欢这个的加粗的字体新颖,缺点字体小,代码颜色一般
- Drake lamh77:和上面比字体变大了,加粗普通,代码颜色一般
- Techo:字体好看,其他一般
- Vue dark: vue的夜景模式
- Vue:部分字体一般,其他都还可以
一、基本配置信息
-
阿里云镜像加速器:
https://9p7fv5mn.mirror.aliyuncs.com
-
Kibana管理页面:
http://192.168.145.128:5601/app/kibana
-
检测ElasticSearch是否启动成功:
http://192.168.145.128:9200/
-
我的虚拟机IP地址:
192.168.145.137
-
查看已启动的服务:
systemctl list-units --type=service
-
查看是否设置开机启动:
systemctl list-unit-files | grep docker
-
Docker开机自启动:
systemctl enable docker.service
|systemctl disable docker.service
-
Docker容器开机自启动:
docker update --restart=always 容器名称
-
容器启动时加入参数自启动:
docker run 带参数 --restart=always
-
文中的主机全部代指Linux主机,不是电脑本机
二、基础环境部署
1.设置镜像地址
vim /etc/docker/daemon.json
输入一下内容
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
三、对容器进行操作
进入容器里进行操作
docker exec -it 容器名称 (或者容器ID) /bin/bash
四、Docker基本指令操作
1.镜像操作
- 如果已经启动的项目,则使用update更新:
docker update --restart=always 容器id或name
- 拉去镜像:
docker pull 镜像名称
- 删除镜像:
docker rmi 镜像名称
- 容器自启动:
docker update --restart=always 容器ID
- 容器暂停:
docker stop 容器ID
- 容器删除:
docker rm 容器ID
- 容器重启:
docker restart 容器ID
- 强制关闭容器:
docker kill 容器ID
- 设置docker开机启动:
systemctl enable docker.service
2.Docker操作
-
启动docker服务:
systemctl start docker
-
暂停docker服务:
systemctl stop docker
-
重启docker服务:
systemctl restart docker
-
查看docker状态:
systemctl status docker
-
设置docker开机启动:
systemctl enable docker
-
查看docker概要信息:
docker info
-
查看docker帮助信息:
docker ‐‐help
-
开启docker 服务开机自启动命令:
systemctl enable docker.service
-
关闭docker 服务开机自启动命令:
systemctl disable docker.service
五、MySQL
1.拉取镜像
1.1 MySQL5.7
docker pull mysql:5.7
1.2 MySQL8.0
docker pull mysql:8.0
2.直接引用MySQL5.7
docker run -p 3306:3306 --name mysql5.7 \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
3.直接引用MySQL8.0
docker run -p 3306:3306 --name mysql8 \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root -d mysql:8.0
- 设置开启自启动:
docker update mysql --restart=always
4.参数解析
docker run
-p 3306:3306 #将容器的端口映射到主机(第一个是主机的端口号,第二个是容器的端口号)
--name mysql8 #设置docker容器的名字
-v /mydata/mysql/log:/var/log/mysql #将日志文件挂载到主机,日志文件映射
-v /mydata/mysql/data:/var/lib/mysql #将数据库数据挂载到主机,数据库数据映射(持久化设置)
-v /mydata/mysql/conf:/etc/mysql/conf.d #将数据库配置文件挂载到主机,配置文件映射
-e MYSQL_ROOT_PASSWORD=root #设置root数据库的初始密码
-d mysql:8.0 #使用数据库的版本
六、Tomcat
1.拉取镜像
docker pull tomcat
2.直接引用
docker run --name tomcat -p 8080:8080 -v /mydata/tomcat/webapps:/usr/local/tomcat/webapps -d tomcat
3.参数解析
docker run --name tomcat #设置docker容器的名字
-p 8080:8080 #端口号映射
-v /mydata/tomcat/webapps:/usr/local/tomcat/webapps #部署web的目录映射
-d tomcat #使用tomcat的版本
七、Nginx
1.拉取镜像
docker pull nginx:1.10
2.前置操作:
- 随便启动一个nginx实例,只是为了复制出配置
docker run -p 80:80 --name nginx -d nginx:1.10
- 将容器内的配置文件拷贝到/mydata/nginx/conf/ 下
#创建文件夹操作
mkdir -p /mydata/nginx/html
mkdir -p /mydata/nginx/logs
mkdir -p /mydata/nginx/conf
#拷贝到当前文件夹,拷贝到conf目录下,好结合下面的mv操作,注意有小数点"."
docker container cp nginx:/etc/nginx .
#由于拷贝完成后会在config中存在一个nginx文件夹,所以需要将它的内容移动到conf中
#最终步骤就是把容器中的配置复制到conf目录下
mv /mydata/nginx/conf/nginx/* /mydata/nginx/conf/
#删除nginx文件夹
rm -rf /mydata/nginx/conf/nginx
- 最终结果需要这样:
- 终止原容器:
docker stop nginx
- 删除容器
docker rm nginx
- 创建真正使用的Nginx
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/:/etc/nginx \
-d nginx:1.10
- 设置开机启动Nginx
docker update nginx --restart=always
- 测试:创建“/mydata/nginx/html/index.html”文件,测试是否能够正常访问
echo '<h2>hello nginx!</h2>' >/mydata/nginx/html/index.html
3.直接引用
启动容器
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/:/etc/nginx \
-d nginx:1.10
4.参数解析
docker run -p 80:80 --name nginx #容器名
-v /mydata/nginx/html:/usr/share/nginx/html #挂载html到主机
-v /mydata/nginx/logs:/var/log/nginx #挂载logs日志到主机
-v /mydata/nginx/conf/:/etc/nginx #挂载nginx配置到主机
-d nginx:1.10 #设置容器镜像版本
反向代理的原理:
配置图
八、Redis
1.拉取镜像
docker pull redis
2.前置操作
完成后使用直接引用代码
#创建主机的redis配置文件夹
mkdir -p /mydata/redis/conf
#创建主机的redis配置文件
touch /mydata/redis/conf/redis.conf
3.直接引用
docker run --name redis \
-p 6379:6379 \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes
4.参数解析
docker run --name redis #设置容器名
-p 6379:6379 #端口映射
-v /mydata/redis/data:/data #挂载redis的数据到主机
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf #挂载redis的配置文件到主机
-d redis redis-server #启动服务,容器镜像
/etc/redis/redis.conf --appendonly yes #往容器中的配置文件追加配置信息,设置redis的持久化存储方式
九、Elasticsearch7.4.2
1.拉取镜像
docker pull elasticsearch:7.4.2
2.前置操作
完成这三部才输入直接引用代码
#创建文件夹
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
#创建文件,并往配置文件写值
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
#因为容器报 AccessDeniedException异常 所以要修改权限
chmod -R 777 /mydata/elasticsearch/
3.直接引用
docker run --name elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
4.参数解析
docker run --name elasticsearch #容器名称
-p 9200:9200 #发送http请求给9200端口发送,restAPI往这个端口发送请求
-p 9300:9300 #这个端口是es在分布式集群状态下它们节点间的通信端口
-e "discovery.type=single-node" #设置单节点运行
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" #如果不设置,es会占用全部内存
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml #挂载elasticsearch.yml文件到主机
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data #挂载es的数据到主机
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #挂载es的插件到主机
-d elasticsearch:7.4.2 #容器镜像
十、Kibana7.4.2
1.拉取镜像
docker pull kibana:7.4.2
2.直接引用
docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.0.166:9200 \
-p 5601:5601 \
-d kibana:7.4.2
3.参数解析
docker run
--name kibana #容器名称
-e ELASTICSEARCH_HOSTS=http://192.168.0.166:9200 #自己的虚拟机ip地址,映射到主机
-p 5601:5601 #端口映射
-d kibana:7.4.2 #容器镜像
十一、RabbitMQ
1.拉取镜像
docker pull rabbitmq:management
2.直接引用
docker run -d --name rabbit \
--hostname my-rabbit \
-p 15672:15672 -p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=center \
-e RABBITMQ_DEFAULT_PASS=123qwe \
-e RABBITMQ_DEFAULT_VHOST=center \
rabbitmq:management
3.参数解析
docker run -d --hostname my-rabbit --name rabbit #hostname和容器名设置
-p 15672:15672 #web端映射地址
-p 5672:5672 #restAPI请求地址
-e RABBITMQ_DEFAULT_USER=center #设置rabbitmq用户名
-e RABBITMQ_DEFAULT_PASS=123qwe #设置rabbitmq密码
-e RABBITMQ_DEFAULT_VHOST=center #设置rabbitmq的vhost
rabbitmq:management #设置容器版本
- 账户:center
- 密码:123qwe
- v-host: center
- 15672:控制台端口号
- 5672:应用访问端口号
- 管理web 的端口:http://ip:15672
附录:Ubuntu的安装方式
第一种方法:从Ubuntu的仓库直接下载安装:
安装比较简单,这种安装的Docker不是最新版本,不过对于学习够用了,依次执行下面命令进行安装。
$ sudo apt install docker.io
$ sudo systemctl start docker
$ sudo systemctl enable docker
查看是否安装成功
$ docker -v
Docker version 17.12.1-ce, build 7390fc6
第二种方法:从Docker仓库下载安装:
这种安装方式首先要保证Ubuntu服务器能够访问Docker仓库地址:
https://download.docker.com/linux/ubuntu,如果能够访问,按照下面的操作步骤进行安装。
1.由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
sudo apt-get remove docker docker-engine docker-ce docker.io
2、更新apt包索引
sudo apt update
3、安装下载包,可以使apt可以通过HTTPS使用存储库(repository)
sudo apt install apt-transport-https ca-certificates curl software-properties-common
4、添加Docker官方的GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
5.在/etc/apt/sources.list.d/docker.list文件中添加下面内容
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
也可以选以下命令方式来设置stable存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
6.再更新一下apt包索引
sudo apt update
7.安装docker-ce
sudo apt install docker-ce
8.查看是否安装成功:
docker –version
------------------
提示:当docker 无法卸载的时候,可以试试以下命令(原因:docker下载的数据源比较对,版本也多,所以很难卸载干净)
1. sudo docker -v
2. sudo apt-get remove docker
3. sudo apt-get remove --auto-remove docker
4. sudo apt-get remove --purge lxc-docker
5. sudo apt-get autoremove --purge