docker的安装以及前后端代码打包

安装

打开帮助文档

#1. 卸载久的版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
#2. 需要的安装包
 yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

#3. 设置镜像的仓库
(这里直接搞阿里云的镜像)
 yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#4.安装 Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io
#5. 启动docker
systemctl start docker

docker常用命令

docker version #显示docker的版本命令
docker info #显示docker的系统信息,包括镜像何容器的数量
docker --help #帮助命令
docker ps #查看所有正在运行的容器
docker ps -a #查看所有容器
docker stop {容器id} #停止容器
docker rm -f {容器id} #删除容器(这样就不用去停容器了)
docker images #查看所有镜像
docker rmi {镜像id}  #删除镜像
docker logs -f a1fb54129836  #查看容器内日志

所有的命令在官方文档的docs / refrence里面

docker打包前端镜像

1.先在随便那里创建一个文件夹,并把自己的项目放进去
2.创建一个Dockerfile文件与index.html同级
3.编辑这个文件
	FROM nginx:latest
	COPY . /usr/share/nginx/html
4.运行指令 docker build -t {镜像名} .(这里的点千万别忘了)
5.运行容器 docker run -d -p {宿机主的端口}/{docker容器机的端口} {镜像名}

docker打包后端镜像

1.添加项目pom中
	<plugin>   
		<groupId>com.spotify</groupId>  
    	<artifactId>docker-maven-plugin</artifactId> 
    	<version>1.0.0</version> 
    	<configuration>       
            <imageName>shop:1.0</imageName>        		  
            <dockerDirectory>src/main/docker</dockerDirectory>  
            <resources>          
                <resource>          
                    <targetPath>/</targetPath>             
                    <directory>${project.build.directory}</directory>    
                    <include>${project.build.finalName}.jar</include>    
                </resource>     
            </resources>   
    	</configuration>
    </plugin>
2.将代码上传到服务器(最好用git)
3.在项目的src/main下创建docker目录
4.docker目录里编辑
	FROM openjdk:latest
	VOLUME /tmpADD shop-0.0.1-SNAPSHOT.jar app.jar
	ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8012","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
	# 告诉Docker服务端暴露的端口,在容器启动时需要通过 -p 做端口映射
	EXPOSE 8012
	#设置时区
	RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5.服务器打包项目 mvn clean install
6.服务器打包镜像 mvn docker:build
7.服务器运行镜像 docker run -p 8080:8080 -d --name shop shop:1.0

linux 命令之yum

删除yum下来的东西

yum list installed #查看已经安装的
yum remove {名字}  #移除yum下来的

docker文档

一、redis
docker pull redis

cd /opt

mkdir redis

cd redis

touch redis.conf

vim redis.conf

bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456
notify-keyspace-events Ex

docker run -p 6378:6379 -v /opt/redis/data:/data -v /opt/redis/redis.conf:/usr/local/etc/redis/redis.conf -d --name redis-server redis /usr/local/etc/redis/redis.conf --appendonly yes

docker exec -ti ff5a3299b093 redis-cli
二、mysql
docker run -p 3306:3306 --name mysql -v /etc/mysql:/etc/mysql/my.cnf -v /etc/mysql/logs:/logs -v /etc/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

docker exec -it mysql /bin/bash

mysql -u root -p

GRANT ALL ON *.* TO 'root'@'%';

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

flush privileges;

docker run -p 3306:3306 --name mysql -v /etc/mysql/docker_v/mysql/conf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d

docker run -p 3306:3306 --name mysql -v /etc/mysql/docker_v/mysql/conf:/etc/mysql/conf.d -v /etc/mysql/docker_v/mysql/logs:/var/log/mysql -v /etc/mysql/docker_v/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
三、nacos
 docker pull nacos/nacos-server:1.0.0
 docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server:1.0.0
四、打包java程序
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD xxx.jar app.jar
ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8012","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 告诉Docker服务端暴露的端口,在容器启动时需要通过 -p 做端口映射
EXPOSE 8012
#设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


-------------------------------------------maven插件--------------------------------------------
            <!-- Docker maven plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- Docker maven plugin -->
五、kafka
1、kafka需要zookeeper管理,所以需要先安装zookeeper。 

下载zookeeper镜像
$ docker pull wurstmeister/zookeeper

2、启动镜像生成容器
## docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
$ docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2  --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
3、下载kafka镜像
$ docker pull wurstmeister/kafka

4、启动kafka镜像生成容器
## docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
$ docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka
参数说明:
-e KAFKA_BROKER_ID=0  在kafka集群中,每个kafka都有一个BROKER_ID来区分自己

-e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka 配置zookeeper管理kafka的路径172.16.0.13:2181/kafka

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092  把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如Java程序访问出现无法连接。

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口

-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

5、验证kafka是否可以使用

5.1、进入容器
$ docker exec -it kafka bash

5.2、进入 /opt/kafka_2.12-2.3.0/bin/ 目录下
$ cd /opt/kafka_2.12-2.3.0/bin/

