一、Docker
注意:代码段中开头的sudo为root管理身份,如果以root登录的,可不写sudo
1、安装新版 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
2、启动docker
sudo systemctl start docker
3、设置 docker 开机启动
sudo systemctl enable docker
4、镜像加速
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
5、重新加载docker配置
sudo systemctl daemon-reload
6、重启docker服务
sudo systemctl restart docker
7、查看镜像配置
docker info
8、运行 hello-world 镜像,验证 docker
sudo docker run hello-world
9、检查docker 镜像
docker images
10、检查已启动的docker 服务 (正在运行的)
docker ps
11、希望查看所有镜像,包含没有运行的镜像容器,可以执行如下指令
docker ps -all
12、停止docker服务
docker stop 服务id
13、删除docker 镜像
docker image rm hello-world
14、假如镜像被占用着是不可以直接被删除的,需要先删除应用此镜像的容器,例如
docker container rm 容器名或容器id
15、通过 docker run 来创建启动容器(这个容器相当于一个独立的集装箱)
docker run -it centos:7 bash
Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统(简版linux系统),并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
16、查看后台运行的容器输出结果(日志信息)
docker container logs 802
17、停止运行的容器,代码如下
docker container stop 802
18、重新启动容器,代码如下
docker container restart 802
19、当需要进入容器进行操作时,可以使用 docker exec 命令,例如
docker exec -it 802 bash #802为容器id
20、假如从宿主机进入了启动的容器,退出容器需要使用exit指令
exit
21、假如容器不用了,可执行删除操作。其中,如果删除运行中的容器,需要添加 -f 参数。
docker container rm 802 #802为容器id
22、清理所有终止状态容器
docker container prune
二、数据卷
1、创建数据卷
docker volume create container-vol
2、查看所有数据卷
docker volume ls
3、查看指定 数据卷 的信息
docker volume inspect container-vol
4、启动挂载数据卷的容器
docker run -it --mount source=container-vol,target=/root centos:7 bash
# 或者:
docker run -it -v container-vol:/root centos:7 bash
5、删除数据卷(如果数据卷被容器使用则无法删除)
docker volume rm container-vol
清理无主数据卷
docker volume prune
三、挂载主机目录(常用)
docker run -it -v /usr/app:/opt/app centos:7 bash
其中:
1)/usr/app:为宿主机目录
2)/opt/app: 为启动容器的一个目录
3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
查看挂载目录信息:
docker inspect 91a #91a 为容器id
四、Dockerfile文件
在创建新的镜像时都需要有一个Dockerfile文件(文件名一定要注意大小写),这个文件要与你的资源放在一起(例如你下载的jdk)
现在,以centos7为基础,构建oracle jdk8的镜像。
第一步:编写FROM语句(关键字一定要大写,例如FROM不能写小写)
第二步:通过ADD命令将压缩包传入镜像中的指定目录,并同时解压缩
第三步:设置环境变量(通过ENV关键字实现)
第四步:指定命令行操作
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD [‘bash’]
使用 Dockerfile 构建镜像(在Dockerfile所在目录执行)
docker build -t jdk:8 . #不要丢掉这里的点
运行镜像文件
docker run –it jdk:8 bash
进入容器以后,可以通过echo $PATH查看环境变量,并可以通过java –version查看JDK版本信息
镜像导出导入操作:
镜像导出(linux系统中的镜像文件下载到本地-例如window),导出后给他人使用
docker save jdk:8 | gzip > jdk8.tar.gz
镜像导入(要在jdk8.tar.gz文件所在目录下执行):
docker load < jdk8.tar.gz
五、安装MySql数据库
在hub.docker.com上搜索mysql镜像
1、也可以指定拉取版本,例如:
sudo docker pull mysql:8.0.23
2、启动运行mysql镜像 (docker run 用于启动一个容器)
sudo docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=密码 \
-d mysql:8.0.23
假如安装过程中失败了,则可通过docker ps -a 查看以前的容器,假如已存在,则通过docker rm 镜像id 删除再重新安装即可。
3、停止与开始
docker stop mysql
docker start mysql
4、进入容器 (退出容器用exit)
sudo docker exec -it mysql bash
5、登陆(默认密码root),一定要先进入mysql容器。
mysql -uroot -proot
6、设置mysql开机自启动(可选)
docker update mysql --restart=always
7、Windows中如何连接这个mysql?
第一步:在docker容器中登录mysql,创建mysql账户并为其设置权限(推荐手写,可能单引号有一定问题)
create user ‘tony’@’%’ identified by ‘tony’;
grant all on *.* to ‘tony’@‘%’
第二步:在window平台通过新创建用户连接mysql,例如,在命令行执行如下指令:
mysql -utony –h192.168.174.130 -p
说明:假如连不上,则直接如下步骤,再尝试。
第一步:关闭linux宿主机的防火墙 (假如直击连接),命令忘了可以通过搜索引擎查。
sudo systemctl stop firewalld.service
第二步:重启docker
sudo systemctl restart docker
第三步:启动mysql
docker start mysql
六、安装redis
1、下载镜像
docker pull redis
2、创建redis实例并启动,创建redis配置文件目录
mkdir -p /usr/local/docker/redis/conf
3、在配置文件录下创建redis.conf配置文件(因为redis镜像中这个redis.conf是一个目录所以要先创建一个这个配置文件,否在我们本地挂载点也会变成一个目录)
touch /usr/local/docker/redis/conf/redis.conf
sudo docker run -p 6379:6379 --name redis \
-v /usr/local/docker/redis/data:/data \
-v /usr/local/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
4、控制台直接连接redis测试
docker exec -it redis bash
5、检测redis 版本
Redis-server –v
# 或者
redis-cli -v
6、登录redis(默认不需要密码)
redis-cli
7、或者直接将上面的两个步骤合为一个步骤执行也可以,指令如下:
docker exec -it redis redis-cli
七、安装Ngnix代理
1、拉取ngnix镜像 (从这里hub.docker.com去查找)
docker pull nginx:latest
2、简单启动
docker run --name nginx -d nginx
检测安装的内容docker exec nginx ls -l /etc/nginx
3、拷贝安装好的配置文件
docker cp -a nginx:/etc/nginx /usr/local/docker/nginx
4、强制卸载刚刚安装的nginx
docker rm -f nginx
5、启动nginx容器,运行nginx镜像
sudo docker run -p 80:80 --restart always --name nginx \
-v /usr/local/docker/nginx/:/etc/nginx/ \
-v /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d \
-d nginx
6、进行访问检测,如图所示:
八、安装Nacos组件
1、拉取nacos
docker pull nacos/nacos-server:2.0.1
2、mysql中执行nacos的sql脚本文件
执行方式1:直接在容器内部的mysql控制台执行
1)将此文件nacos-mysql.sql拷贝到mysql容器的宿主机对应的挂载目录
2)在linux环境下启动并登录mysql
3)通过source指令运行宿主机中挂载目录下的sql文件
执行方式2:通过客户端(idea)工具连接远程mysql,然后在客户端工具中执行sql文件
3、创建nacos容器
docker run -d \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=ip \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=user \
-e MYSQL_SERVICE_PASSWORD=user \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--name nacos \
--restart=always \
nacos/nacos-server:2.0.1
参数说明
# 单节点模式
MODE=standalone
# 数据库地址
MYSQL_SERVICE_HOST
# 数据库用户名
MYSQL_SERVICE_USER
# 数据库密码
MYSQL_SERVICE_PASSWORD
# 需连接的数据库名称
MYSQL_SERVICE_DB_NAME
# 端口映射
-p 8848:8848
# 任意时候重启容器,开机就能自动启动容器(需设置docker为开机自启)
--restart=always
4、检查nacos启动日志,是否启动成功
docker container logs nacos
其中,nacos的启动日志在/home/nacos/logs/start.out文件中。
5、测试,在浏览器中输入http://ip:8848/nacos
6、拷贝目录资源
docker cp -a nacos:/home/nacos /usr/local/docker/nacos
docker cp -a nacos:/home/nacos/data/ /usr/local/docker/nacos/data/
docker cp -a nacos:/home/nacos/log/ /usr/local/docker/nacos/log/
7、停止并删除nacos服务
docker stop nacos
docker rm nacos
8、修改nacos配置文件application.properties
直接将准备好的nacos配置文件application.properties,拷贝到
/usr/local/docker/conf目录,其连接数据的配置如下
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://ip:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&serverTimezone=Asia/Shanghai&characterEncoding=utf8
db.user.0=数据库账号
db.password.0=数据库密码
9、重新创建并启动nacos容器
docker run -d \
-e MODE=standalone \
-p 8848:8848 \
-v /usr/local/docker/nacos/conf:/home/nacos/conf \
-v /usr/local/docker/nacos/logs:/home/nacos/logs \
-v /usr/local/docker/nacos/data:/home/nacos/data \
--name nacos \
--restart=always \
nacos/nacos-server:2.0.1