Docker基础使用

安装须知: 1.Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本2.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过 uname -r 命令查看你当前的内核版本
安装须知: 1.Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本2.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过 uname -r 命令查看你当前的内核版本 
安装须知: 1.Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版本2.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过 uname -r 命令查看你当前的内核版本

安装一些必要的系统工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

sudo yum makecache fast
sudo yum makecache fast 
sudo yum makecache fast

安装 Docker-ce:

sudo yum -y install docker-ce
sudo yum -y install docker-ce 
sudo yum -y install docker-ce

启动 Docker 后台服务

sudo systemctl start docker
sudo systemctl start docker 
sudo systemctl start docker

测试运行 hello-world

[root@runoob ~]# docker run hello-world会自动下载一个镜像运行
[root@runoob ~]# docker run hello-world会自动下载一个镜像运行 
[root@runoob ~]# docker run hello-world会自动下载一个镜像运行

注意配置CDN加速:

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{"registry-mirrors": ["http://hub-mirror.c.163.com"] }
{"registry-mirrors": ["http://hub-mirror.c.163.com"] } 
{"registry-mirrors": ["http://hub-mirror.c.163.com"] }

Docker-Hub注册:https://hub.docker.com/signup

Docker验证登录

docker login
docker login 
docker login

Docker寻找镜像

docker search tomcat
docker search tomcat 
docker search tomcat

Docker拉取镜像

docker pull tomcat
docker pull tomcat 
docker pull tomcat

Docker查看本地镜像

docker images
docker images 
docker images

Docker删除镜像和容器

docker删除镜像: docker rmi 镜像ID 如果是本地的包含tag的话需要指明 docker rmi 806857264/kerwin_docker:kerwin_tomcat_8080docker删除容器: 首先需要停止容器 docker stop 【id名字】 docker rm 【id名字】
docker删除镜像: docker rmi 镜像ID 如果是本地的包含tag的话需要指明 docker rmi 806857264/kerwin_docker:kerwin_tomcat_8080docker删除容器: 首先需要停止容器 docker stop 【id名字】 docker rm 【id名字】
docker删除镜像: docker rmi 镜像ID 如果是本地的包含tag的话需要指明 docker rmi 806857264/kerwin_docker:kerwin_tomcat_8080docker删除容器: 首先需要停止容器 docker stop 【id名字】 docker rm 【id名字】

Docker查看正在运行的容器

docker ps查看所有容器 docker ps -a
docker ps查看所有容器 docker ps -a 
docker ps查看所有容器 docker ps -a

Docker交互模式进入到目标文件目录

docker exec -it d585d5151285 /bin/bash 交互模式进入到目标文件目录,可以进行修改等,如进入到tomcat目录 d585d5151285为容器ID
docker exec -it d585d5151285 /bin/bash 交互模式进入到目标文件目录,可以进行修改等,如进入到tomcat目录 d585d5151285为容器ID 
docker exec -it d585d5151285 /bin/bash 交互模式进入到目标文件目录,可以进行修改等,如进入到tomcat目录 d585d5151285为容器ID

停止容器/重启容器

