SpringBoot 学集 (第六章) Docker

写在前面:分享技术,共同进步,有不足请见谅,相关意见可评论告知 ~

编程路漫漫,学习无止尽!

引入

简介

Docker是一个开源的应用容器引擎;是一个轻量级容器技术;

Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像(镜像称为容器,启动是非常快速)

在这里插入图片描述

核心概念

docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);

docker客户端(Client):连接docker主机进行操作;

docker仓库(Registry):用来保存各种打包好的软件镜像;

docker镜像(Images):软件打包好的镜像;放在docker仓库中;

docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

安装Docker

环境:Linux 系统

一、常规安装

1、检查内核版本,必须是3.10及以上

uname -r

2、安装docker

yum install docker

3、启动docker

systemctl start docker

4、停止docker

systemctl stop docker

二、宝塔面板安装

位于软件商店(如下图)
在这里插入图片描述
成功安装如下
在这里插入图片描述

Docker 常用命令

一、镜像操作

操作 命令 说明
检索 docker search 关键字 eg:docker search redis 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。
拉取 docker pull 镜像名:tag :tag是可选的,tag表示标签,多为软件的版本,默认是latest
列表 docker images 查看所有本地镜像
删除 docker rmi image-id 删除指定的本地镜像

修改镜像源

修改 /etc/docker/daemon.json ,写入如下内容(如果文件不存在新建该文件)

vim /etc/docker/daemon.json

内容:

{
"registry-mirrors":["http://hub-mirror.c.163.com"]
}

国内镜像源 地址
Docker 官方中国区 https://registry.docker-cn.com
阿里云 https://pee6w651.mirror.aliyuncs.com


Docker官网网址
在这里插入图片描述
在这里插入图片描述

1、检索:

在这里插入图片描述

2、拉取

在这里插入图片描述

3、列表

见上图

二、容器操作

在这里插入图片描述

1、搜索镜像

docker search tomcat

2、拉取镜像

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

docker run -d -p 8888:8080 tomcat

-d:后台运行
-p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口

10、linux的防火墙
service firewalld status 查看防火墙状态
service firewalld stop 关闭防火墙

11、查看容器的日志

docker logs container-name/container-id

更多指令参考

三、安装并使用Mysql

1、拉取镜像

docker pull mysql

2、启动

docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b874c56bec49        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 3 seconds        3306/tcp            mysql01

3、端口映射

docker run -p 3308:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ad10e4bc5c6a        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mysql02




docker run -p 3308:3306 --name mysql08 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

常用Linux命令续

防火墙相关

1、查看所有开启的端口 firewall-cmd --list-ports (阿里云需要配置安全组规则)

2、查看firewall服务状态 systemctl status firewalld
开启 service firewalld start
重启 service firewalld restart
关闭 service firewalld stop

3、查看防火墙规则
查看全部信息 firewall-cmd --list-all
只看端口信息 firewall-cmd --list-ports

4、开启防火墙端口 firewall-cmd --zone=public --add-port=9000/tcp --permanent

命令含义
--zone 作用域
--add-port=80/tcp 添加端口,格式为:端口/通讯协议
--permanent 永久生效,没有此参数重启后失效

5、重启防火墙 systemctl restart firewalld.service

安装相关

6、检测JDK 版本信息 rpm -qa | grep jdk

7、卸载 jdk rpm -e --nodeps jdk

8、安装 jdk rpm -ivh rpm包

常见异常

①docker search mysql 命令失效

Error response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: net/http: TLS handshake timeout

参考链接

②端口映射tomcat,访问报404

在这里插入图片描述
linux 内置防火墙
阿里云安全组 是否开放端口

③Docker 连接数据库异常集

名称重用

docker: Error response from daemon: Conflict. The container name "/mysql04" is already in use by container "084b3101709d46ee70ab372f3ecf36a1db4fd8aff7c594c885e". You have to remove (or rename) that container to be able to reuse that name.

端口重用

docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql04 (8653acd17133b5d948ac7a91c8eddd8a31a34ba88831b): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use.
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql03 (6b7379d2dba65865373362dba75b2c8d94e6c31a2b3ca0f898):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.4:3306 ! -i docker0: iptables: No chain/target/match by that name.

在这里插入图片描述

posted @ 2020-09-03 23:15  QuantumYou  阅读(149)  评论(0编辑  收藏  举报
/* 点击爆炸效果*/
/* 鼠标点击求赞文字特效 */ /*鼠标跟随效果*/