一、安装
- yum 更新到最新版本
yum update
- 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker
yum -y install docker-ce
- 设置ustc镜像
mkdir -p /etc/docker
vim /etc/docker/daemon.json
然后输入以下json内容后保存并退出
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
- 启动docker和通知docker
systemctl start docker #启动
systemctl status docker #查看docker状态
systemctl stop docker #停止
#重启docker
systemctl restart docker
二、docker相关命令
1. 镜像相关命令
- 查看镜像
docker images
- 搜索镜像
docker search 名字 #如 docker search centos。
- 下载镜像
docker push 名字 #如 docker push centos:7;若直接docker search centos,则是下载最新版本的
- 删除镜像
docker rmi 镜像ID #如 docker rmi 8652b9f0cb4c
docker rmi 'docker images -q' #删除所有镜像
- 获取容器/镜像的元数据(ip)
#查看所有元信息
docker inspect 容器id
#docker查看容器的网络ip
docker inspect 容器ID | grep IPAddress
#获取指定容器的ip
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 68f0d84be6ad
#获取所有容器ip
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
2. 容器相关命令
- 查看正在运行的容器
docker ps
- 查看所有容器
docker ps -a
- 查看最后一次运行的容器
docker ps -l
- 查看停止的容器
docker ps -f status= exited
- 创建容器
-i
表示运行容器-t
表示容器启动后会进入其命令行--name
为创建的容器命名-v
表示目录映射关系,可以使用多个-v
-d
创建一个守护式容器在后台运行,不会自动登录容器-p
表示端口映射,
#交互式创建
docker run -it --name=容器名称 镜像名称:标签/bin/bash #如:docker run -it --name=mycentos centos:7 /bin/bash
#守护式创建
docker run -di --name=mycentos2 centos:7
# 运行该容器
docker exec -it mycentos2 /bin/bash
-
退出当前容器
exit
,后台还是运行的 -
停止容器
docker stop 容器ID
,如docker stop 8652b9f0cb4c -
启动
docker start 容器ID
,重启docker restart 容器ID(或名字)
-
文件宿主机拷贝到其他容器
docker cp 文件名 容器ID:目录
,如docker cp myconfig.cfg 8652b9f0cb4c:/usr/local -
其他容器文件拷贝到宿主机中如
docker cp mycentos2:/usr/local/myconfig.cfg myconfig2.cfg
-
目录挂载,创建容器的时候,将宿主机的目录和容器内目录进行映射,可以映射端口
#创建容器 添加 -v 后面为宿主机目录容器:容器目录,若共享多级可能有提示权限不足,此时需要添加参数 --privileged=true
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 cnetos:7
- 查看容器IP地址
docker inspect 容器ID
,也可以直接输出IP地址docker inspect --fomat='{{.NetworkSettings.IPAddress}}' 容器ID
- 删除容器
docker rm 容器ID
,先把容器关掉才能删除 - 修改名称
docker rename 原来的名称(ID) 新名称
三、docker安装mysql、redis等
- mysql
#下载
docker pull mysql:5.6
#创建mysql容器
docker run -di --name=mysql56 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=612345 mysql:5.6
#运行mysql
docker exec -it mysql56 /bin/bash
#登录mysql
mysql -uroot -p612345 --default-character-set=utf8
- redis
#下载
docker pull redis
#创建redis容器
docker run -di --name=redis -p 6379:6379 redis
- rabbitmq
#下载
docker pull rabbitmq:3.7.12
#创建rabbitmq容器,并添加目录挂载,注意挂载多种目录加参数 --privileged=true 防止权限。
docker run -di --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15672:15672 -p 15671:15671 -v /usr/local/mydata/rabbitmq/etc:/etc/rabbitmq -v /usr/local/mydata/rabbitmq/lib:/var/lib/rabbitmq -v /usr/local/mydata/rabbitmq/log:/var/log/rabbitmq --privileged=true rabbitmq:3.7.12
#docker run -di --name=rabbitmq -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15672:15672 -p 15671:15671 rabbitmq:3.7.12
#进入rabbitmq
docker exec -it rabbitmq /bin/bash
#安装rebbitmq插件
rabbitmq-plugins enable rabbitmq_management
#让rabbitmq开机启动
docker update rabbitmq --restart=always
- elasticsearch
#查看镜像
docker search elasticsearch
#下载
docker pull elasticsearch:7.10.1
#更改配置
sysctl -w vm.max_map_count=262144
#创建容器
docker run -di --name=elasticsearch -p 9200:9200 -e "discovery.type=single-node" -e "cluster.name=elasticsearch" -v /usr/local/mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.10.1
#启动
docker exec -it elasticsearch /bin/bash
#安装分词器,注意版本要和elasticsearch对应 (如果安装失败重启elasticsearch容器再重新安装)
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.1/elasticsearch-analysis-ik-7.10.1.zip
#安装好分词器后重启elasticsearch
docker restart elasticsearch
- 安装nginx
#下载
docker pull ngnix
#运行
docker run -di --name=nginx -p 80:80 nginx
#创建nginx目录后,挂载到该目录
docker cp nginx:/etc/nginx /usr/local/mydata/nginx/
#停止nginx
docker stop nginx
# 删除容器
docker rm nginx
#重新挂载运行nginx容器
#docker run -di --name=nginx -p 80:80 -v /usr/local/mydata/nginx/nginx:/etc/nginx nginx
docker run -di --name=nginx -p 80:80 -v /usr/local/mydata/nginx/html:/usr/share/nginx/html -v /usr/local/mydata/nginx/logs:/var/log/nginx -v /usr/local/mydata/nginx/conf:/etc/nginx nginx
- 安装kibana
#下载
docker pull kibana:7.10.1
#创建目录
mkdir -p /usr/local/mydata/kibana/config
#编辑配置
vim /usr/local/mydata/kibana/config/kibana.yml
server.port: 5601 #bana的映射端口
server.host: "0.0.0.0" #网关地址
##Kibana实例对外展示的名称
server.name: "kibana"
##Elasticsearch的集群地址,也就是说所有的集群IP
#elasticsearch.hosts: ["http://111.231.110.177:9200","http://111.231.110.177:9201","http://111.231.110.177:9202"]
elasticsearch.hosts: ["http://IP:9200"]
i18n.locale: "zh-CN" ##设置页面语言,中文使用zh-CN,英文使用en
xpack.monitoring.ui.container.elasticsearch.enabled: true
# wq保存并退出
#创建并启动容器
docker run -d --name=kibana --restart=always -p 5601:5601 -v /usr/local/mydata/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.10.1
#记得开放端口5601
- 安装logstash
#下载
docker pull logstash:7.10.1
##运行
docker run -d --name=logstash logstash:7.10.1 -v /usr/local/mydata/logstash/config:/usr/share/logstash/config -v /usr/local/mydata/logstash/data :/usr/share/logstash/data -v /usr/local/mydata/logstash/pipeline:/usr/share/logstash/pipeline
## COPY配置文件至本地
mkdir -p /usr/local/mydata/logstash
docker cp logstash:/usr/share/logstash/config /usr/local/mydata/logstash/config/
docker cp logstash:/usr/share/logstash/data /usr/local/mydata/logstash/data/
docker cp logstash:/usr/share/logstash/pipeline /usr/local/mydata/logstash/pipeline/
chmod 777 -R /usr/local/mydata/logstash
## 移除容器
docker rmi logstash
- 安装Jenkins
docker pull jenkins/jenkins
docker run -di --name=jenkins -p 8080:8080 -v /usr/local/mydata/jenkins_home:/var/jenkins_home jenkins/jenkins
docker run -d -p 8888:8080 -p 50000:50000 -v /var/jenkins_mount:/var/jenkins_home -v /usr/local/java/jdk1.8/bin/java:/usr/local/java/jdk1.8/bin/java -v /usr/local/java/jdk1.8:/usr/local/java/jdk1.8 -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone --name jenkins jenkins/jenkins
-- ----指定jdk和maven
--
docker run -d -p 8080:8080 -p 50000:50000 -v /usr/local/mydata/jenkins_home:/var/jenkins_home -v /usr/local/java/jdk1.8.0_151/bin/java:/usr/local/java/jdk1.8/bin/java -v /usr/local/java/jdk1.8.0_151:/usr/local/java/jdk1.8 -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins
-- ----
docker logs jenkins -- 查看密码
3. 容器迁移和备份
- 容器保存为镜像
docker commit redis myredis
- 镜像备份。将镜像保存为tar文件
docker save -o myredis.tar myredis
- 镜像恢复和迁移
#首先删除myredis 镜像 然后执行恢复,参数 -i 输入文件
docker load -i myredis.tar
四、私有仓库
#下载私有镜像
docker pull registry
#创建容器
docker run -di --name=registry -p 5000:5000 registry
#打开vim /etc/docker/daemon.json,添加信任"insecure-registries":["主机:端口"]
vim /etc/docker/daemon.json,
然后添加json:"insecure-registries":["192.168.238.130:5000"]
#镜像上传搭配私有仓库
#打包贴标签
docker tag elasticsearch-back-copy 192.168.238.130:5000/elasticsearch-back-copy
#上传到私有仓库
docker push 192.168.238.130:5000/elasticsearch-back-copy
#其他服务器下载私有仓库的镜像。步骤:安装docker,安装私有仓库、修改/etc/docker/daemon.json配置让其信任,然后pull就可以下载了
五、DockerMaven插件
让docker自动部署
- 修改宿主机的docker,让其可以远程访问
vim /lib/systemd/system/docker.service
修改里面以ExecStart开头的行,修改为
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
#修改完后刷新
systemctl daemon-reload
#重启docker
systemctl restart docker
#启动私服
docker start registry
#最后自己的项目通过DockerMavend插件打包后在docker运行,接着在浏览器上访问就可以了