安装Docker
安装linux虚拟机
1)、VMWare、VirtualBox(安装);
2)、导入虚拟机文件centos7-atguigu.ova;
3)、双击启动linux虚拟机;使用 root/ 123456登陆
4)、使用客户端连接linux服务器进行命令操作;
5)、设置虚拟机网络;
桥接网络===选好网卡====接入网线;
6)、设置好网络以后使用命令重启虚拟机的网络
service network restart
7)、查看linux的ip地址
ip addr
8)、使用客户端连接linux;
在linux虚拟机上安装docker
步骤:
1、检查内核版本,必须是3.10及以上
uname -r
2、安装docker
yum install docker
3、输入y确认安装
4、启动docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker -v
Docker version 1.12.6, build 3e8e77d/1.12.6
5、开机启动docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
6、停止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 | 删除指定的本地镜像 |
命令
docker ps -a:列出所有容器
docker ps:列出所有正在运行的容器
docker image ls:列出所有的镜像
docker stop :暂停容器
docker rm -f :删除容器
容器操作
软件镜像(QQ安装程序)—-运行镜像—-产生一个容器(正在运行的软件,运行的QQ);
步骤:
1、搜索镜像
[root@localhost ~]# docker search tomcat
2、拉取镜像
[root@localhost ~]# docker pull tomcat
2.1、中国官方镜像加速
docker pull registry.docker-cn.com/library/
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
[root@localhost ~]# docker run -d -p 8888:8080 tomcat
-d:后台运行
-p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
10、为了演示简单关闭了linux的防火墙
service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙
11、查看容器的日志
docker logs container-name/container-id
12、查看容器的ip
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
13、查看对于容器的id、镜像id,并删除
docker rm -f $(docker ps -a | grep 'spring_data_jpa' | awk '{print $1}')
docker rmi $(docker images | grep 'spring_data_jpa' | awk '{print $3}')
更多命令参看
https://docs.docker.com/engine/reference/commandline/docker/
可以参考每一个镜像的文档
docker网络
docker network ls 查看网络信息
docker network create --subnet=网段 网络名称
docker network rm 网络名称
Docker安装Mysql
下载msyql
[root@bogon ~]# docker pull registry.docker-cn.com/library/mysql:5.7
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.docker-cn.com/library/mysql 5.7 75576f90a779 13 days ago 372 MB
修改名称tag
[root@bogon ~]# docker tag registry.docker-cn.com/library/mysql:5.7 mysql
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 75576f90a779 13 days ago 372 MB
registry.docker-cn.com/library/mysql 5.7 75576f90a779 13 days ago 372 MB
运行一个mysql容器(自动启动)
[root@localhost ~]# docker run --restart=always --name mysqlServer -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
ba54a57a48af164a5c6abdd05429196d427fc602608bd94c8badb2e9bcc73b42
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
ba54a57a48af mysql:5.7 "docker-entrypoint..." 10 seconds ago Up 9 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysqlServer
挂载外部配置和数据安装
创建目录和配置文件my.cnf
mkdir /docker
mkdir /docker/mysql
mkdir /docker/mysql/conf
mkdir /docker/mysql/data
创建my.cnf配置文件
touch /docker/mysql/conf/my.cnf
my.cnf添加如下内容:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
创建容器,并后台启动
docker run --restart=always -p 3306:3306 --privileged=true -v /docker/mysql/conf/my.cnf:/etc/my.cnf -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysqlServer -d mysql:5.7
docker run --restart=always -p 3306:3306 --privileged=true -v /yw/docker/mysql8.0/conf/my.cnf:/etc/my.cnf -v /yw/docker/mysql8.0/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=Root123 --name mysql -d mysql:8.0 --default-authentication-plugin=mysql_native_password
参数说明:
–restart=always:自动重启
–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /docker/mysql/conf/my.cnf:/etc/my.cnf:映射配置文件
-v /docker/mysql/data:/var/lib/mysql:映射数据目录
连接Mysql
[root@bogon ~]# docker exec -it 54d1fe9e4f37 /bin/bash
root@54d1fe9e4f37:/# mysql -h 127.0.0.1 -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show database;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
mysql>
Docker安装Jenkins
docker run --restart=always --name jenkins --user=root -p 8080:8080 -v /yw/data/jenkins_home:/var/jenkins_home -v /yw/maven/apache-maven-3.5.4:/usr/local/maven -v /yw/java/jdk1.8.0_11:/usr/local/jdk -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -d jenkins/jenkins:lts
-v后面就是我将宿主机的安装路劲映射到镜像中,这样在jenkins中就可以配置了。
jenkins配置
初始化jenkins及安装插件
启动完jenkins后通过浏览器输入地址http://部署jenkins主机IP:端口
根据提示从输入administrator password 或者可以通过启动日志
docker logs devops-jenkins
复制代码
查看这个password 如:
jenkins自动部署jar至docker的shell脚本
echo "run springdatajpa start"
docker stop springdatajpa
docker rm -f springdatajpa
docker run --restart=always -p 18080:18080 -v /yw/jar/SpringDataJpa-0.0.1-SNAPSHOT.jar:/usr/local/SpringDataJpa-0.0.1-SNAPSHOT.jar --name springdatajpa frolvlad/alpine-oraclejdk8:slim java -jar -Dspring.profiles.active=prod /usr/local/SpringDataJpa-0.0.1-SNAPSHOT.jar
echo "run springdatajpa end"
Docker部署RabbitMq集群
安装RabbitMq
docker pull registry.docker-cn.com/library/rabbitmq:3.6.15-management
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.docker-cn.com/library/rabbitmq 3.6.15-management f2e38e79371c 4 months ago 149 MB
启动RabbitMq
docker run --restart=always -d --hostname rabbitmq1 --name myrabbitmq1 -p 15672:15672 -p 5672:5672 rabbitmq:3.6.15-management
配置RabbitMq集群
# 启动RabbitMq容器
docker run --restart=always -d --hostname rabbitmq1 --name myrabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run --restart=always -d --hostname rabbitmq2 --name myrabbitmq2 -p 5673:5672 --link myrabbitmq1:rabbitmq1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
docker run --restart=always -d --hostname rabbitmq3 --name myrabbitmq3 -p 5674:5672 --link myrabbitmq1:rabbitmq1 --link myrabbitmq2:rabbitmq2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management
# 配置集群
docker exec -it myrabbitmq1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
# 集群信息
root@rabbitmq1:/# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1
[{nodes,[{disc,[rabbit@rabbitmq1]}]},
{running_nodes,[rabbit@rabbitmq1]},
{cluster_name,<<"rabbit@rabbitmq1">>},
{partitions,[]},
{alarms,[{rabbit@rabbitmq1,[]}]}]
# 退出rabbitmq1
root@rabbitmq1:/# exit
# 将myrabbitmq2加入rabbitmq1的集群中
docker exec -it myrabbitmq2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
# 集群信息
root@rabbitmq2:/# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq2
[{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2]}]},
{running_nodes,[rabbit@rabbitmq1,rabbit@rabbitmq2]},
{cluster_name,<<"rabbit@rabbitmq1">>},
{partitions,[]},
{alarms,[{rabbit@rabbitmq1,[]},{rabbit@rabbitmq2,[]}]}]
# 退出rabbitmq2
root@rabbitmq2:/# exit
# 将myrabbitmq3加入rabbitmq1的集群中
docker exec -it myrabbitmq3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
# 集群信息
root@rabbitmq3:/# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq3
[{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},
{running_nodes,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]},
{cluster_name,<<"rabbit@rabbitmq1">>},
{partitions,[]},
{alarms,[{rabbit@rabbitmq1,[]},{rabbit@rabbitmq2,[]},{rabbit@rabbitmq3,[]}]}]
# 退出rabbitmq3
root@rabbitmq3:/# exit
"rabbit@rabbitmq1">"rabbit@rabbitmq1">"rabbit@rabbitmq1">
docker部署Eureka集群
docker run --restart=always -p 18760:18760 -v /yw/jar/eureka-server/eureka-server-0.0.1-SNAPSHOT.jar:/usr/local/eureka-server-0.0.1-SNAPSHOT.jar --name EurekaServerPeer1 frolvlad/alpine-oraclejdk8:slim java -jar -Dspring.profiles.active=peer1 /usr/local/eureka-server-0.0.1-SNAPSHOT.jar
docker run --restart=always -p 18761:18761 -v /yw/jar/eureka-server/eureka-server-0.0.1-SNAPSHOT.jar:/usr/local/eureka-server-0.0.1-SNAPSHOT.jar --name EurekaServerPeer2 frolvlad/alpine-oraclejdk8:slim java -jar -Dspring.profiles.active=peer2 /usr/local/eureka-server-0.0.1-SNAPSHOT.jar
docker安装mongodb
docker run --restart=always --name mongodb -p 27017:27017 -v /yw/mongodb/data:/data/db -d mongo:latest --auth
docker安装redis
docker run --name redis-server -p 6379:6379 -v /yw/redis/data:/data -d redis:3.2 redis-server --requirepass "root" --appendonly yes
docker安装kafka
docker run --restart=always -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=139.199.179.164:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://139.199.179.164:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e LANG="en_US.UTF-8" -v /docker/kafka/kfk_log:/kafka -v /var/run/docker.sock:/var/run/docker.sock -t wurstmeister/kafka
docker安装kafka-manager
docker run -itd --restart=always --name=kafka-manager -p 9000:9000 -e ZK_HOSTS="139.199.179.164:2181" sheepkiller/kafka-manager
docker部署jar
镜像方式
进入项目路径
mvn package
构建镜像
mvn package docker:build
启动项目
docker run --restart=always -p 18080:18080 -t spring_data_jpa
直接docker运行jar方式
docker run --restart=always -p 18080:18080 -v /yw/jar/SpringDataJpa-0.0.1-SNAPSHOT.jar:/usr/local/SpringDataJpa-0.0.1-SNAPSHOT.jar --name springdatajpa frolvlad/alpine-oraclejdk8:slim java -jar -Dspring.profiles.active=prod /usr/local/SpringDataJpa-0.0.1-SNAPSHOT.jar