Spring Boot系列第五篇:Spring Boot与Docker
文章目录一、简介二、核心概念1、使用Docker的步骤2、安装Docker3、Docker常用命令&操作一、简介Docker是一个开源的应用容器引擎、是一个轻量级容器技术Docker支持软件编译成一个镜像、然后在镜像中各种软件做好配置、将镜像发布出去、其他使用者可以直接使用这个镜像运行中的镜像称为容器、容器启动是非常快速的二、核心概念docker主机(Host):安装了Docker程序的机
文章目录
一、简介
Docker是一个开源的应用容器引擎、是一个轻量级容器技术
Docker支持软件编译成一个镜像、然后在镜像中各种软件做好配置、将镜像发布出去、其他使用者可以直接使用这个镜像
运行中的镜像称为容器、容器启动是非常快速的
二、核心概念
docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上)
docker客户端(Client):连接docker主机进行操作
docker仓库(Registry):用来保存各种打包好的软件镜像
docker镜像(Images):软件打包好的镜像;放在docker仓库中
docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
1、使用Docker的步骤
步骤
1、安装Docker
2、去Docker仓库找到这个软件对应的镜像
3、使用Docker命令运行这个镜像,这个镜像就会生成一个Docker容器
4、对容器的启动停止就是对软件的启动停止
2、安装Docker
一、安装linux虚拟机
1.VMWare、VirtualBox(安装)
2.VirtualBox管理导入虚拟机文件centos7-atguigu.ova
3.双击启动linux虚拟机;使用 root/ 123456登陆
4.使用客户端连接linux服务器进行命令操作
5、设置虚拟机网络
桥接网络=选好网卡==接入网线
6.设置好网络以后使用命令重启虚拟机的网络
service network restart
7.查看linux的ip地址
ip addr
8.使用客户端连接linux
二、在linux虚拟机上安装docker
步骤:
1、检查内核版本,必须是3.10及以上
uname ‐r
2、安装docker
yum install docker
3、输入y确认安装
4、启动docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker ‐v
Docker version 1.12.6, build 3e8e77d/1.12.6
5、开机启动docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi‐user.target.wants/docker.service to
/usr/lib/systemd/system/docker.service.
6、停止docker
systemctl stop docker
1、安装docker
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
2、配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://9hhrg883.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3、开启2375端口
vim /usr/lib/systemd/system/docker.service
# 修改ExecStart添加下面内容
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# 重新加载docker配置
systemctl daemon-reload
systemctl restart docker
# 设置开机自启
systemctl enable docker.service
3、Docker常用命令&操作
1、镜像操作
操作 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字 eg:docker search redis | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG |
拉取 | docker pull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像 |
2、容器操作
软件镜像(QQ安装程序)-------->运行镜像------>产生一个容器(正在运行的软件,运行的QQ)
步骤:
1.搜索镜像
[root@localhost ~]# docker search tomcat
2.拉取镜像
[root@localhost ~]# docker pull tomcat
3.根据镜像容器启动
docker run ‐‐name mytomcat(自定义的软件名字) ‐d tomcat:latest(安装的软件版本)
4.查看运行中的容器
docker ps
5.停止运行中的容器
docker stop 容器的id
6.查看所有的容器
docker ps ‐a
7.启动容器
docker start 容器id
8.删除一个容器
docker rm 容器id
9.启动一个做了端口映射的tomcat
[root@localhost ~]# docker run ‐d ‐p 8888:8080 tomcat
‐d:后台运行
‐p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
10.为了演示简单关闭了linux的防火墙
service firewalld status :查看防火墙状态
service firewalld stop:关闭防火墙
11.查看容器的日志
docker logs container‐name/container‐id
更多命令参看
可以参考每一个镜像的文档镜像命令文档查看
4、环境搭建
安装mysql
1.查看镜像 docker images
2.搜索镜像 docker search mysql
3.拉取镜像 docker pull mysql
4.错误的启动
[root@localhost ~]# docker run --name mysql01 -d mysql
61985d226cd0f2a761202b9c5237b5809adae0efd57a16b5f1549d20f6014932
mysql异常退出
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61985d226cd0 mysql "docker-entrypoint.s…" About a minute ago Exited (1) About a minute ago mysql01
934c560346f4 tomcat "catalina.sh run" 4 hours ago Up 4 hours 0.0.0.0:8888->8080/tcp, :::8888->8080/tcp gifted_volhard
fa1736cb49bc tomcat:latest "catalina.sh run" 4 hours ago Exited (143) 4 hours ago mytomcat
查看退出的日志
docker logs 容器id
2021-05-20 06:28:44+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
You need to specify one of the following:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
- 这三个参数必须制定一个,没有指定密码
正确的启动
[root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
也不能拿来使用,没有做端口映射,外部访问不到
端口映射启动
[root@localhost ~]# docker run -p3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
82cae1d5894702033c7ae5a6a9b85c4a7a57bf7434ce557b92d16876ab956bfe
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
82cae1d58947 mysql "docker-entrypoint.s…" 26 seconds ago Up 25 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql02
934c560346f4 tomcat "catalina.sh run" 4 hours ago Up 4 hours 0.0.0.0:8888->8080/tcp, :::8888->8080/tcp gifted_volhard
[root@localhost ~]# docker start mysql
**错误:docker部署mysql宿主机连接不上(转载)**
解决方法:
1、在虚拟机中登录到mysql容器,然后进入mysql
docker exec -it mysql /bin/bash
mysql -uroot -p
Enter password:
mysql> select host,user,plugin,authentication_string from mysql.user;
备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码
2、修改密码
mysql> use mysql;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123';
mysql> update user set host = '%' where host = 'localhost' and user = 'root';
mysql> flush privileges;
mysql> select host,user,plugin,authentication_string from mysql.user;
出现以下图片mysql_native_password 就成功了
docker官网几个其他的高级操作
docker run ‐‐name mysql03 ‐v /conf/mysql:/etc/mysql/conf.d ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw‐d mysql:tag
-v把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)
docker run ‐‐name some‐mysql ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw ‐d mysql:tag ‐‐character‐set‐
server=utf8mb4 ‐‐collation‐server=utf8mb4_unicode_ci
指定mysql的一些配置参
mysql安装
sudo docker run -p 3306:3306 --name mysql \
-v /opt/mysql/conf:/etc/mysql/conf.d \
-v /opt/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0
三、docker下安装redis
1、下载镜像
docker pull redis
2、进入容器
docker exec -it 40dbda990664(容器名称或者id) /bin/sh
#docker 下进入redis删除key
docker exec -it hb-redis /bin/bash
redis-cli
ping
AUTH HBJ111QQQ
select 2
keys *
exit
3、以客户端形式进入
docker exec -it redis redis-cli
4、容器添加开机自启动
docker update redis --restart=always
docker run -d -p 56379:6379 --name hb-redis redis --requirepass "password"
docker run -p 6379:6379 --name lm-redis \
-v /usr/local/redis/data:/data \
-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf \
-d --restart=always redis:5.0.4 redis-server /etc/redis/redis.conf \
--requirepass "123456"
-p 映射端口
--name 启动的名称
-v 映射文件夹
-d 后台启动redis redis-server 并使用redis.conf配置启动redis
5、docker下运行minio服务
docker run -p 50110:9000 --name hb-minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=xxminio" \
-e "MINIO_SECRET_KEY=xxminio" \
-v /opt/data:/data \
-v /opt/config:/root/.minio \
minio/minio server /data
6、docker 下运行consul
docker run -itd --name hb-consul -p 6007:8500/tcp consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0
docker run -itd --name hb-consul -p 8500:8500/tcp -v /data/hb-consul/conf/:/hb-consul/conf/ -v /data/hb-consul/data/:/hb-consul/data/ consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0 -config-dir=/consul/conf
redis 删除key
进入容器
docker exec -i -t shopxx-b2b2c-redis /bin/bash
进入redis-cli
redis-cli
身份验证
auth 密码
根据桶select 4查看Key
keys *
清除所有key
flushall
删除指定key
del key
docker run -p 56379:6379 --name redis \
-v /usr/local/redis/data:/data \
-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf \
-d --restart=always redis:5.0.4 redis-server /etc/redis/redis.conf \
--requirepass "ybzl123456."
docker run -p 50110:9000 --name hb-minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=xxminio" \
-e "MINIO_SECRET_KEY=xxminio" \
-v /opt/data:/data \
-v /opt/config:/root/.minio \
minio/minio server /data
docker run -d -p 8086:8086 --name influxdb influxdb
docker run -d -p 8114:7114 --name saas-logi-xasy-test-1.2.1 --restart=always -v /home/yml-conf:/home yb/saas-logi:xasy-1.2.1 --spring.config.location=/application.yml --spring.config.location=/home/bootstrap-xasytest.yml
docker run -itd --name hb-consul -p 6007:8500/tcp consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0
docker run -itd --name hb-consul -p 5007:8500/tcp -v /data/hb-consul/conf/:/consul/conf/ -v /data/hb-consul/data/:/consul/data/ consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0 -config-dir=/consul/conf
docker run -d --name emqx-etyy --restart=always -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx
1883:MQTT 协议端口
8883:MQTT/SSL 端口
8083:MQTT/WebSocket 端口
8080:HTTP API 端口
8084 WSS端口
18083:Dashboard 管理控制台端口
四 docker常用命令
1、查看日志
docker exec -it 容器id /bin/sh
ls 查看目录
cd root/logs
查看日志tail -fn 100 info.log
2、常用命令
常用命令
设置docker开机自启:
sudo chkconfig docker on
查所有镜像:
docker images
删除某个镜像:
docker rmi CONTAINER ID(容器ID)
删除所有镜像:
docker rmi $(docker images -q)
打开/关闭/重启docker服务:
sudo service docker start/stop/restart
查看正在运行的容器:
docker ps
查看所有安装的容器:
docker ps -a
启动某个容器:
sudo docker start CONTAINER ID(容器ID)
停止某个容器:
sudo docker stop CONTAINER ID(容器ID)
停止所有容器:
docker stop $(docker ps -a -q)
删除某个容器:
sudo docker rm CONTAINER ID(容器ID)
删除所有容器:
docker rm $(docker ps -a -q)
docker强制批量删除none的image镜像
docker images|grep none|awk ‘{print $3 }’|xargs docker rmi
进入某个容器:
docker exec -it 容器ID /bin/bash
docker镜像提速:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://fe8a7d6e.m.daocloud.io
更多推荐
所有评论(0)