安装
打开帮助文档
#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