Docker

安装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 删除指定的本地镜像

https://hub.docker.com/

命令

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

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

   转载规则


《Docker》 yywzt 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Hello World Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hex
2019-05-31 yywzt
下一篇 
RabbitMQ消息队列 RabbitMQ消息队列
简介RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在
2018-08-10
  目录