标签:数字 数据库 extra 目录 操作 redis 指令 http install
docker 基于操作系统之上的虚拟化技术,采用的是容器的概念。与之对应的是基于硬件的虚拟化技术,像vm。docker是管理容器的引擎,基于linux的容器技术,对linux的容器技术(lxc)进行了进一步的封装,是对软件和其依赖环境的标准打包,应用之间相互隔离,共享一个操作系统的内核。
yum list installed | grep docker #检查是否安装docker
#如果安装了会出现下面的信息
docker.x86_64 2:1.13.1-205.git7d71120.el7.centos @extras
docker-client.x86_64 2:1.13.1-205.git7d71120.el7.centos @extras
docker-common.x86_64 2:1.13.1-205.git7d71120.el7.centos @extras
docker yum install docker -y #安装docker
docker -v #查看docker版本
#卸载docker
yum remove docker.x86_64 -y
yum remove docker-client.x86_64 -y
yum remove docker-common.x86_64 -y
#ps:-y表示自动确认
service docker start #启动docker
service docker stop #停止docker
service docker restart #重启docker
service docker status #查看docker运行状态
ps -ef | grep docker #查看docker进程
docker info #查看docker信息
docker不是容器,是一个管理容器的引擎。docker服务启动->下载镜像->启动该镜像得到一个容器->容器中运行程序。
docker引擎包括docker的进程,此外还有docker客户端,使用docker提供的命令通过客户端来操作docker,docker构建一个容器的过程是通过客户端发出构建的命令,然后到达docker引擎去找对应的镜像,如果没有对应的镜像就会去docker的远程仓库去找,找到后就将镜像下载到docker引擎中,然后docker去运行这个镜像,从而得到一个容器。
搜索镜像可以在镜像仓库的网站上去搜索,可以直接命令搜索。
docker search 镜像名称 #搜索某个镜像 #比如搜索tomcat docker search tomcat #下载镜像/拉取镜像 docker pull 镜像名称 #运行镜像 前台启动 可以在控制台看到日志 通过ctrl+c即可关闭 docker run 镜像名称/镜像id #后台启动 在run后面加上参数-d docker run -d 镜像名称/镜像id docker images #查看docker有多少镜像 docker ps #查看正在运行了哪些容器 docker stop 容器id #停止指定的容器 #进入某个容器,其中i表示交互式的,也就是保持标准输入流打开 #t表示虚拟控制台,分配一个虚拟控制台 docker exec -it 容器id bash #退出容器 exit
需要有端口映射,docker容器默认采用桥接模式与宿主机通信,需要将宿主机的ip端口映射到容器的ip端口上。就是用户访问linux的8080端口,然后要将linux的8080端口映射到容器的8080端口上。
通过映射宿主机端口的方式启动容器:
#映射宿主机的8080端口到容器docker.io/tomcat上
docker run -d -p 8080:8080 docker.io/tomcat
#前面的8080是linux的端口,后面的8080是容器的端口
镜像相等于一个类,通过镜像产生的容器相当于这个类的实例化对象,镜像可以通过pull从官方镜像仓库下载,也可以自己去Dockerfile文件构建。
#删除镜像
# rmi 是删除镜像 rm 是删除容器
docker rmi redis:latest
容器是镜像创建的运行实例,它可以被启动、停止、删除。
docker start 容器id或者容器名称 #启动已有且已经停止运行的容器
docker rm 容器id/容器名称 #删除容器 运行时的容器是不允许删除的
docker inspect 容器id/容器名称 #查看容器的元信息
docker stop $(docker ps -q) #停用全部运行中的容器
docker rm (docker ps -aq) #删除全部容器
docker stop $(docker ps -q) & docker rm -f $(docker ps -aq) #停用并删除容器
仓库用于存放镜像文件,仓库有个仓库注册服务器的概念,仓库注册服务器上存在着很多的仓库,每个仓库有包含众多的镜像,每个镜像有自己的标签(tag),仓库又分公开仓库和私有仓库。
#这是一条语句,表示运行mysql容器并创建一个workdb的数据库,密码是123456,后台运行,
#映射宿主机的3306端口
docker run -d -p 3306:3306 -e MYSQL_DATABASE=workdb -e MYSQL_ROOT_PASSWORD=123456 docker.io/mysql
# -d 表示后台运行
# -p 表示映射端口,将宿主机的端口和容器的端口做映射
# -e 表示环境变量,指定环境,后面的都是mysql的相关环境
# -e MYSQL_DATABASE=workdb 表示mysql的数据库的名称叫workdb
# -e MYSQL_ROOT_PASSWORD=123456 表示mysql root用户的密码是123456
# docker.io/mysql mysql的镜像名称
mysql -u root -p #登录mysql
假设现在mysql的容器里面建了一张表,并添加了数据,这个时候将这个容器关闭掉,那么再次通过命令打开的时候,之前的数据和表都会没有,这个时候处于瞬时状态。
那么怎么进行持久化:
#将宿主机/opt/mysql/data这个路径作为和容器进行数据同步的路径
# /opt/mysql/data 宿主机的路径
# /var/lib/mysql 容器的路径
docker run -d -p 3306:3306 -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 docker.io/mysql
意思是通过-v命令将宿主机的路径和容器的路径关联起来,到时候容器的数据会同步到宿主机的路径下。
其原理就是通过该命令启动容器,将容器的某个路径下的数据同步到宿主机的某个目录,等到容器停止运行的时候,再次运行之前的命令,这个时候会将宿主机那个目录下的数据同步到容器的那个路径。
docker cp /root/test.html 容器id:/usr/local/tomcat/webapps/Root
#将宿主机root下的test.heml的文件拷贝到某个容器路径为/usr/local/tomcat/webapps/Root下
docker容器被修改后保存为新的镜像,那么下次通过镜像创建的容器,就是带有上次数据资源的容器了。
#将容器id为xxx的容器重新保存为镜像名称为yyy的新镜像
docker commit xxx yyy
? 制作新镜像后,需要将新镜像复制到另一台服务器中使用,有两种方式可以做到,一种是上传镜像到仓库中(本地仓库或者远程的公共仓库)。
? 在etc/docker路径下修改docker.json文件
#配置加速:
#在etc/docker路径下修改docker.json文件
vim docker.json #"registry-mirrors":["https://registry.docker-cn.com"]
#查找仓库注册服务器
docker search registry
#拉取仓库注册服务器
docker pull 仓库服务器名称
仓库也是一个镜像
docker run -d -p 5000:5000 registry #启动仓库镜像
通过http://ip:5000/v2/_catalog 访问镜像仓库
通过http://ip:5000/v2/cat/tomcat/tags/list 查看上传的镜像的版本
#打标签:
docker tag [imageid] ip:5000/cat/镜像名称
#推送到镜像仓库:
docker push ip:5000/cat/镜像名称
第二种是将新镜像保存为一个文件,然后将这个文件复制到另一个机器上,然后直接运行这个文件。可以使用docker save和docker load来存储和加载镜像。
docker save -o 要保存的文件名 要保存的镜像名称
#-o 表示output 文件名一般是文件名称.tar.gz格式
#然后再另一台宿主机上
docker load --input 文件名称
#或者
docker load < 文件名
使用Dockerfile用于构建Docker镜像,Dockerfile文件是由一行行命令语句组成,基于这些命令即可以构建一个镜像。
分为四个部分:
FROM centos:latest #从centos:latest这个基础镜像开始构建
MAINTAINER cat #作者信息
ADD jdk-8u191-linux-x64.tar.gz /opt/jdk #将jdk的压缩包自动解压到/opt/jdk
ENV JAVA_HOME /opt/jdk/jdk1.8.0_191 #通过env配环境变量JAVA_HOME
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
CMD java -version #执行java-version命令
#除此之外,像tomcat这样的容器,构建过程中可能需要指定端口,这是可以通过EXPOSE来进行指定
EXPOSE 8080
编辑好Dockerfile后,执行以下命令:
docker build -t 镜像名称 #构建镜像
docker run -d 镜像名称 #运行镜像
1、将开发的springboot程序打包成jar包;
2、将包上传至linux的某个目录;
3、定义Dockerfile文件,用于创建项目镜像;
FROM 某个镜像
MAINTAINER cat
ADD jar包 某个目录
#执行赋权命令
RUN chmod +x 某个目录/jar包
#RUN指令 在当前镜像基础之上执行指定命令,并提交为新镜像,当命令较长时可使用\换行,如果需要多条命令联合可使用&&;
CMD java -jar 目录/jar包名
jar包所需依赖的环境也要启动。
war包是部署在tomcat中的。
FROM tomcat #依赖于tomcat的镜像
MAINTAINER cat
ADD war包 某个目录
EXPOSE 8080 #指定端口
CMD 目录/bin/catalina.sh run
将源码上传至linux,通过maven打包,然后再构建镜像,运行容器。
在linux下配置maven环境。
maven clean package -Dmaven.test.skip=true #打包
容器编排用于管理镜像容器的工具,用于定义和运行多个容器的应用工具,可以在一个配置文件中配置应用的所有服务,然后使用一个命令即可创建并启动配置文件中所配置的所有服务。
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#检查是否安装成功
docker-compose --version
#查看帮助命令
docker-compose --help
docker-compose up -d --scale 服务名=数字 #创建并启动容器
#将某个springboot的程序部5份,那么数字就是5
#scale表示对应的服务同时启动几个容器
docker-compose down #停止并删除容器,如果不想删除则使用stop
标签:数字 数据库 extra 目录 操作 redis 指令 http install
原文地址:https://www.cnblogs.com/zhaojunjin/p/14887616.html