赞
踩
Docker官方网址: https://docs.docker.com/ 英文地址
Docker中文网址: http://www.docker.org.cn/ 中文地址
Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。
Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
Docker优点
简化程序
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
Docker 是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到
Docker 要求 CentOS 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker
1、通过 uname -r 命令查看你当前的内核版本
uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update
3、卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、安装docker (由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1)
sudo yum install -y docker-ce
8、启动并加入开机启动
systemctl start docker
systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
搜索镜像 # docker search java
可使用 docker search命令搜索存放在 Docker Hub(这是docker官方提供的存放所有docker镜像软件的地方,类似maven的中央仓库)中的镜像。执行该命令后, Docker就会在Docker Hub中搜索含有 java这个关键词的镜像仓库。
Docker Hub 官网https://hub.docker.com/search?q=java&type=image
下载镜像docker pull java:8
使用命令docker pull命令即可从 Docker Registry上下载镜像,执行该命令后,Docker会从 Docker Hub中的 java仓库下载最新版本的 Java镜像。如果要下载指定版本则在java后面加冒号指定版本
列出镜像使用 docker images命令即可列出已下载的镜像
删除镜像 使用 docker rmi java 命令即可删除指定镜像
docker rmi d23bdf5b1b1b
详细参考: https://cr.console.aliyun.com/cn-hangzhou/mirrors
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ljcuzwzw.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
启动容器 docker run -d -p 81:80 nginx
在本例中,为 docker run添加了两个参数,含义如下:
-d 后台运行
-p 宿主机端口:容器端口 #开放容器端口到宿主机端口
访问 http://Docker宿主机 IP:81/,将会看到nginx的主界面如下:
需要注意的是,使用 docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像, Docker就会自动从 Docker Hub下载镜像并启动一个 Docker容器。
列出容器用 docker ps命令即可列出运行中的容器
查看容器的信息 docker inspect 3af5513d208e
1、将jar包上传linux服务器/usr/local/dockerapp目录,在jar包所在目录创建名为Dockerfile的文件
2、在Dockerfile中添加以下内容
###指定java8环境镜像
FROM java:8
###复制文件到容器app-springboot
ADD docker-springboot-0.0.1.jar /app-springboot.jar
###声明启动端口号
EXPOSE 8080
###配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/app-springboot.jar"]
使用docker build命令构建镜像
docker build -t docker-springboot-0.0.1 .
格式: docker build -t 镜像名称:标签 '.'Dockerfile的相对位置
docker run -p 8080:8080 docker-springboot-0.0.1
重启systemctl restart docker
关闭防火墙 systemctl stop firewalld
先删除容器,在删除镜像
查询容器
docker ps –a
使用容器id删除容器
docker rm 18e672ecd8ed
查询镜像
docker images
使用镜像id删除镜像
docker rmi d23bdf5b1b1b
容器管理
进入到容(默认情况下软件安装的目录的/ect目录下Exit )
docker container exec -it f0b1c8ab3633 /bin/bash
停止Docker容器
docker stop mynginx
查询mysql版本
docker search mysql
下载MySQL5.7版本(这里选择的是第一个mysql镜像, :5.7选择的5.7版本)
docker pull mysql:5.7
等待下载完成、创建MySQL容器
docker run -p 3306:3306 --name mysql \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明: -p 3306:3306:将容器的3306端口映射到主机的3306端口 -v
/data/mysql/conf:/etc/mysql:将配置文件夹挂在到主机 -v
/data/mysql/log:/var/log/mysql:将日志文件夹挂载到主机 -v
/data/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机 -e
MYSQL_ROOT_PASSWORD=root:初始化root用户的密码
进入运行MySQL的docker容器:
docker exec -it mysql /bin/bash
使用MySQL命令打开客户端:
mysql -uroot -proot --default-character-set=utf8
下载Redis5.0的docker镜像:
docker pull redis:5
使用如下命令启动Redis服务:
docker run -p 6379:6379 --name redis \
-v /data/redis/data:/data \
-d redis:5 redis-server --appendonly yes
进入Redis容器使用redis-cli命令进行连接:
docker exec -it redis redis-cli
下载Nginx1.10的docker镜像:
docker pull nginx:1.10
先运行一次容器(为了拷贝配置文件):
docker run -p 80:80 --name nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/logs:/var/log/nginx \
-d nginx:1.10
将容器内的配置文件拷贝到指定目录:
docker container cp nginx:/etc/nginx /data/nginx/
修改文件名称
mv nginx conf
终止并删除容器:
docker stop nginx
docker rm nginx
使用如下命令启动Nginx服务:
docker run -p 80:80 --name nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/logs:/var/log/nginx \
-v /data/nginx/conf:/etc/nginx \
-d nginx:1.10
下载rabbitmq3.7.15的docker镜像:
docker pull rabbitmq:3.7.15
使用如下命令启动RabbitMQ服务:
docker run -p 5672:5672 -p 15672:15672 --name rabbitmq \
-d rabbitmq:3.7.15
进入容器并开启管理功能:
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
开启防火墙:
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload
下载Elasticsearch7.6.2的docker镜像:
docker pull elasticsearch:7.6.2
修改虚拟内存区域大小,否则会因为过小而无法启动:
sysctl -w vm.max_map_count=262144
使用如下命令启动Elasticsearch服务:
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.6.2
启动时会发现/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,再重新启动即可:
chmod 777 /mydata/elasticsearch/data/
安装中文分词器IKAnalyzer,并重新启动:
docker exec -it elasticsearch /bin/bash
#此命令需要在容器中运行
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
docker restart elasticsearch
开启防火墙:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
访问会返回版本信息:http://127.0.0.1:9200
下载Logstash7.6.2的docker镜像:
docker pull logstash:7.6.2
修改Logstash的配置文件logstash.conf中output节点下的Elasticsearch连接地址为es:9200,配置文件地址:https://github.com/macrozheng/mall/blob/master/document/elk/logstash.conf
output {
elasticsearch {
hosts => "es:9200"
index => "mall-%{type}-%{+YYYY.MM.dd}"
}
}
创建/data/logstash目录,并将Logstash的配置文件logstash.conf拷贝到该目录:
mkdir /mydata/logstash
使用如下命令启动Logstash服务;
docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
--link elasticsearch:es \
-v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-d logstash:7.6.2
进入容器内部,安装json_lines插件。
logstash-plugin install logstash-codec-json_lines
下载Kibana7.6.2的docker镜像:
docker pull kibana:7.6.2
使用如下命令启动Kibana服务:
docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:7.6.2
开启防火墙:
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
访问地址进行测试:http://127.0.0.1:5601
下载MongoDB4.2.5的docker镜像:
docker pull mongo:4.2.5
使用docker命令启动:
docker run -p 27017:27017 --name mongo \
-v /data/mongo/db:/data/db \
-d mongo:4.2.5
docker images 查看镜像文件
docker ps 查看正在运行的容器
docker ps –a 查看所有的容器
docker container exec -it f0b1c8ab3633 /bin/bash 进入到容器
exit 退出
docker version 查看版本
docker run -d -p 81:80 nginx 启动nginx容器
docker rmi imgageid 删除镜像
docker rm 容器id 删除容器
通过Docker安装的Nginx如何配置nginx.conf
Docker通过容器运行Nginx-----安装的目录 在容器中
/容器id/etc/nginx
/容器id/etc/mysql
默认情况下安装在 容器的etc目录
Docker 安装的软件如何修改配置文件的?
容器挂载外部配置文件 –v
使用挂载方式,外部的配置文件覆盖内部容器配置文件
安装jenkins:
docker run -p 8088:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
执行shell
#!/bin/bash #服务名称 SERVER_NAME=gw_appcenter # 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行 JAR_NAME=appcenter-all-0.1.0-exec # 源jar路径 #/usr/local/jenkins_home/workspace--->jenkins 工作目录 #demo 项目目录 #target 打包生成jar包的目录 JAR_PATH=/var/jenkins_home/workspace/gw_appcenter/appcenter-all/target # 打包完成之后,把jar包移动到运行jar包的目录--->work_daemon,work_daemon这个目录需要自己提前创建 JAR_WORK_PATH=/var/jenkins_home/workspace/appcenter echo "查询进程id-->$SERVER_NAME" PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'` echo "得到进程ID:$PID" echo "结束进程" for id in $PID do kill -9 $id echo "killed $id" done echo "结束进程完成" #复制jar包到执行目录 echo "复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH" echo cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH echo "复制jar包完成" echo cd $JAR_WORK_PATH #修改文件权限 echo chmod 777 $JAR_NAME.jar echo BUILD_ID=dontKillMe nohup java -jar $JAR_NAME.jar &
容器映射8081端口
1.重启容器
systemctl restart docker
2.清空未运行的容器
docker rm $(sudo docker ps -a -q)
docker run -p 8080:8080 -p 8087:8087 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。