Docker(Jar:Mysql:Redis)
Docker 要求 CentOS 系统的内核版本高于 3.10 ,使用Docker的前提条件来验证你的CentOS 版本是否支持 Docker 。可参考:https://www.runoob.com/docker/centos-docker-install.html
安装:
查看你当前的内核版本:
[root@localhost /]# uname -r
更新yum包:
[root@localhost /]# sudo yum update
卸载旧版本(如果安装过旧版本的话):
[root@localhost /]# sudo yum remove docker docker-common docker-selinux docker-engine
[root@localhost /]# sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
安装所需要的必要系统工具包:
[root@localhost /]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源:
[root@localhost /]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
查看所有仓库中所有docker版本:
[root@localhost /]# yum list docker-ce --showduplicates | sort -r
安装Docker-ce:
[root@localhost /]# sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版
[root@localhost /]# sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
启动并加入开机启动:
[root@localhost /]# sudo systemctl start docker
[root@localhost /]# sudo systemctl enable docker
验证安装是否成功:
[root@localhost /]# docker version
查看docker启动状态:
[root@localhost /]# systemctl status docker
还有一种指定Docker安装目录的安装方式,参考原文(安装到指定目录数据和日志更方便查询):https://blog.51cto.com/u_15444123/4713726
修改Docker配置文件(刚拿到的裸机默认没有),直接编辑或修改Docker配置文件:
#编辑docker配置文件 [root@localhost /]# vim /etc/docker/daemon.json #配置文件内容:graph代表docker指定的安装目录 { "registry-mirrors": ["http://hub-mirror.c.163.com"], "graph":"/opt/docker" }
#安装docker [root@localhost /]# sudo yum -y install docker-ce #启动docker [root@localhost /]# sudo systemctl start docker
在配置目录“/opt/docker”中可以查看到Docker安装后的相关数据文件,还有另一种使用软链接方式关联Docker目录。参考的原文博客中存在。
命令:
[root@localhost /]# docker ps #查找需要的服务 [root@localhost /]# docker logs -f 加上CONTAINER ID #查看相应的日志
[root@localhost /]# docker logs --since 30m CONTAINER_ID #查看最近30分钟日志
[root@localhost /]# docker ps -a #查看所有容器
[root@localhost /]# docker rm 容器id #删除容器
[root@localhost /]# docker images #查看镜像
[root@localhost /]# docker rmi 镜像名称 #删除镜像
[root@localhost /]# docker stop 容器ID或容器名 #停止容器
[root@localhost /]# docker kill 容器ID或容器名 #直接关闭容器
[root@localhost /]# docker restart 容器ID或容器名 #不管容器是否启动,直接重启容器
[root@localhost /]# docker exec -it 容器ID /bin/bash #进入容器
[root@localhost /]# exit #退出容器
[root@localhost /]# docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' xxxid #(容器id)获取容器内部的软连接的ip
Idea设置Docker远程插件
没有插件就先安装docker插件。
连接Docker
如果显示不成功,报异常如下:
那么需要docker开启远程连接功能。
[root@localhost /]# vim /lib/systemd/system/docker.service #编辑这个文件
[root@localhost /]# ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock #修改内容
[root@localhost /]# systemctl daemon-reload #重新启动docker
[root@localhost /]# systemctl restart docker
Docker部署Jar包:
项目打成jar包,上传服务器,同级目录下建一个Dockerfile文件
[root@localhost /]# vi Dockerfile
FROM java:8 #拉取一个jdk为1.8的docker image
MAINTAINER L #作者是L
ADD app-0.0.1-SNAPSHOT.jar app.jar #上传的jar包(app-0.0.1-SNAPSHOT.jar),替换为jar包的名称(容器中运行的是app.jar)
EXPOSE 8088 #jar包在容器中运行的端口号(项目启动的端口号)
ENTRYPOINT ["java","-jar","app.jar"] #容器启动之后执行的命令:java -jar app.jar 即启动jar
构建镜像:
[root@localhost /]# docker build -t appimage . # . 表示 Dockerfile 文件在当前目录下,appimage 是镜像名称
运行容器:
[root@localhost /]# docker run -d --name app -p 8091:8088 appimage
注释:
-d #后台运行容器,并返回容器ID; --name appimage #appimage镜像名称; -p #端口映射,格式为:主机(宿主)端口:容器端口。意思是第一个访问服务器的端口,第二个是项目端口; app #容器名称
上述更新服务每次还需要重新构建镜像,比较麻烦,另一种更新不需要重新构建镜像的启动方式,同样同级目录下创建一个Dockerfile文件:
FROM java:8
EXPOSE 8001
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/data/api-0.1.jar"]
注意:“/data/api-0.1.jar”,在这里我们指定了运行容器里/data目录下的api-0.1.jar文件
[root@localhost /]# docker build -t api_images . #构建当前目录下Dockerfile的镜像
[root@localhost /]# docker run --name api_name -it -v /opt/api:/data -d -p 8001:8080 api_images #启动时候指定关联目录
Jar包放到宿主机的“/opt/api”目录下(Dockerfile文件同样在/opt/api目录下,与Jar包同级目录)。通过挂载到容器里"/data"目录下,更新项目只需要替换jar包直接重启就行(还有一种配置脚本的方式实现更新服务不需要重新创建镜像,在下文链接中。
原文参考地址:https://www.it610.com/article/1283322891751931904.htm
Docker安装Redis:
[root@localhost /]# docker pull redis:latest #拉取官方的最新版本的镜像
[root@localhost /]# docker images #查看是否已安装了 redis
[root@localhost /]# docker run -itd --name redis-test -p 6379:6379 redis #运行 redis 容器
[root@localhost /]# docker exec -it redis-test /bin/bash #通过 redis-cli 连接测试使用 redis 服务
根据宿主机中redis.conf配置文件使用Dockre去启动Redis,如下:
- 从官网获取 redis.conf 配置文件。
- 修改默认配置文件:
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no #默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
dir ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化(可选) - docker 启动 redis 命令:
[root@localhost /]# docker run -p 6379:6379 --name redis
-v /usr/local/docker/redis.conf:/etc/redis/redis.conf
-v /usr/local/docker/data:/data
-d redis
redis-server /etc/redis/redis.conf
--appendonly yes
或:
[root@localhost /]# docker run -p 6379:6379 --name redis
-v $PWD/redis.conf:/etc/redis/redis.conf
-v $PWD/data:/data
-d redis
redis-server /etc/redis/redis.conf
--appendonly yes - 命令解释说明:
-p 6379:6379 #端口映射:前表示主机部分,:后表示容器部分。
--name myredis #指定该容器名称,查看和进行操作都比较方便。
-v #挂载目录,规则与端口映射相同。
-d redis #表示后台启动redis
redis-server /etc/redis/redis.conf #以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
appendonly yes #开启redis 持久化
$PWD #当前目录 - 可参考连接:https://cloud.tencent.com/developer/article/1670205
Docker安装Mysql:
[root@localhost /]# docker pull mysql:latest #拉取官方的最新版本的镜像。
[root@localhost /]# docker images #查看是否已安装了 mysql。
[root@localhost /]# docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql #运行 mysql 容器。
注释:
-p 3306:3306 #映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。 MYSQL_ROOT_PASSWORD=123456 #设置 MySQL 服务 root 用户的密码。
[root@localhost /]# docker ps #查看是否安装成功。 [root@localhost /]# sudo docker run -d -p 3306:3306 -v /home/mysql/data:/var/lib/mysql -e MYSQL_PASS=123456 mysql #数据持久化挂载。
[root@localhost /]# sudo docker run --name mysql-test -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql #数据以及配置文件持久化挂载
注释: -v /home/mysql/data:/var/lib/mysql #/home/mysql/data数据宿主盘挂载位置;/var/lib/mysql容器中数据目录。
-v /home/mysql/conf:/etc/mysql/conf.d #将docker的MySQL的配置文件/etc/mysql/conf.d挂载到本地的/home/mysql/conf文件夹。 参考数据持久化挂载博客:https://www.yht7.com/news/173775
Docker安装完Mysql后,Navicat连接不上的问题:
#进入mysql客户端: [root@localhost /]# docker exec -it mysql的容器名 /bin/bash #进入mysql命令行: [root@localhost /]# mysql -u root -p123456 (123456就是mysql的登录密码,在docker run的时候设置的) #查看用户信息: [root@localhost /]# select host,user,plugin,authentication_string from mysql.user; (mysql命令行中输入sql语句)
进入Docker中的Mysql中重置密码如下:
#重新设置密码: [root@localhsot /]# ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'newpassword' (newpassword就是新的密码)
使用Navicat重新连接:成功。原文链接:https://blog.csdn.net/cainiaobulan/article/details/88389948
Docker清除日志:
默认情况下,daocker日志一般放在以下目录:/var/lib/docker/containers/ 然后找到对应的container,然后进去,通过echo “” > **.log 即可。
浅析解决CentOS8 yum官方源下线后无法使用问题及具体原因分析:
错误:
Errors during downloading metadata for repository 'appstream': - Curl error
参考博客:https://www.cnblogs.com/goloving/p/16254161.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步