5.3、运行kafka生产者发送消息
$ ./kafka-console-producer.sh --broker-list localhost:9092 --topic sun

发送消息
> {"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}
 
5.4、运行kafka消费者接收消息
$ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sun --from-beginning

六、Docker部署sentinel

docker pull bladex/sentinel-dashboard:1.7.0

docker run --name sentinel -d  -p 8858:8858  bladex/sentinel-dashboard:1.7.0

访问http://localhost:8858/即可

注意事项,用docker部署的sentinel需要在yml配置client-ip:本地ip才行

spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        # Nacos服务注册中心地址
        server-addr: localhost:8848
    sentinel:
      transport:
        # sentinel dashboard 地址
        dashboard: localhost:8858
        # 默认为8719,如果被占用会自动+1,直到找到为止
        port: 8719
        # 本地机器ip
        client-ip: 本机ip

docker打包部署

build
#!/bin/bash
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export MAVEN_HOME=/usr/local/maven
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
cd /opt/mydocker/stage/advance
echo "################################################"
echo "#######################MAVEN开始编译#########################"
echo "################################################"
mvn clean install
echo "################################################"
echo "#######################MAVEN 编译结束#########################"
echo "################################################"
echo "################################################"
echo "########################关闭删除Docker相关东西########################"
echo "################################################"
docker rmi -f $(docker images -q advance/advance-sale-web)
docker rmi -f $(docker images -q advance/advance-sale-web-stage)
echo "################################################"
echo "################################################"
echo "##################关闭结束##############################"
echo "################################################"
echo "################################################"
cd /opt/mydocker/stage/advance/advance-sale-web
echo "################################################"
echo "#######################Docker开始打包镜像#########################"
echo "################################################"
mvn docker:build
echo "#####################"
echo "################################################"
echo "#######################Docker打包结束#########################"
echo "################################################"
echo "######################Docer 启动进程##########################"

#docker run -p 9002:9004 -d -e "SPRING_PROFILES_ACTIVE=dev" --name advance-sale-web-java advance/advance-sale-web:0.0.1-SNAPSHOT
echo "################################################"
echo "#######################结束部署#########################"
echo "################################################"
cd /opt/mydocker/stage/advance/advance-sale-web/target/classes
cp kafka.client.truststore.jks ../docker/
rm -rf /opt/mydocker/stage/advance/advance-sale-web/target/docker/Dockerfile
cp /opt/mydocker/stage/Dockerfile-web /opt/mydocker/stage/advance/advance-sale-web/target/docker/
cd /opt/mydocker/stage/advance/advance-sale-web/target/docker/
mv Dockerfile-web Dockerfile
docker build -t advance/advance-sale-web-stage:v1.0 .
docker build -t advance/advance-sale-web:v1.0 .
#docker run -p 9002:9002 -p 8002:8012 -d -v /opt/application.properties:/opt/appconfig/application.properties -e "SPRING_PROFILES_ACTIVE=devtest" --name advance-sale-web-java advance/advance-sale-web:v2.0
推送
#!/bin/bash
docker login --username=zhengduozhe --password=Hd3nikafT6 registry.cn-shenzhen.aliyuncs.com
version=`docker images -q advance/advance-sale-web-stage`
echo $version
docker tag $version registry.cn-shenzhen.aliyuncs.com/hlmdev/advance/advance-sale-web-stage:v1.0
docker push registry.cn-shenzhen.aliyuncs.com/hlmdev/advance/advance-sale-web-stage:v1.0

停止
docker stop advance-sale-web-java
docker stop advance-sale-web-java_lc
docker stop advance-sale-web-java_hy
docker rm -f advance-sale-web-java
docker rm -f advance-sale-web-java_lc
docker rm -f advance-sale-web-java_hy
docker rmi -f $(docker images -q registry.cn-shenzhen.aliyuncs.com/hlmdev/advance/advance-sale-web-stage)
启动
#!/bin/bash
sudo docker login --username=zhengduozhe --password=Hd3nikafT6 registry.cn-shenzhen.aliyuncs.com
docker pull registry.cn-shenzhen.aliyuncs.com/hlmdev/advance/advance-sale-web-stage:v1.0
docker run -p 7076:9002 -p 7002:8012 -d -v /opt/application.properties:/opt/appconfig/application.properties -v /data/sda/adv-sale:/opt/miner/log/web -v /etc/localtime:/etc/localtime -e "SPRING_PROFILES_ACTIVE=stage" --name advance-sale-web-java registry.cn-shenzhen.aliyuncs.com/hlmdev/advance/advance-sale-web-stage:v1.0
#docker run -p 7088:9092 -d -v /etc/localtime:/etc/localtime -e "SPRING_PROFILES_ACTIVE=stage" --name hlm-pool-web-java1 registry.cn-shenzhen.aliyuncs.com/hlmdev/hlm-pool-web:v1.8.1-beta0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值