docker笔记
程序员文章站
2022-03-02 08:57:11
...
一、简介
docker是一种开源的应用容器引擎,开发者可以打包应用及依赖包到一个容器中,然后发布到任何linux系统之上。docker只能运行在64位的linux系统上,内核版本最好是3.8以上。
二、常用命令
(1)查看本地镜像
(2)查看docker容器进程
(3)启动容器
(4)查看容器信息
(5)删除容器
(6)删除镜像
(7)下载镜像
(8)上传镜像
(9)搜索镜像
(10)提交新镜像
(11)构建镜像
三、结合项目的部署
主要是替换原6983端口tomcat的部署
(1)首先安装docker,这里就不做过多描述,官网和网上都有介绍。
(2)下载tomcat镜像
镜像名为tomcat,tag名为7-jre8
(3)查看本地镜像
(4)项目部署准备
将项目代码放到/usr/local/web-src目录下,将tomcat下的context.xml和server.xml
放到/usr/local/web-conf(因为数据库连接改为jndi的方式),在/usr/local/下新建web_log目录,用于存放容器中tomcat的日志。
(5)启动容器,运行镜像
命令参数解析:
(6)启动3个容器
将上述命令中的端口11111,分别改为11112和11113,在运行命令。
(7)查看容器是否启动成功
status显示Up XX seconds,表示启动成功。
(8)实验部署是否成功
分别访问
http://172.18.8.35:11111/<context>/<url>,
http://172.18.8.35:11112/<context>/<url>,
http://172.18.8.35:11113/<context>/<url>
看是否能得到正确数据
(9)部署配置nginx负载
nginx可以安装在宿主主机,修改配置/usr/local/nginx/conf/nginx.conf,在http模块中增加如下代码:
(10)测试负载是否配置成功
访问http://172.18.8.35:6983<context>/<url>查看是否能返回正确数据。
四、制作镜像
docker制作有两种方式,docker commit 和 docker build
commit方式就是下载基础的镜像,然后进入镜像中,安装一些工具,然后执行
build方式需要自己编写脚本来制作自己的镜像。
commit制作例子:
(1)打开下载的基础镜像ubuntu系统
(2)安装apache
(3)执行exit退出容器
(4)提交保存镜像到hub
build制作例子:
(1) 首先创建Dockerfile文件,该文件里编写构建代码。将jdk和tomcat目录放到Dockerfile文件的同一目录下,
编写Dockerfile,如下
代码说明:
FROM:必须存在的命令,表示使用哪个基础镜像。该实例为使用ubuntu 14.04系统,基础镜像会去docker hub上下载
MAINTAINER:表示制作人信息
ADD:将软件添加到镜像中。该实例为将主机的jdk1.7.0_25目录,添加到镜像系统文件中的/usr/local/jdk1.7.0_25
ENV:设置环境变量
EXPOSE:Container内部服务开启的端口
WORKDIR:切换工作目录,可进行多次切换(相当于cd命令)
USER:执行container的用户,如未指定,则默认使用root用户
ENTRYPOINT:Container启动时执行的命令,一个Dockerfile中只能有一条ENTRYPOINT
CMD:Container 启动时执行的命令,一个Dockerfile 中只能有一条CMD命令,如果有多条则只执行最后一条CMD
注意:docker做tomcat镜像时,Dockerfile文件执行命令必须执行tomcat目录中的catalina.sh,不能执行startup.sh。(执行startup.sh,容器启动后会立刻停止)
(2)进入Dockerfile所在目录,执行docker build构建镜像。
注意:后面加”.”,表示当前目录,一定要加
(3)构建完成后,通过docker images可以看到本地已经构建好镜像
(4)执行
将名称改为同hub管理页面相同的存储空间名称。docker hub:https://hub.docker.com/
(5)执行
上传到docker hub
docker是一种开源的应用容器引擎,开发者可以打包应用及依赖包到一个容器中,然后发布到任何linux系统之上。docker只能运行在64位的linux系统上,内核版本最好是3.8以上。
二、常用命令
(1)查看本地镜像
docker images
(2)查看docker容器进程
docker ps(查看正在运行的容器) docker ps –a(查看全部容器)
(3)启动容器
docker run <image_name>:<tag_name> docker run -d <image_name>:<tag_name>(已daemon的方式启动) docker run –p <local_port>:<contrainer_port> <image_name>:<tag_name>(将容器的端口映射到宿主主机的端口) docker run –v <local_file>:< contrainer_file> <image_name>:<tag_name>(挂载文件,宿主主机和容器共享文件)
(4)查看容器信息
docker inspect < contrainer_id>(contrainer_id通过命令2获得)
(5)删除容器
docker rm < contrainer_id> docker rm -f < contrainer_id>(强制删除容器)
(6)删除镜像
docker rmi < image_id>(image_id通过命令1获得)
(7)下载镜像
docker pull <image_name>:<tag_name>
(8)上传镜像
docker tag <image_id> <namespace>/<name>:<tag>(将镜像打成tag) docker push <namespace>/<name>:<tag>(上传)
(9)搜索镜像
docker search <image_name>:<tag_name>
(10)提交新镜像
docker commit <container_id> [REPOSITORY[:TAG]]
(11)构建镜像
docker build -t <path> .
三、结合项目的部署
主要是替换原6983端口tomcat的部署
(1)首先安装docker,这里就不做过多描述,官网和网上都有介绍。
(2)下载tomcat镜像
docker pull tomcat:7-jre8
镜像名为tomcat,tag名为7-jre8
(3)查看本地镜像
docker images
(4)项目部署准备
将项目代码放到/usr/local/web-src目录下,将tomcat下的context.xml和server.xml
放到/usr/local/web-conf(因为数据库连接改为jndi的方式),在/usr/local/下新建web_log目录,用于存放容器中tomcat的日志。
(5)启动容器,运行镜像
docker run -d -p 11111:8080 -v /etc/localtime:/etc/localtime:ro -v /usr/local/web-src:/usr/local/tomcat/webapps -v /usr/local/web_log/tomcat_11111_log:/usr/local/tomcat/logs -v /usr/local/web-conf/server.xml:/usr/local/tomcat/conf/server.xml -v /usr/local/web-conf/context.xml:/usr/local/tomcat/conf/context.xml -v /usr/local/web-src/hjlc/WEB-INF/lib/druid-1.0.16.jar:/usr/local/tomcat/lib/druid-1.0.16.jar tomcat:7-jre8
命令参数解析:
-p 11111:8080 ----将宿主主机的11111端口映射到容器的8080端口 -v /etc/localtime:/etc/localtime:ro ----将宿主主机的系统时间同步给容器系统 -v /usr/local/web-src:/usr/local/tomcat/webapps ----将宿主主机的项目同步到容器 -v /usr/local/web_log/tomcat_11111_log:/usr/local/tomcat/logs ----将容器中的日志同步到宿主主机 -v /usr/local/web-conf/server.xml:/usr/local/tomcat/conf/server.xml ----用宿主主机的 server.xml覆盖容器中的server.xml -v /usr/local/web-conf/context.xml:/usr/local/tomcat/conf/context.xml ----用宿主主机的 context.xml覆盖容器中的context.xml -v /usr/local/web-src/hjlc/WEB-INF/lib/druid-1.0.16.jar:/usr/local/tomcat/lib/druid-1.0.16.jar ----将jar包加入容器tomcat中
(6)启动3个容器
将上述命令中的端口11111,分别改为11112和11113,在运行命令。
(7)查看容器是否启动成功
docker ps -a
status显示Up XX seconds,表示启动成功。
(8)实验部署是否成功
分别访问
http://172.18.8.35:11111/<context>/<url>,
http://172.18.8.35:11112/<context>/<url>,
http://172.18.8.35:11113/<context>/<url>
看是否能得到正确数据
(9)部署配置nginx负载
nginx可以安装在宿主主机,修改配置/usr/local/nginx/conf/nginx.conf,在http模块中增加如下代码:
upstream hjlc{ server 172.18.8.35:11111 weight=1; server 172.18.8.35:11112 weight=1; server 172.18.8.35:11113 weight=1; } server { listen 6983; #监控6983端口 server_name 172.18.8.35; #监听172.18.8.35的url location /hjlc { #设置主机头和客户端真实地址,以便服务器获取客户端真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #禁用缓存 proxy_buffering off; #反向代理的地址 proxy_pass http://hjlc; } }
(10)测试负载是否配置成功
访问http://172.18.8.35:6983<context>/<url>查看是否能返回正确数据。
四、制作镜像
docker制作有两种方式,docker commit 和 docker build
commit方式就是下载基础的镜像,然后进入镜像中,安装一些工具,然后执行
docker commit <container_id>
build方式需要自己编写脚本来制作自己的镜像。
commit制作例子:
(1)打开下载的基础镜像ubuntu系统
docker run -i -t ubuntu /bin/bash
(2)安装apache
apt-get -yqq update apt-get -y install apache2
(3)执行exit退出容器
(4)提交保存镜像到hub
docker commit 61412230ae46 own-apache2
build制作例子:
(1) 首先创建Dockerfile文件,该文件里编写构建代码。将jdk和tomcat目录放到Dockerfile文件的同一目录下,
编写Dockerfile,如下
FROM ubuntu:14.04 MAINTAINER liws #install jdk ADD jdk1.7.0_25 /usr/local/jdk1.7.0_25 ENV JAVA_HOME /usr/local/jdk1.7.0_25 ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib ENV PATH $PATH:$JAVA_HOME/bin #install tomcat ADD apache-tomcat-6.0.44 /usr/local/apache-tomcat-6.0.44 CMD ["/usr/local/apache-tomcat-6.0.44/bin/catalina.sh", "run"]
代码说明:
FROM:必须存在的命令,表示使用哪个基础镜像。该实例为使用ubuntu 14.04系统,基础镜像会去docker hub上下载
MAINTAINER:表示制作人信息
ADD:将软件添加到镜像中。该实例为将主机的jdk1.7.0_25目录,添加到镜像系统文件中的/usr/local/jdk1.7.0_25
ENV:设置环境变量
EXPOSE:Container内部服务开启的端口
WORKDIR:切换工作目录,可进行多次切换(相当于cd命令)
USER:执行container的用户,如未指定,则默认使用root用户
ENTRYPOINT:Container启动时执行的命令,一个Dockerfile中只能有一条ENTRYPOINT
CMD:Container 启动时执行的命令,一个Dockerfile 中只能有一条CMD命令,如果有多条则只执行最后一条CMD
注意:docker做tomcat镜像时,Dockerfile文件执行命令必须执行tomcat目录中的catalina.sh,不能执行startup.sh。(执行startup.sh,容器启动后会立刻停止)
(2)进入Dockerfile所在目录,执行docker build构建镜像。
docker build –t <image_name>:<tag_name> .
注意:后面加”.”,表示当前目录,一定要加
(3)构建完成后,通过docker images可以看到本地已经构建好镜像
(4)执行
docker tag <image_id> <repository>/<name>:<tag>
将名称改为同hub管理页面相同的存储空间名称。docker hub:https://hub.docker.com/
(5)执行
docker push <repository>/<name>:<tag>
上传到docker hub
上一篇: Xfire调用webservice出错
下一篇: java生成不重复的用户邀请码