#下载
docker pull centos
#运行
docker run -it 5d0da3dc9764
#里面vim ifconfig 等等什么命令都没有,接下来用dockerfile来进行一个功能的增强
# 创建文件夹
mkdir myfile
-将java的安装包拷贝到目录下
#在当前目录
vim Dockerfile
#这边拉取了一个7的centos
FROM centos:7
MAINTAINER lxy<2050298183.com>
#落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u241-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_241
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
构建或者删除的时候出现一些错误,会出现徐悬镜像
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER lxy
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD Workpase-1.0-SNAPSHOT.jar zzyy_docker.jar
# 运行jar包
RUN bash -c 'touch /zzyy_docker.jar'
ENTRYPOINT ["java","-jar","/zzyy_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 8081
- 构建镜像
docker build -t zzyy_docker:1.6 .
- 查看构建的镜像
docker images
- 启动
docker run -d -p 8081:8081 19b0ffd318f1
-查看
docker ps
查看docker网络
docker network ls
删除网络
docker network rm lxy_docker
查看网络数据源
docker network inspect bridge
- 启动一个ubuntu
docker run -it --name u1 ubuntu /bin/bash
- 在启动一个
docker run -it --name u2 ubuntu /bin/bash
将u2杀掉
docker rm -f u2
发现u3还是和已经被被杀掉的u2一样
我们的u2挂了,但是这个ip被u3复用了,内容就会有变更,所以很麻烦
会发生的问题:docker容器内的ip是有可能发生变化的
名字是bridge
范围是local
网络驱动模式bridge
名字是docker_lxy
范围是local
网络驱动模式bridge (默认就是bridge)
- 创建两个容器
docker run -d -p 8081:8080 --name tom1 tomcat:8.5
docker run -d -p 8089:8080 --name tom2 tomcat:8.5
通过 host启动一个tomcat
docker run -d -p 8087:8080 --network host --name tom7 tomcat:8.5
- 没有警告的启动
docker run -d -p --network host --name tom7 tomcat:8.5
- 查看tom7发下是空的ip,因为host启动的没有ip,是和主任同用的一个ip,所以是空
#创建网络
docker network create lxy_docker
#将两台tomcatt装入到我们新自定义的网络中
docker run -d -p 8081:8080 --network lxy_docker --name tomat81 tomcat:8.5
docker run -d -p 8082:8080 --network lxy_docker --name tomat82 tomcat:8.5
#一次没成功多试几次
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker/docker-compose
* sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 若是github访问太慢,可以用daocloud下载
* sudo chmod +x /usr/local/bin/docker-compose 添加可执行权限
* sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose root用户无法使用
* docker-compose --version 查看版本
#正常情况需要先将mysql启动
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v/usr/local/mysql/data:/var/lib/mysql -v/usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123321 --name mysql mysql:5.7
#在启动redis
docker run -d -p 6379:6379 --privileged=true -v/usr/local/redis/redis.conf:/etc/redis/redis.conf -v/usr/local/redis/data:/data redis:6.2 redis-server /etc/redis/redis.conf
#在把java项目跑起来
docker run -d -p 8081:8081 19b0ffd318f1
#创建yml文件
vim docker-compose.yml
#写入如下内容
version: "3"
services:
microService:
image: zzyy_docker:1.6
container_name: ms01
ports:
- "8081:8081"
volumes:
- /usr/local/microServic:/data
networks:
- lxy
depends_on:
- redis
- mysql
redis:
image: redis:6.2
ports:
- "6379:6379"
volumes:
- /usr/local/redis/redis.conf:/etc/redis/redis.conf
- /usr/local/redis/data:/data
networks:
- lxy
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'db2021'
MYSQL_USER: 'root'
MYSQL_PASSWORD: '123321'
ports:
- "3306:3306"
volumes:
- /usr/local/mysql/data:/var/lib/mysql
- /usr/local/mysql/conf/my.cnf:/etc/my.cnf
- /usr/local/mysql/init:/docker-entrypoint-initdb.d
networks:
- lxy
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:
lxy:
#查看配置文件是否写的对自我效验
docker-compose config -q
#启动命令
docker-compose up -d
如何和spring项目联系呢,我在yml文件中定义了redis和mysql,我可以再springboot的ym文件
比如 如下是我们的mysq连接我们镜像的docker地址
可以将192.168.116:3306 替换为mysql,只要在docker-compose配置了的启动容器都可以这样配置,就不用担心ip变了,还得改源码了
url: jdbc:mysql://192.168.116:3306/xxxx?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true
全部启动成功
Compose常用命令
docker-compose -h # 查看帮助
docker-compose up # 启动所有docker-compose服务
docker-compose up -d # 启动所有docker-compose服务并后台运行
docker-compose down # 停止并删除容器、网络、卷、镜像。
docker-compose exec yml里面的服务id # 进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps # 展示当前docker-compose编排过的运行的所有容器
docker-compose top # 展示当前docker-compose编排过的容器进程
docker-compose logs yml里面的服务id # 查看容器输出日志
dokcer-compose config # 检查配置
dokcer-compose config -q # 检查配置,有问题才有输出
docker-compose restart # 重启服务
docker-compose start # 启动服务
docker-compose stop # 停止服务
#安装
docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
#查看
docker ps
第一次登录需创建admin,访问地址:xxx.xxx.xxx.xxx:9000
#新建文件夹
mkdir cig
cd cig
vim dokcer-compose.yml
#复制
version: '3.1'
volumes:
grafana_data: {}
services:
influxdb:
image: tutum/influxdb:0.9
restart: always
environment:
- PRE_CREATE_DB=cadvisor
ports:
- "8083:8083"
- "8086:8086"
volumes:
- ./data/influxdb:/data
cadvisor:
image: google/cadvisor
links:
- influxdb:influxsrv
command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
restart: always
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
grafana:
user: "104"
image: grafana/grafana
user: "104"
restart: always
links:
- influxdb:influxsrv
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
environment:
- HTTP_USER=admin
- HTTP_PASS=admin
- INFLUXDB_HOST=influxsrv
- INFLUXDB_PORT=8086
- INFLUXDB_NAME=cadvisor
- INFLUXDB_USER=root
- INFLUXDB_PASS=root
#检查
dokcer-compose config -q
#运行
dokcer-compose up
浏览器访问http://192.168.116.126:808/
(信息收集)
http://192.168.116.126:8083/