再使用docker search命令来搜索hub.docker.com上的mysql镜像文件
我们就使用starts最多的,官方的mysql镜像。使用docker pull mysql命令,来下载mysql:latest,也就是mysql最新版的镜像
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql
docker run -d -p 3306:3306 --name xyz \
-v ~/mysql/conf:/etc/mysql/conf.d \
-v ~/mysql/data:/var/lib/mysql \
再通过windows上的sqlyog来连接linux上的docker中的mysql服务..
但是在连接时报错了,因为我们下载的mysql8的加密方法变了!
为了解决以上问题,我们在docker下的mysql中使用以下命令来修改密码
alter user 'root'@'%' identified with mysql_native_password by '123';
再次使用sqlyog来登录docker容器中的mysql服务,就成功了!
如果我们想备份docker容器中运行着的mysql的数据,该怎么做呢?首先退出容器:ctrl+p+q,然后再键入以下命令即可备份数据:
docker exec magical_buck sh -c 'exec mysqldump --all-databases -uroot -p"123"' > ./all.sql
如果还是连接不上,那可能是宿主机的路由没有开启,需要执行以下命令来开启宿主机的路由:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
在使用nginx+tomcat集群之前,先看一下整体的结构流程图
docker run -d -p 8081:8080 --name t8081 tomcat
docker run -d -p 8082:8080 --name t8082 tomcat
docker run -d -p 8083:8080 --name t8083 tomcat
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>myweb</artifactId>
<version>1.0-SNAPSHOT</version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
本次请求的端口号是:<%=request.getServerPort()%> <br>
docker cp myweb.war t8081:/usr/local/tomcat/webapps
docker cp myweb.war t8082:/usr/local/tomcat/webapps
docker cp myweb.war t8083:/usr/local/tomcat/webapps
然后通过浏览器,分别访问这3个tomcat中的myweb应用
接下来,该配置nginx了,在当前用户家目录下创建一个nginx文件夹,在其中创建nginx.conf配置文件,添加以下内容:
# 指定nginx开启的进程数。 每个nginx进程平均耗费10M~12M内存,建议设置的数字cpu的数量一致
# error_log是一个主模块指令,用来定义全局错误日志文件。
error_log /var/log/nginx/error.log warn;
# events是一个事件指令,用来设定nginx的工作模式及连接数的上限
# upstream通过server指令指定后端服务器的IP地址和端口
# 指定配置文件所包含的媒体类型,如果不包含这个第三方文件的话,
include /etc/nginx/mime.types;
# 设定默认为类型为二进制流,也就是当文件类型未定义时使用这种方式
# 例如在没有配置PHP环境时,nginx是不予解析的,此时浏览器访问PHP
default_type application/octet-stream;
# 用于开启高校的文件传输模式,也即是传说中的zero copy
# 设置客户的连接保持活动连接的超时时间,在超过这个时间之后,服务器就会关闭这个连接
docker run -d -p 8082:80 --name pms-front \
-v /root/pms/nginx/nginx.conf:/etc/nginx/nginx.conf nginx
查看正在运行中的容器, 如果没有看到nginx容器处于运行状态的话,要使用“docker logs 容器id”来排查错误
docker run -d -p 6379:6379 redis
-v /root/redis/redis.conf:/redis.conf redis \
拉去RabbitMQ时,要指定RabbitMQ的版本为management,因为该版本会自带web客户端
docker pull rabbitmq:management
docker run -dit --name MyRabbitMQ -e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
docker pull elasticsearch:7.11.2
docker run --name es -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 \
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.188.130:9200 \
docker run -p 9000:9000 -p 9090:9090 \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
minio/minio server /data --console-address ":9090" -address ":9000"
docker pull nacos/nacos-server
docker run -d -p 8848:8848 --name nacos8848 -e MODE=standalone nacos/nacos-server
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>docker-test</artifactId>
<version>1.0-SNAPSHOT</version>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<mainClass>com.gao.App</mainClass>
public static void main(String[] args) {
SpringApplication.run(App.class, args);
将该springboot项目打包,得到:docker-test-1.0-SNAPSHOT.jar
将docker-test-1.0-SNAPSHOT.jar传给linux
COPY docker-test-1.0-SNAPSHOT.jar docker-test.jar
ENTRYPOINT ["java", "-jar", "docker-test.jar"]
注意,为什么基础镜像是"java:8",而不是"tomcat"?因为springboot应用中引入了spring-boot-stater-web,所以应用中自带tomcat。
docker build -f DockerFile -t docker-test .
docker exec -it 882f87f0a910 bash
☐ 删除所有容器:docker rm -f $(docker ps -qa)
☐ 删除所有镜像:docker rmi $(docker images -qa)
使用该镜像创建并运行一个容器,该容器中是没有vim命令和ifconfig命令的:
然后我们将这个容器,提交为一个新的镜像,该镜像便是自带vim和ifconfig命令的镜像了!首先使用ctrl+p+q退出但不关闭容器,然后键入以下命令:
docker commit -a gao -m "mycentos with vim and ifconfig" 容器id mycentos
新的镜像mycentos是自带vim和ifconfig命令的镜像
接下来我们要把mycentos这个镜像推送到阿里云! 进入阿里云开发者平台:https://account.aliyun.com
登录,再进入这个网址:https://cr.console.aliyun.com/,进入个人版:
接着,就准备把本地镜像推送到阿里云!点击管理,即可看到推送的代码。以下就是将本地镜像推送到远程镜像仓库步骤:
sudo docker login --username=gaochenyi1211 \
registry.cn-hangzhou.aliyuncs.com
然后设置本地镜像与远程镜像仓库的对应关系,也就是标记本地镜像,将其归入某一仓库。
sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/gaopeng/gaocentos:[镜像版本号]
sudo docker push registry.cn-hangzhou.aliyuncs.com/gaopeng/gaocentos:[镜像版本号]
docker rmi -f $(docker images -qa)
使用docker pull命令把远程镜像下载下来,记得自己加上版本号!
docker pull registry.cn-hangzhou.aliyuncs.com/gaopeng/gaocentos:1.0
利用这个镜像,创建并运行一个容器,该容器直接具备vim和ifconfig命令!
如此,将一个本地镜像推送到阿里云,再从阿里云把镜像pull下来的过程就演示完了。
标签:实战,容器,run,nginx,mysql,镜像,Docker,docker From: https://www.cnblogs.com/qiutian888/p/18278739