当前位置 博文首页 > 好好学习天天向上:SpringBoot学习(四)--Docker
Docker是直接安装在操作系统之上。
类似于WINDOWS镜像
类似于虚拟机,轻量级虚拟机
客户端通过命令行或者其他工具来使用DOCKER
一个物理或者虚拟的主机,用于执行DOCKER守护进程和容器
存放DOCKER镜像的地方
直接安装…
之后再看吧。
Linux安装DOCKER需要内核版本大于3
[root@VM-0-11-centos /]# uname -r
3.10.0-1127.13.1.el7.x86_64
yum安装docker
yum install docker
确认安装成功
[root@VM-0-11-centos /]# docker -v
Docker version 1.13.1, build 7d71120/1.13.1
启动docker
systemctl start docker
设置开机启动
systemctl enable docker
停止docker
systemctl stop docker
docker search mysql
下载默认版本
docker pull mysql
下载指定版本
docker pull mysql:版本号
docker images
docker rmi imageid
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 运行tomcat镜像的lastest版本,命名为mytomcat
docker run --name mytomcat -d tomcat:lastest
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=“nginx-lb”: 为容器指定一个名称;
–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=“ritchie”: 设置环境变量;
–env-file=[]: 从指定文件读入环境变量;
–cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
–link=[]: 添加链接到另一个容器;
–expose=[]: 开放一个端口或一组端口;
–volume , -v: 绑定一个卷
docker stop ID OR NAME
docker stop mytomcat
docker ps -a
docker rm id or name
docker start id or name
将服务器端口和docker内的端口进行映射
# 9000为服务器端口,6379为docker容器端口
-p 9000:6379
启动做了端口映射的容器
docker run -d --name tomcattest -p 9000:8080 tomcat:latest
docker logs id or name
-v
docker exec -it CONTAINER_ID OR CONTAINER_NAME bash
-it的意思
exec: Run a command in a running container(在运行的容器中运行命令)
exec -i: --interactive(相互作用的) Keep STDIN open even if not attached(即使没有连接,也要保持STDIN打开)
exec -t: --tty Allocate a pseudo-TTY(分配一个 冒充的终端设备)
如果只这么执行会无法启动
docker run -d --name dockermysql -p 13306:3306 mysql:latest
查看无法启动原因
docker logs dockermysql
未配置数据库密码,必须指定或者设置为无密码。
2021-06-09 11:59:05+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
如果顺序不同可能会启动失败,这个顺序亲测成功。
docker run -p 13306:3306 --name dockermysql -e MYSQL_ROOT_PASSWORD=pwd-d bingozhou/mysql5.7
连接navicat报错,需要进入docker容器
docker exec -it dockermysql bash
再进入数据库
mysql -u root -p
# 使用MYSQL库
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; ### 123456 mysql的登录密码
#刷新
flush privileges;
docker run -p 16379:6379 --name dockerredis -d redis:latest
docker pull nacos/nacos-server
docker run \
--name nacos \
--restart=always \
-d \
-e MYSQL_MASTER_SERVICE_HOST=127.0.0.1 \
-e MYSQL_MASTER_SERVICE_PORT=3306 \
-e MYSQL_MASTER_SERVICE_DB_NAME=nacos_config \
-e MYSQL_MASTER_SERVICE_USER=root \
-e MYSQL_MASTER_SERVICE_PASSWORD=123456\
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_DATABASE_NUM=1 \
-e NACOS_USER=nacos\
-e NACOS_PASSWORD=nacos\
-e JVM_XMS=512m \
-e JVM_XMX=512m \
-e JVM_XMN=256m \
-e JVM_MS=32m \
-e JVM_MMS=80m \
-p 8848:8848 \
nacos/nacos-server:latest
cs