安装一些必要的系统工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:
sudo yum makecache fast
安装 Docker-ce:
sudo yum -y install docker-ce
启动 Docker 后台服务:
sudo systemctl start docker
查看 Docker 版本号:
docker --version
使用docker命令时如果有Cannot connect to the Docker daemon at tcp://0.0.0.0:2375. Is the docker daemon running?这种情况,可能是没有启动Docker服务成功或者是需要在所有docker
命令前加sudo
,例如 sudo docker images
,不用sudo使用docker方法:
unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps
安装步骤
JDK下载地址
链接:https://pan.baidu.com/s/1eLLSPceIEPf9aSW6TMI63Q
提取码:lki5
tar zxvf jdk-8u181-linux-x64.tar.gz
vim /etc/profile
输入以下
export JAVA_HOME=/root/java/jdk/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
执行命令:
source /etc/profile
java -version
说明
JDK不用docker安装
需要修改JAVA_HOME路径
命令
安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -f docker-compose-single-broker.yml up
说明
下载 https://github.com/wurstmeister/kafka-docker 上传到Linux服务器,
把docker-compose-single-broker.yml中的KAFKA_ADVERTISED_HOST_NAME换成服务器公网IP,修改KAFKA_CREATE_TOPICS
单机版启动方式:
docker-compose -f docker-compose-single-broker.yml up
如果提示内存不够,在docker-compose-single-broker.yml添加KAFKA_JVM_PERFORMANCE_OPTS: " -Xmx256m -Xms256m"
所需资源
docker-compose-single-broker.yml
命令
docker pull redis
docker run -d -p 6380:6379 -v /root/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf
说明
-p 6380:6379:将主机的6380端口映射到容器的6379端口。:6379要和redis.conf中的对应
-v /root/redis.conf:/usr/local/etc/redis/redis.conf:挂载redis.conf。
密码和集群等在redis.conf中配置
所需资源
redis.conf
补充
配置集群方式
1.修改主redis的配置文件
bind 0.0.0.0
requirepass 123456
2.修改从redis的配置文件
bind 0.0.0.0
slaveof 192.168.1.225 6379
masterauth 123456
requirepass 123456
3.启动redis服务
先启动主redis,在启动从redis
命令
docker pull mongo
docker run --name mongodb -v /root/mongo:/data/db -p 27017:27017 -d mongo --auth
docker exec -it mongodb mongo admin
use admin
db.createUser({
user:"admin",
pwd:"admin",
roles:[{
role:"root",
db:"admin"
}]
})
db.auth("admin", "admin")
use testdb
db.createUser({
user:"developer",
pwd:"developer2020",
roles:[{
role:"dbAdmin",
db:"testdb"
},{
role:"readWrite",
db:"testdb"
}]
})
db.auth("developer", "developer2020")
按ctrl+D退出
说明
-v /root/mongo:/data/db 将主机文件夹mongo挂载到容器db文件夹,mongo文件夹用来存放数据
-p 27017:27017 将主机端口27017映射到容器端口27017
--auth 开启权限验证
连接:mongodb://developer:[email protected]:27017/testdb
创建了管理员用户admin并用admin创建了用户developer,赋予developer对数据库testdb的管理和读写权限
补充
MongoDB用户权限
内建的角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
命令
docker pull mysql:5.7
docker run -p 3318:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
说明
-p 3318:3306:将主机的3318端口映射到容器的3306端口。
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码。
命令
docker pull nginx
docker run -p 8085:80 --name mynginx -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /usr/dist:/usr/dist nginx
说明
-p 8085:80 将主机8085端口挂载到容器80端口,80端口要和default.conf的端口对应
-v /root/nginx/nginx.conf:/etc/nginx/nginx.conf 挂载nginx.conf
-v /root/nginx/default.conf:/etc/nginx/conf.d/default.conf 挂载default.conf
-v /usr/dist:/usr/dist 挂载映射目录,:后面的/usr/dist要和default.conf里的root路径对应
所需资源
default.conf
nginx.conf
命令
mkdir /opt/esdata
chown -R 1000:1000 /opt/esdata
docker pull elasticsearch:6.8.0
docker run --name=myes -d -p 9200:9200 -p 9300:9300 -v /root/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/esdata:/usr/share/elasticsearch/data -e "discovery.type=single-node" -e ES_JAVA_OPTS='-Xms100m -Xmx100m' elasticsearch:6.8.0
说明
-p 9200:9200 将主机9200的http端口挂载到容器9200的http端口
-p 9300:9300 将主机9300的tcp端口挂载到容器9300的tcp端口
-v /root/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 挂载配置文件
-v /opt/data:/usr/share/elasticsearch/data 挂载数据目录
-e "discovery.type=single-node" 单节点启动
-e ES_JAVA_OPTS='-Xms100m -Xmx100m' 根据情况跳转Java内存大小
如果出现maxvirtual memory areas vm.max_map_count [65530] istoo low, increase to at least [262144] 解决方式:
vim /etc/sysctl.conf
vm.max_map_count=655300
sysctl -p
所需资源
elasticsearch.yml
-
查看所有镜像
docker images
-
查看正在运行的容器
docker ps
-
查看所有的容器
docker ps -a
-
容器镜像删除
-
停止所有的container,这样才能够删除其中的images:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
-
查看当前有些什么images
docker images
-
删除images,通过image的id来指定删除谁
docker rmi <image id>
-
想要删除untagged images,也就是那些id为的image的话可以用
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
-
要删除全部image的话
docker rmi $(docker images -q)
- 进入容器
docker exec -it <容器ID> /bin/bash
sudo yum remove docker-ce
sudo rm -rf /var/lib/docker
如若没有完全卸载干净尝试以下方法:
1.查询安装过的包
yum list installed | grep docker
docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo
2.删除安装的软件包
yum -y remove docker-engine.x86_64
https://www.runoob.com/docker/docker-tutorial.html
https://github.com/veggiemonk/awesome-docker
http://www.docker.org.cn/
https://docs.docker.com/get-started/
https://www.qikqiak.com/k8s-book/docs/13.Dockerfile%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.html
https://www.cnblogs.com/dazhoushuoceshi/p/7066041.html