docker部署服务器_docker服务启动

docker部署服务器_docker服务启动部署Nginx寻找镜像dockersearchnginx:默认最新版官网查看不同的版本信息下载镜像dockerpullnginx[root@iZwz9hv1phm24s3jicy8x1Z~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEnginxlatest605c77e624dd3monthsago141MBcentos.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

部署Nginx

寻找镜像

下载镜像

  • docker pull nginx
[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    605c77e624dd   3 months ago   141MB
centos       latest    5d0da3dc9764   6 months ago   231MB

启动镜像

  • docker run -d --name nginx01 -p 3344:80 nginx
  • -d表示后台启动
  • --name 名称为服务起一个名字,这样我们可以启动多个服务
  • --p 主机端口:镜像端口 镜像端口到主机端口的映射,通过外网的端口就可以直接访问到docker镜像里面的服务。

查看运行的容器

[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
c1c91b662574   nginx     "/docker-entrypoint.…"   3 minutes ago   Up 3 minutes   0.0.0.0:3344->80/tcp, :::3344->80/tcp   nginx01

尝试本机访问

[root@iZwz9hv1phm24s3jicy8x1Z ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { 
    color-scheme: light dark; }
body { 
    width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

端口暴露详情(狂神
在这里插入图片描述
通过外网访问测试
注意:阿里云的安全组要打开这个端口才可以。
在这里插入图片描述
进入docker

[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker exec -it nginx01 /bin/bash
root@c1c91b662574:/# ls
bin   dev		   docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc			 lib   media  opt  root  sbin  sys  usr
root@c1c91b662574:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx

这样子部署好简单,但是我们每次想要修改配置都需要进入容器内部来修改nginx的配置,这样很麻烦,怎么样才能不进入容器直接在外部进行修改呢?(可以使用数据卷 -v的技术)

部署Tomcat

官方的配置docker run -it --rm tomcat:9.0

  • 我们直接运行如果没有镜像的话会自动区dockerHub上面下载。
  • 要注意官方的命令配置是用完即删的。docker ps查看是没有的。

启动tomcat镜像

[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker run -d -p 3344:8080 --name tomcat01 b8e65a4d736d
b0bc12cf3f803fa2850986a1f2b7e706d6e4acd4ac72828c51c639a3d7a72d4a

通过外网访问
在这里插入图片描述
可以发现已经访问成功了。

进入容器
[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker exec -it tomcat01 /bin/bash
root@b0bc12cf3f80:/usr/local/tomcat# ls
BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf  logs	    temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      lib   native-jni-lib  webapps  work

查看我们的容器内部的tomcat的内部文件
root@b0bc12cf3f80:/usr/local/tomcat# ls -al
total 172
drwxr-xr-x 1 root root  4096 Dec 22 17:16 .
drwxr-xr-x 1 root root  4096 Apr 13 09:11 ..
-rw-r--r-- 1 root root 18970 Dec  2 14:30 BUILDING.txt
-rw-r--r-- 1 root root  6210 Dec  2 14:30 CONTRIBUTING.md
-rw-r--r-- 1 root root 57092 Dec  2 14:30 LICENSE
-rw-r--r-- 1 root root  2333 Dec  2 14:30 NOTICE
-rw-r--r-- 1 root root  3378 Dec  2 14:30 README.md
-rw-r--r-- 1 root root  6898 Dec  2 14:30 RELEASE-NOTES
-rw-r--r-- 1 root root 16507 Dec  2 14:30 RUNNING.txt
drwxr-xr-x 2 root root  4096 Dec 22 17:16 bin
drwxr-xr-x 1 root root  4096 Apr 13 09:11 conf
drwxr-xr-x 2 root root  4096 Dec 22 17:16 lib
drwxrwxrwx 1 root root  4096 Apr 13 09:11 logs
drwxr-xr-x 2 root root  4096 Dec 22 17:16 native-jni-lib
drwxrwxrwx 2 root root  4096 Dec 22 17:16 temp
drwxr-xr-x 2 root root  4096 Dec 22 17:16 webapps
drwxr-xr-x 7 root root  4096 Dec  2 14:30 webapps.dist
drwxrwxrwx 2 root root  4096 Dec  2 14:30 work

进入webapps,发现是空的,所以上面的404很正常
root@b0bc12cf3f80:/usr/local/tomcat# cd webapps
root@b0bc12cf3f80:/usr/local/tomcat/webapps# ls

由于只是保证最小的可运行环境,所以很多的不必须的文件都没有,所以才会出现命令和文件没有的情况。

我们可以发现webapps里面的文件好像是原来的问价,我们拷贝一下

root@b0bc12cf3f80:/usr/local/tomcat# ls
BUILDING.txt	 LICENSE  README.md	 RUNNING.txt  conf  logs	    temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin	      lib   native-jni-lib  webapps  work
root@b0bc12cf3f80:/usr/local/tomcat# cp -r webapps.dist/* webapps/
root@b0bc12cf3f80:/usr/local/tomcat# cd webapps
root@b0bc12cf3f80:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager
root@b0bc12cf3f80:/usr/local/tomcat/webapps# 

然后访问
在这里插入图片描述
(哇,金色传说!哈哈哈)可以访问了。

但是这里还是存在一个可以优化的地方,就是我们每次部署项目都要进入容器,很麻烦,怎么能够做到不进入容器就可以部署我们的项目。
也就是可以把容器外部的配置或者部署直接映射到容器的内部就好了。

部署ES

注意的问题:

  • ES暴漏的端口很多

  • ES十分消耗内存

  • ES的数据一般要放置在安全目录

  • --net somenetwork:docker的网络命令(把这个先去掉)

  • $ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

查看启动过的容器

[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker ps -a
CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                            PORTS                                       NAMES
978533b71b0a   elasticsearch:7.6.2   "/usr/local/bin/dock…"   About a minute ago   Exited (137) About a minute ago                                               elasticsearch
b0bc12cf3f80   b8e65a4d736d          "catalina.sh run"        29 minutes ago       Up 29 minutes                     0.0.0.0:3344->8080/tcp, :::3344->8080/tcp   tomcat01
c1c91b662574   nginx                 "/docker-entrypoint.…"   About an hour ago    Exited (0) 45 minutes ago                                                     nginx01
0c0ad128fbc9   centos                "/bin/bash"              7 hours ago          Exited (0) 7 hours ago                                                        gallant_wu

es启动之后由于我的服务器很垃圾。直接卡死,所以要设置内存限制。

重新使用命令
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
013e22f9e71af48d20cf4f731767d4380299acc5bd463b3cdab0197e16c84c45
[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
013e22f9e71a   elasticsearch:7.6.2   "/usr/local/bin/dock…"   20 seconds ago   Up 16 seconds   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp   elasticsearch
[root@iZwz9hv1phm24s3jicy8x1Z ~]# docker stats 013e22f9e71a

CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O       PIDS
013e22f9e71a   elasticsearch   0.00%     388.2MiB / 1.923GiB   19.72%    2.16kB / 0B   151MB / 324kB   40

可以看到这个时候只是占用一部分的内存,不是那么卡了。

我们访问本地的

[root@iZwz9hv1phm24s3jicy8x1Z ~]# curl localhost:9200
{ 
   
  "name" : "013e22f9e71a",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "RCgh6R-BQ8K2uLDbYI0YQA",
  "version" : { 
   
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

可以看到elastic Search已经启动了。

可视化

  • portainer

Docker的图形化界面管理工具

命令:

docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

记得把阿里云的安全组打开之后,即可通过外网访问8088端口
在这里插入图片描述
登录之后即可使用。

  • Rancher(这个暂时不介绍)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184137.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • docker dockerfile详解_docker exec 进入容器

    docker dockerfile详解_docker exec 进入容器前言Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列

  • mac下docker从容器内部访问宿主机ip[通俗易懂]

    mac下docker从容器内部访问宿主机ip[通俗易懂]有两种情况:1、有网络的情况下:通过ifconfig中找到自己的电脑ip然后直接访问即可2、没有网络的情况下:通过ifconfig是找不到ip的,然后需要找到一个宿主机的ip可以通过域名来访问:docker.for.mac.host.internal可以ping或者用telnetipport来测试一下…

  • docker(2)CentOS 7安装docker环境[通俗易懂]

    docker(2)CentOS 7安装docker环境[通俗易懂]前言前面一篇学了mac安装docker,这篇来学习在linux上安装docker环境准备Docker支持以下的CentOS版本,目前,CentOS仅发行版本中的内核支持Docker。Doc

  • docker镜像操作_docker 运行镜像

    docker镜像操作_docker 运行镜像前言Docker的三大核心概念:镜像、容器、仓库。初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似我们可以把镜像看作类,把容器看作类实例化后的对象。|

  • docker的常用命令汇总_常用docker命令

    docker的常用命令汇总_常用docker命令文章目录Docker命令总结Docker命令总结还在百度Docker命令?推荐一套我用起来特顺手的命令!简介:Docker是一个开源的应用容器引擎,让开发者可以打包应用及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上。使用Docker可以更方便地打包、测试以及部署应用程序。Docker镜像官网阿里云镜像中心Docker环境安装:#安装yum-utilsyuminstall-yyum-utilsdevice-mapper-persistent-dat

  • docker 启动MYSQL[通俗易懂]

    docker 启动MYSQL[通俗易懂]https://blog.csdn.net/toupiOfRivia/article/details/78802668查看容器id的命令格式:dockerps-a删除一个容器dockerrmxxx查看所有镜像命令dockerimagels-a查看运行的镜像dockerps运行ngix[root…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号