docker stop 【名字】 docker start 【名字】 docker restart 【名字】
docker stop 【名字】 docker start 【名字】 docker restart 【名字】 
docker stop 【名字】 docker start 【名字】 docker restart 【名字】
如tomcat为例: docker run --name tomcat-80 -p 80:8080 -v /home/docker_tomcat:/usr/local/tomcat/webapps -d tomcat 重命名为tomcat-80 端口映射 80->8080 宿主机文件交互目录 运行的镜像为tomcat :ro赋予可读权限
如tomcat为例: docker run --name tomcat-80 -p 80:8080 -v /home/docker_tomcat:/usr/local/tomcat/webapps -d tomcat 重命名为tomcat-80 端口映射 80->8080 宿主机文件交互目录 运行的镜像为tomcat :ro赋予可读权限
如tomcat为例: docker run --name tomcat-80 -p 80:8080 -v /home/docker_tomcat:/usr/local/tomcat/webapps -d tomcat 重命名为tomcat-80 端口映射 80->8080 宿主机文件交互目录 运行的镜像为tomcat :ro赋予可读权限
redis.conf 配置文件 --- 创建:/home/docker_redis/conf 创建:/home/docker_redis/dataze yes #设置进程锁文件 pidfile /redis/redis.pid #端口 port 6379 #客户端超时时间 timeout 1500 #日志级别 loglevel debug #日志文件位置 logfile /log/log-docker_redis.log #设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id databases 8 ##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合 #save <seconds> <changes> #Redis默认配置文件中提供了三个条件: save 900 1 save 300 10 save 60 10000 #指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间, #可以关闭该#选项,但会导致数据库文件变的巨大 rdbcompression yes #指定本地数据库文件名 dbfilename dump.rdb #指定本地数据库路径 dir /redis/db/ #指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能 #会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有 #的数据会在一段时间内只存在于内存中 appendonly no #指定更新日志条件,共有3个可选值: #no:表示等操作系统进行数据缓存同步到磁盘(快) #always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全) #everysec:表示每秒同步一次(折衷,默认值) appendfsync everysec #redis配置外网访问: protected-mode no#配置密码 requirepass 123456运行命令:如redis为例: docker run -d --privileged=true -p 56379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redis_56379 redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456映射ip 56379->6379 映射宿主机文件夹(配置文件和数据) 启动redis-server 按配置文件启动 密码规定为123456
redis.conf 配置文件 --- 创建:/home/docker_redis/conf 创建:/home/docker_redis/dataze yes #设置进程锁文件 pidfile /redis/redis.pid #端口 port 6379 #客户端超时时间 timeout 1500 #日志级别 loglevel debug #日志文件位置 logfile /log/log-docker_redis.log #设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id databases 8 ##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合 #save <seconds> <changes> #Redis默认配置文件中提供了三个条件: save 900 1 save 300 10 save 60 10000 #指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间, #可以关闭该#选项,但会导致数据库文件变的巨大 rdbcompression yes #指定本地数据库文件名 dbfilename dump.rdb #指定本地数据库路径 dir /redis/db/ #指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能 #会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有 #的数据会在一段时间内只存在于内存中 appendonly no #指定更新日志条件,共有3个可选值: #no:表示等操作系统进行数据缓存同步到磁盘(快) #always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全) #everysec:表示每秒同步一次(折衷,默认值) appendfsync everysec #redis配置外网访问: protected-mode no#配置密码 requirepass 123456运行命令:如redis为例: docker run -d --privileged=true -p 56379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redis_56379 redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456映射ip 56379->6379 映射宿主机文件夹(配置文件和数据) 启动redis-server 按配置文件启动 密码规定为123456 
redis.conf 配置文件 --- 创建:/home/docker_redis/conf 创建:/home/docker_redis/dataze yes #设置进程锁文件 pidfile /redis/redis.pid #端口 port 6379 #客户端超时时间 timeout 1500 #日志级别 loglevel debug #日志文件位置 logfile /log/log-docker_redis.log #设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id databases 8 ##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合 #save <seconds> <changes> #Redis默认配置文件中提供了三个条件: save 900 1 save 300 10 save 60 10000 #指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间, #可以关闭该#选项,但会导致数据库文件变的巨大 rdbcompression yes #指定本地数据库文件名 dbfilename dump.rdb #指定本地数据库路径 dir /redis/db/ #指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能 #会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有 #的数据会在一段时间内只存在于内存中 appendonly no #指定更新日志条件,共有3个可选值: #no:表示等操作系统进行数据缓存同步到磁盘(快) #always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全) #everysec:表示每秒同步一次(折衷,默认值) appendfsync everysec #redis配置外网访问: protected-mode no#配置密码 requirepass 123456运行命令:如redis为例: docker run -d --privileged=true -p 56379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redis_56379 redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456映射ip 56379->6379 映射宿主机文件夹(配置文件和数据) 启动redis-server 按配置文件启动 密码规定为123456
docker pull nginx 创建对应文件夹,进行目录映射运行nginx镜像: docker run --name nginx-80 -d -p 80:80 -v /home/docker_nginx/html:/usr/share/nginx/html -v /home/docker_nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /home/docker_nginx/conf.d:/etc/nginx/conf.d nginxip映射80,文件夹映射,注意nginx.conf:ro 可读权限,conf.d目录下存放对应的配置即可
docker pull nginx 创建对应文件夹,进行目录映射运行nginx镜像: docker run --name nginx-80 -d -p 80:80 -v /home/docker_nginx/html:/usr/share/nginx/html -v /home/docker_nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /home/docker_nginx/conf.d:/etc/nginx/conf.d nginxip映射80,文件夹映射,注意nginx.conf:ro 可读权限,conf.d目录下存放对应的配置即可 
docker pull nginx 创建对应文件夹,进行目录映射运行nginx镜像: docker run --name nginx-80 -d -p 80:80 -v /home/docker_nginx/html:/usr/share/nginx/html -v /home/docker_nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /home/docker_nginx/conf.d:/etc/nginx/conf.d nginxip映射80,文件夹映射,注意nginx.conf:ro 可读权限,conf.d目录下存放对应的配置即可

