Docker使用手册
一、Docker简介
Docker 是基于Go语言实现的开源容器项目。利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化(通俗解释:Docker内嵌极小型系统,例如Linux只有5M多,windows也是)。它是内核级的虚拟化。期望达到使项目运行环境“一次封装,到处运行的目的”。
在Docker里面可以设置使用Windows还是Linux系统,默认是用Linux系统,基于Ubuntu的,只有5M多,包含了最基本功能。
利用docker创建的运行环境叫做docker容器,容器是通过docker镜像创建的,docker镜像文件可以放在私有仓库中也可以放在共有仓库中。
官网地址:https://www.docker.com
DockerFile指令
FROM # 基础镜像,依赖于谁
MAINTAINER # 作者:姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 添加,可以添加其他镜像
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露的端口
CMD # 指定这个容器启动的时候需要运行的命令,最后一个才会生效
ENTRYPOINT # 指定这个容器启动的时候需要运行的命令,可以追加
ONBUILD # 当dockerfile被构建的时候触发的指令
COPY # 类似ADD,讲文件拷贝到镜像中
ENV # 构建的时候设置环境变量
ARG # 创建镜像过程中使用的变量
LABEL # 为生成的镜像添加元数据标签信息
STOPSIGNAL # 退出的信号值
HEALTHCHECK # 配置所启动容器如何进行健康检查
SHELL # 指定默认shell类型
二、Linux系统中Docker 安装与启动
1.安装
1.1.下载docker-ce repo
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
1.2. 安装依赖
yum install -y https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
1.3. 安装docker-ce
yum install -y docker-ce
2.启动
2.1. 启动命令
systemctl start docker
2.2. 查看Docker状态
docker info
结果如下:
3.镜像加速器配置
默认情况下Docker从Docker Hub上下载镜像资源,但速度很慢,可以通过配置国内的镜像加速器来解决。
3.1. 使用阿里云镜像
3.2. 进入容器镜像服务
3.3. 进入管理控制台
3.4. 进入镜像加速器
3.5. 选择对应的OS并配置
3.6. 验证镜像加速器是否配置成功
通过docker info命令验证镜像加速器配置,结果如下:
三、安装redis
1.获取redis镜像
docker pull redis:6.0.5
2.查看本地镜像
docker images
3.从官网获取redis.config配置文件
# 进入文件夹
cd /local/docker
wget http://download.redis.io/redis-stable/redis.conf //下载redis配置文件
vim redis.conf //修改配置文件
1.注释bind 127.0.0.1。这里限制redis只能本地访问,注释掉之后使redis可以外部访问;
2.protected-mode yes 修改为 protected-mode no。默认yes,开启保护模式,限制仅本地访问,改为no之后使redis可以外部访问;
3.daemonize no 。默认no,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。 改为yes意为以守护进程方式启动,该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程,如果改为yes会使以配置文件方式启动redis的方式失败。
4.requirepass pwd。这里的pwd是自己设置的密码,可以不开启,不开启表示无需密码即可连接。
5.databases 16。默认数据库个数16,可以不修改。
6.appendonly no。默认 no,表示不开启aof方式持久化,改为appendonly yes表示开启aof,可以不修改该配置。
文件夹如下:
4. 启动redis
docker run \
--name redis \
-p 6379:6379 \
--restart unless-stopped \
-v /local/docker/redis/data:/data \
-v /local/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf \
5. 查看redis运行是否成功
#查看redis容器运行
docker ps |grep redis
#进入redis容器中
docker exec -it redis /bin/bash
#使用redis客户端
redis-cli
#设置密码
config set requirepass 123456
四、安装mysql
1. 拉取镜像
docker pull mysql:8.0.16
2. 创建数据目录和配置文件
[root@king docker]# mkdir -p mysql
[root@king docker]# cd mysql/
[root@king mysql]# mkdir data
[root@king mysql]# mkdir conf
[root@king mysql]# chmod -R 755 /local/docker/mysql
[root@king mysql]# cd conf/
[root@king conf]# vim my.cnf
添加以下内容到上述创建的配置文件中
[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4
[mysqld]
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
#datadir = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
datadir = /local/docker/mysql/data
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
3.启动创建容器
docker run --restart=unless-stopped -d --name mysql \
-v /local/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /local/docker/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.16
查看容器启动情况
docker info
4.修改mysql密码以及可访问主机
- 进入mysql容器内部
[root@king conf]# docker exec -it mysql /bin/bash
连接mysql
mysql -uroot -p
使用mysql库
use mysql
修改访问主机以及密码等,设置为所有主机可访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新
flush privileges
五、安装JDK8
yum安装
yum install java-1.8.0-openjdk* -y
执行过这条命令无需配置,直接可以使用。
1.上传文件
将jdk文件上传到/local/upload
2.解压压缩包
tar zxf jdk-8u311-linux-x64.tar.gz
3.移动文件
mv jdk1.8.0_311 /local/soft/jdk
4.配置环境变量
在linux中/etc/profile此文件为环境变量配置文件。
#export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/local/soft/jdk
export PATH=$JAVA_HOME/bin:$PATH
#进入etc文件夹并且编译profile文件
cd /etc && vim profile
5.解析文件
不解析,必须通过重启才能生效。只要解析不需要重启了
source /etc/profile
6.查看配置是否成功
java -version
六、安装solr
1.上传文件
上传压缩包solr-8.2.0.tgz到/local/upload中。
2.解压
[root@king upload]# tar zxf solr-8.2.0.tgz
3.移动文件
mv solr-8.2.0 /local/soft/solr
4.Solr常用目录简介
bin目录:可执行文件所在目录。
dist目录:Solr对外提供的核心、扩展、插件等代码jar文件。
server目录:Solr搜索应用服务器核心目录。
server/solr:Solr的索引库所在位置
server/solr-webapp:Solr的WAR核心应用
server/etc:Solr的核心配置
5.修改启动参数
修改启动参数,否则启动时报警告。提示设置SOLR_ULIMIT_CHECKS=false
[root@king solr]# cd bin && vim solr.in.sh
6.启动solr
Solr内嵌Jetty,直接启动即可。默认监听8983端口。
Solr默认不推荐root账户启动,如果是root账户启动需要添加-force参数。
./solr start -force
启动成功如下图所示:
==注意:阿里云服务器8983端口放行==
7.可视化管理界面
在浏览器输入ip:8983就可以打开solr可视化管理页面了
左侧有5个菜单。分别是:
(1)Dashboard:面板显示Solr的总体信息。
(2)Logging:日志
(3)Core Admin:Solr的核心。类似于数据的Database
(4)Java Perperties:所有Java相关属性。
(5)Thread Dump:线程相关信息。
(6)如果有Core,将显示在此处。
8.创建核心(索引库)
==Solr安装完成后默认是没有核心的。需要手动配置。==
需要在solr/server/solr下新建文件夹,并给定配置文件,否则无法建立。
8.1 新建目录
在 /local/soft/solr/server/solr中新建自定义名称目录。这里我创建了名为blog的目录
#进入对应文件夹
[root@king ~]# cd /local/soft/solr/server/solr
#创建blog文件夹
[root@king solr]# mkdir blog
8.2 复制配置文件
在configsets里面包含了_default和sample_techproducts_configs。里面都是配置文件示例。_default属于默认配置,较纯净。sample_techproducts_configs是带有了一些配置示例。
[root@king solr]# cp -r configsets/_default/conf/ blog/
8.3 创建 core
在可视化管理界面填写如下信息
最后点击Add Core按钮创建
创建成功结果如下:
9.安装中文分词器
9.1上传文件
上传ik-analyzer-8.2.0.jar到/local/upload文件夹下
9.2复制文件
将ik-analyzer-8.2.0.jar文件复制/local/soft/solr/server/solr-webapp/webapp/WEB-INF/lib文件夹下
[root@king upload]# cp ik-analyzer-8.2.0.jar /local/soft/solr/server/solr-webapp/webapp/WEB-INF/lib/
9.3修改配置文件
修改managed-schema文件
[root@king /]# vim /local/soft/solr/server/solr/blog/conf/managed-schema
<fieldType name="text_zh_cn" class="solr.TextField">
<analyzer>
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!--自定义字段,类似于设计数据表一样-->
<!--ID-->
<!--ID 已经在前面有了-->
<!--浏览量-->
<field name="blog_view_count" type="pint" indexed="true" stored="true" required="true" multiValued="false" />
<!--标题-->
<field name="blog_title" type="text_zh_cn" indexed="true" stored="true" required="true" multiValued="false" />
<!--主题-->
<field name="blog_summary" type="text_zh_cn" indexed="true" stored="true" required="true" multiValued="false" />
<!--创建时间-->
<field name="blog_create_time" type="pdate" indexed="true" stored="true" required="true" multiValued="false" />
<!--标签-->
<field name="blog_labels" type="pstring" indexed="true" stored="true" required="true" multiValued="false" />
<!--文章链接-->
<field name="blog_url" type="pstring" indexed="true" stored="true" required="true" multiValued="false" />
<!--分类ID-->
<field name="blog_category_id" type="pstring" indexed="true" stored="true" required="true" multiValued="false" />
<!--搜索item-->
<field name="search_item" type="text_zh_cn" indexed="true" stored="true" required="true" multiValued="true" />
<copyField source="blog_title" dest="search_item"/>
<copyField source="blog_summary" dest="search_item"/>
<copyField source="blog_labels" dest="search_item"/>
排版:Esc 退出编辑状态下:gg=G
9.4 重启
[root@king /]# cd /local/soft/solr/bin/
[root@king bin]# ./solr stop -all
[root@king bin]# ./solr start -force
9.5 验证
图片来源于:https://upload-images.jianshu.io/upload_images/10139744-19785d5c0484474c.jpg
9.6 删除全部数据
1)documents type 选择 XML
2)documents 输入下面语句
<delete><query>*:*</query></delete> <commit/>
10 使用DockerFile构建solr镜像
10.1 创建solr目录
mkdir solr
10.2 新建docker-compose.yml文件
version: '3.1'
services:
solr:
build: solrWithIKAnalyzer
restart: always
container_name: blog_solr
ports:
- 8983:8983
10.3 将solrWithIKAnalyzer文件夹下的内容全部放入solr文件夹下
solrWithIKAnalyzer文件夹结构如下
10.4 solrWithIKAnalyzer目录下新建Dockerfile文件
#新建Dockerfile文件
vim Dockerfile
#填写如下内容
MAINTAINER king
# 创建 Core,切换目录
WORKDIR /opt/solr/server/solr
# 创建目录
RUN mkdir blog_core
# 切换目录
WORKDIR /opt/solr/server/solr/blog_core
# 把这个Core名称添加到配置文件中,这样在前端就可以看到了
RUN echo 'name=blog_core' > core.properties
# 从模版中复制一份出来配置文件出来
RUN cp -r /opt/solr/server/solr/configsets/sample_techproducts_configs/conf/ .
# 进入到容器的lib文件夹
WORKDIR /opt/solr/server/solr-webapp/webapp/WEB-INF/lib
# 中文分词器
RUN cp -r /opt/solr/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-5.5.5.jar .
# 复制两个jar包进去
ADD ik-analyzer-solr5-5.x.jar .
ADD solr-analyzer-ik-5.1.0.jar .
WORKDIR /opt/solr/server/solr-webapp/webapp/WEB-INF
# 复制字典
ADD ext.dic .
ADD stopword.dic .
# 配置扩展字典的配置文件
ADD IKAnalyzer.cfg.xml .
# 增加分词配置
COPY managed-schema /opt/solr/server/solr/blog_core/conf
WORKDIR /opt/solr
10.5 在solrWithIKAnalyzer目录下构建
docker build -t blog_solr:1.0 .
#注意后面有个小点不要忽视
10.6 在solr目录下使用docker-compose启动容器
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
安装docker-composr
- 从github上下载docker-compose二进制文件安装
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
若是github访问太慢,也可以用daocloud下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
测试安装结果
docker-compose --version
#以后台的方式运行容器。不会在终端上打印运行日志
docker-compose up -d
# 停止运行的容器,但不会删除它们。
docker-compose stop
#停止运行的容器,并且会删除已停止的容器以及已创建的所有网络
docker-compose down
七、minio服务器安装
1.安装
1.1拉取镜像
docker pull minio/minio
1.2创建并启动容器
docker run -d -p 9000:9000 -p 50000:50000 --name minio \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin123456" \
-v /local/docker/minio/data:/data \
-v /local/d/minio/config:/root/.minio \
minio/minio server --console-address ":50000" /data
1.3配置阿里云服务器安全组
2.登录minio服务器管理控制台
2.1创建游客用户
将权限设置为只读
2.3创建Bucket
2.4设置Bucket权限为readwrite
八、MongoDB服务安装
1.拉取镜像
docker pull mongo
2.创建目录
mkdir -p /local/docker/mongo/data
3.修改目录权限
chmod 777/local/docker/mongo/data
4.构建并启动容器
docker run -d --name mongodb -v /local/docker/mongo/data:/data/db -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin --privileged=true mongo:latest
参数说明
-d 后台运行容器–name mongodb 运行容器名
-v /mydata/mongodb/datadb:/data/db 挂载目录
-p 27017:27017:将27017映射到外部端口27017 将容器的27017端口映射到主机的27017端口,27017是和宿主机的通信接口,所有docker内部容器的连接使用27017接口,集群配置需连接容器内部27017端口,故最好保持前后端口一致
-e MONGO_INITDB_ROOT_USERNAME=admin 指定用户名
-e MONGO_INITDB_ROOT_PASSWORD=admin 指定密码
–privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限
5.查看mongodb日志
docker logs mongodb
6.mongodb随 docker 自启动
docker update mongodb --restart=always
注意:这里的 mongodb是容器的名字,不是镜像的名字。
7. 启动|停止|重启
docker start mongodb
docker stop mongodb
docker restart mongodb
注意:这里的 mongodb 是容器的名字,不是镜像的名字。
8.进入mongodb (optional)
docker exec -it mongodb /bin/bash
docker 常用命令
批量启动容器
docker container start $(docker container ls -a -q) 或 docker start $(docker container ls -a -q)
批量停止容器
docker container stop $(docker container ls -a -q) 或 docker stop $(docker container ls -a -q)
批量重启容器
docker container restart $(docker container ls -a -q) 或 docker restart $(docker container ls -a -q)
批量删除容器
docker container rm $(docker container ls -a -q) 或 docker rm ${docker container ls -a -q}
批量杀死容器
docker container kill $(docker container ls -a -q) 或 docker kill ${docker container ls -a -q}
docker查询所有进程
docker ps -a
docker查询正常运行的进程
docker ps
容器重新命名
docker rename 原容器名称 新容器名称
举例: docker rename blissful_hoover solr
微信
支付宝