Nginx配置说明:

nginx.conf 核心配置,可不用修改 user nginx; worker_processes 1;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf; }
nginx.conf 核心配置,可不用修改 user nginx; worker_processes 1;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf; } 
nginx.conf 核心配置,可不用修改 user nginx; worker_processes 1;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf; }

Nginx – conf.d目录下配置,针对每一个域名的具体配置

说明:一个域名对应一个文件,如kkzhilu.cn为例 upstream tomcat {#内网IP,然后限制8080端口对外访问,即可保证用户只从nginx进入,提高访问上限#另外,如微服务架构的话,限制端口,也可以保证用户只能从网关层进入,保证后台服务的安全server 172.21.0.8:8080; }server {listen 80;server_name localhost;location / {proxy_pass http://tomcat;} }
说明:一个域名对应一个文件,如kkzhilu.cn为例 upstream tomcat {#内网IP,然后限制8080端口对外访问,即可保证用户只从nginx进入,提高访问上限#另外,如微服务架构的话,限制端口,也可以保证用户只能从网关层进入,保证后台服务的安全server 172.21.0.8:8080; }server {listen 80;server_name localhost;location / {proxy_pass http://tomcat;} } 
说明:一个域名对应一个文件,如kkzhilu.cn为例 upstream tomcat {#内网IP,然后限制8080端口对外访问,即可保证用户只从nginx进入,提高访问上限#另外,如微服务架构的话,限制端口,也可以保证用户只能从网关层进入,保证后台服务的安全server 172.21.0.8:8080; }server {listen 80;server_name localhost;location / {proxy_pass http://tomcat;} }

参考博文:

docker 快速部署tomcat:https://blog.csdn.net/weixin_39835887/article/details/84516595

51博客:https://blog.51cto.com/11134648/2160257

菜鸟教程

how2j

博客园创建安装基本命令等:https://www.cnblogs.com/lsgxeva/p/8746644.html

镜像制作:https://www.cnblogs.com/iloverain/p/8980275.html

博文地址:https<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>cnblogs<span class="token punctuation">.</span>com<span class="token operator">/</span>yaohong<span class="token operator">/</span>p<span class="token operator">/</span><span class="token number">9221800.</span>html<span class="token number">1.</span>制作镜像,可以从公网随意拉一个容器,本地运行,再把它变成镜像即可 <span class="token number">2.</span>比如我拉取了tomcat镜像,配置之后会变成容器 <span class="token number">3.</span>把最终的运行容器变成镜像先停止容器运行,再执行: docker commit <span class="token operator">-</span>m <span class="token string">"my_tomcat"</span> <span class="token operator">-</span>a <span class="token string">"kerwin"</span> tomcat<span class="token operator">-</span><span class="token number">8080</span> kerwin_tomcat_8080<span class="token operator">:</span>v1<span class="token punctuation">.</span><span class="token number">0</span> <span class="token operator">-</span>m 描述,<span class="token operator">-</span>a作者 后面是镜像名,然后的推送之后的镜像名最后是版本号打标,通过images拿到对应镜像的id,再给它重新打标 docker tag <span class="token number">179396596</span>cbd <span class="token number">806857264</span><span class="token operator">/</span>kerwin_docker<span class="token operator">:</span>kerwin_tomcat_8080 docker <span class="token operator">--</span><span class="token operator">-</span> 命令 tag <span class="token operator">--</span><span class="token operator">-</span> 命令 <span class="token number">179396596</span>cbd <span class="token operator">--</span><span class="token operator">-</span> 镜像id <span class="token number">806857264</span><span class="token operator">/</span>kerwin_docker<span class="token operator">:</span> <span class="token operator">--</span><span class="token operator">-</span> 用户名和仓库名(仓库没有的话自动创建,所以不用自己去建) kerwin_tomcat_8080 <span class="token operator">--</span><span class="token operator">-</span> 取的是commit的最终镜像名最后是push docker push <span class="token number">806857264</span><span class="token operator">/</span>kerwin_docker<span class="token operator">:</span>kerwin_tomcat_8080 kerwin_tomcat_8080 就是上文打标的目标镜像去官网:https<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>cloud<span class="token punctuation">.</span>docker<span class="token punctuation">.</span>com<span class="token operator">/</span>repository<span class="token operator">/</span>list 检查即可注:为什么要commit推送, 因为在容器内部修改的,配置的文件,在关闭启动之后,会消失,所以,如果有改动内部文件,则需要制作新的镜像,然后推送,如果仅仅是宿主机目录的变化的话,是不需要重新制作镜像的
博文地址:https<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>cnblogs<span class="token punctuation">.</span>com<span class="token operator">/</span>yaohong<span class="token operator">/</span>p<span class="token operator">/</span><span class="token number">9221800.</span>html<span class="token number">1.</span>制作镜像,可以从公网随意拉一个容器,本地运行,再把它变成镜像即可 <span class="token number">2.</span>比如我拉取了tomcat镜像,配置之后会变成容器 <span class="token number">3.</span>把最终的运行容器变成镜像先停止容器运行,再执行: docker commit <span class="token operator">-</span>m <span class="token string">"my_tomcat"</span> <span class="token operator">-</span>a <span class="token string">"kerwin"</span> tomcat<span class="token operator">-</span><span class="token number">8080</span> kerwin_tomcat_8080<span class="token operator">:</span>v1<span class="token punctuation">.</span><span class="token number">0</span> <span class="token operator">-</span>m 描述,<span class="token operator">-</span>a作者 后面是镜像名,然后的推送之后的镜像名最后是版本号打标,通过images拿到对应镜像的id,再给它重新打标 docker tag <span class="token number">179396596</span>cbd <span class="token number">806857264</span><span class="token operator">/</span>kerwin_docker<span class="token operator">:</span>kerwin_tomcat_8080 docker <span class="token operator">--</span><span class="token operator">-</span> 命令 tag <span class="token operator">--</span><span class="token operator">-</span> 命令 <span class="token number">179396596</span>cbd <span class="token operator">--</span><span class="token operator">-</span> 镜像id <span class="token number">806857264</span><span class="token operator">/</span>kerwin_docker<span class="token operator">:</span> <span class="token operator">--</span><span class="token operator">-</span> 用户名和仓库名(仓库没有的话自动创建,所以不用自己去建) kerwin_tomcat_8080 <span class="token operator">--</span><span class="token operator">-</span> 取的是commit的最终镜像名最后是push docker push <span class="token number">806857264</span><span class="token operator">/</span>kerwin_docker<span class="token operator">:</span>kerwin_tomcat_8080 kerwin_tomcat_8080 就是上文打标的目标镜像去官网:https<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>cloud<span class="token punctuation">.</span>docker<span class="token punctuation">.</span>com<span class="token operator">/</span>repository<span class="token operator">/</span>list 检查即可注:为什么要commit推送, 因为在容器内部修改的,配置的文件,在关闭启动之后,会消失,所以,如果有改动内部文件,则需要制作新的镜像,然后推送,如果仅仅是宿主机目录的变化的话,是不需要重新制作镜像的 
博文地址:https://www.cnblogs.com/yaohong/p/9221800.html1.制作镜像,可以从公网随意拉一个容器,本地运行,再把它变成镜像即可 2.比如我拉取了tomcat镜像,配置之后会变成容器 3.把最终的运行容器变成镜像先停止容器运行,再执行: docker commit -m "my_tomcat" -a "kerwin" tomcat-8080 kerwin_tomcat_8080:v1.0 -m 描述,-a作者 后面是镜像名,然后的推送之后的镜像名最后是版本号打标,通过images拿到对应镜像的id,再给它重新打标 docker tag 179396596cbd 806857264/kerwin_docker:kerwin_tomcat_8080 docker --- 命令 tag --- 命令 179396596cbd --- 镜像id 806857264/kerwin_docker: --- 用户名和仓库名(仓库没有的话自动创建,所以不用自己去建) kerwin_tomcat_8080 --- 取的是commit的最终镜像名最后是push docker push 806857264/kerwin_docker:kerwin_tomcat_8080 kerwin_tomcat_8080 就是上文打标的目标镜像去官网:https://cloud.docker.com/repository/list 检查即可注:为什么要commit推送, 因为在容器内部修改的,配置的文件,在关闭启动之后,会消失,所以,如果有改动内部文件,则需要制作新的镜像,然后推送,如果仅仅是宿主机目录的变化的话,是不需要重新制作镜像的
指导博文:https://www.cnblogs.com/bxssjava/p/9978449.html第一步:准备好一个正常完好的jar 第二步:Dockerfile文件 注意不要有后缀FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/demo_test_nginx-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]第三步:在linux服务器指定的目录下,放好jar和dockerfile文件第四步:docker build -t 【镜像名字】 . 注意上面的. 表示此目录第五步:正常运行即可 如:docker run --name demo-10909 -p 10909:10909 -d viando/demo
指导博文:https://www.cnblogs.com/bxssjava/p/9978449.html第一步:准备好一个正常完好的jar 第二步:Dockerfile文件 注意不要有后缀FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/demo_test_nginx-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]第三步:在linux服务器指定的目录下,放好jar和dockerfile文件第四步:docker build -t 【镜像名字】 . 注意上面的. 表示此目录第五步:正常运行即可 如:docker run --name demo-10909 -p 10909:10909 -d viando/demo 
指导博文:https://www.cnblogs.com/bxssjava/p/9978449.html第一步:准备好一个正常完好的jar 第二步:Dockerfile文件 注意不要有后缀FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/demo_test_nginx-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]第三步:在linux服务器指定的目录下,放好jar和dockerfile文件第四步:docker build -t 【镜像名字】 . 注意上面的. 表示此目录第五步:正常运行即可 如:docker run --name demo-10909 -p 10909:10909 -d viando/demo
创建 docker.sh文件,写入以下命令,将之和jar以及Dockerfile放在一个目录,必要的时候修改 app名,容器名或者镜像名即可 注意必要情况修改端口映射#!/bin/bash #JAR 名称 - 替换即可 APP_NAME=demo_test_nginx-0.0.1-SNAPSHOT.jar#容器名称 - 替换即可 CONTAINER_NAME=demo-10909#镜像名称 - 替换即可 IAMGE_NAME=viando/demo#使用说明,用来提示输入参数 usage() {echo "Usage: sh 执行脚本.sh [start|build] desc: start is for run jar and build is build images for docker"exit 1 }#启动方法-包含build过程 start(){builddocker run --name $CONTAINER_NAME -v /home/log:/log -p 10909:10909 -d $IAMGE_NAME #挂载日志 }#构建image方法 build(){docker stop $CONTAINER_NAMEdocker rm $CONTAINER_NAMEdocker rmi $IAMGE_NAME#构建docker build -t $IAMGE_NAME . }#根据输入参数,选择执行对应方法,不输入则执行使用说明 case "$1" in"start")start;;"build")build;;*)usage;; esac
创建 docker.sh文件,写入以下命令,将之和jar以及Dockerfile放在一个目录,必要的时候修改 app名,容器名或者镜像名即可 注意必要情况修改端口映射#!/bin/bash #JAR 名称 - 替换即可 APP_NAME=demo_test_nginx-0.0.1-SNAPSHOT.jar#容器名称 - 替换即可 CONTAINER_NAME=demo-10909#镜像名称 - 替换即可 IAMGE_NAME=viando/demo#使用说明,用来提示输入参数 usage() {echo "Usage: sh 执行脚本.sh [start|build] desc: start is for run jar and build is build images for docker"exit 1 }#启动方法-包含build过程 start(){builddocker run --name $CONTAINER_NAME -v /home/log:/log -p 10909:10909 -d $IAMGE_NAME #挂载日志 }#构建image方法 build(){docker stop $CONTAINER_NAMEdocker rm $CONTAINER_NAMEdocker rmi $IAMGE_NAME#构建docker build -t $IAMGE_NAME . }#根据输入参数,选择执行对应方法,不输入则执行使用说明 case "$1" in"start")start;;"build")build;;*)usage;; esac
创建 docker.sh文件,写入以下命令,将之和jar以及Dockerfile放在一个目录,必要的时候修改 app名,容器名或者镜像名即可 注意必要情况修改端口映射#!/bin/bash #JAR 名称 - 替换即可 APP_NAME=demo_test_nginx-0.0.1-SNAPSHOT.jar#容器名称 - 替换即可 CONTAINER_NAME=demo-10909#镜像名称 - 替换即可 IAMGE_NAME=viando/demo#使用说明,用来提示输入参数 usage() {echo "Usage: sh 执行脚本.sh [start|build] desc: start is for run jar and build is build images for docker"exit 1 }#启动方法-包含build过程 start(){builddocker run --name $CONTAINER_NAME -v /home/log:/log -p 10909:10909 -d $IAMGE_NAME #挂载日志 }#构建image方法 build(){docker stop $CONTAINER_NAMEdocker rm $CONTAINER_NAMEdocker rmi $IAMGE_NAME#构建docker build -t $IAMGE_NAME . }#根据输入参数,选择执行对应方法,不输入则执行使用说明 case "$1" in"start")start;;"build")build;;*)usage;; esac

原文链接:http://www.taodudu.cc/news/show-5883369.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享