{"id":87,"date":"2025-12-23T19:36:42","date_gmt":"2025-12-23T11:36:42","guid":{"rendered":"https:\/\/www.huaweicloud.online\/?p=87"},"modified":"2025-12-23T19:36:42","modified_gmt":"2025-12-23T11:36:42","slug":"%e5%a0%a1%e5%9e%92%e6%9c%ba%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2jump-server-docker","status":"publish","type":"post","link":"https:\/\/www.huaweicloud.online\/index.php\/2025\/12\/23\/%e5%a0%a1%e5%9e%92%e6%9c%ba%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2jump-server-docker\/","title":{"rendered":"\u5821\u5792\u673a\u5e94\u7528\u90e8\u7f72jump server docker"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>\u6211\u6765\u4ecb\u7ecd\u51e0\u79cd\u5e38\u89c1\u7684 Docker \u5e94\u7528\u90e8\u7f72\u65b9\u5f0f\uff1a\uff08\u5982jump sever docker\u5e94\u7528\u90e8\u7f72\uff09<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.&nbsp;<strong>\u5355\u5bb9\u5668\u90e8\u7f72\uff08\u6700\u7b80\u5355\uff09<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u76f4\u63a5\u8fd0\u884c<\/h3>\n\n\n\n<p>bash\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># \u62c9\u53d6\u955c\u50cf<\/em>\ndocker pull nginx:latest\n\n<em># \u8fd0\u884c\u5bb9\u5668<\/em>\ndocker run -d --name myapp -p 80:80 nginx<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u4f7f\u7528 Docker Compose<\/h3>\n\n\n\n<p>yaml\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># docker-compose.yml<\/em>\nversion: '3.8'\nservices:\n  web:\n    image: nginx:latest\n    container_name: myapp\n    ports:\n      - \"80:80\"\n    volumes:\n      - .\/html:\/usr\/share\/nginx\/html\n    restart: unless-stopped<\/pre>\n\n\n\n<p>\u8fd0\u884c\uff1a<\/p>\n\n\n\n<p>bash\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker-compose up -d<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2.&nbsp;<strong>\u591a\u670d\u52a1\u5e94\u7528\u90e8\u7f72<\/strong><\/h2>\n\n\n\n<p>yaml\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">version: '3.8'\nservices:\n  frontend:\n    build: .\/frontend\n    ports:\n      - \"3000:3000\"\n    depends_on:\n      - backend\n  \n  backend:\n    build: .\/backend\n    ports:\n      - \"8080:8080\"\n    environment:\n      - DATABASE_URL=postgres:\/\/db:5432\/app\n    depends_on:\n      - db\n  \n  db:\n    image: postgres:15\n    environment:\n      POSTGRES_DB: app\n      POSTGRES_USER: user\n      POSTGRES_PASSWORD: password\n    volumes:\n      - postgres_data:\/var\/lib\/postgresql\/data\n\nvolumes:\n  postgres_data:<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3.&nbsp;<strong>\u751f\u4ea7\u73af\u5883\u90e8\u7f72\u5efa\u8bae<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">A. \u4f7f\u7528 Docker Swarm<\/h3>\n\n\n\n<p>bash\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># \u521d\u59cb\u5316 Swarm<\/em>\ndocker swarm init\n\n<em># \u90e8\u7f72 stack<\/em>\ndocker stack deploy -c docker-compose.yml myapp<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">B. \u4f7f\u7528 Kubernetes<\/h3>\n\n\n\n<p>yaml\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># deployment.yaml<\/em>\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: myapp\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: myapp\n  template:\n    metadata:\n      labels:\n        app: myapp\n    spec:\n      containers:\n      - name: myapp\n        image: myapp:latest\n        ports:\n        - containerPort: 80<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4.&nbsp;<strong>\u6700\u4f73\u5b9e\u8df5<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Dockerfile \u4f18\u5316<\/h3>\n\n\n\n<p>dockerfile\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># \u591a\u9636\u6bb5\u6784\u5efa\u51cf\u5c11\u955c\u50cf\u5927\u5c0f\nFROM node:18-alpine as builder\nWORKDIR \/app\nCOPY package*.json .\/\nRUN npm ci --only=production\nCOPY . .\nRUN npm run build\n\nFROM nginx:alpine\nCOPY --from=builder \/app\/build \/usr\/share\/nginx\/html\nCOPY nginx.conf \/etc\/nginx\/nginx.conf\nEXPOSE 80\nCMD [\"nginx\", \"-g\", \"daemon off;\"]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u73af\u5883\u914d\u7f6e<\/h3>\n\n\n\n<p>bash\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># \u4f7f\u7528\u73af\u5883\u53d8\u91cf\u6587\u4ef6<\/em>\ndocker run -d \\\n  --env-file .env \\\n  -p 80:80 \\\n  myapp<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u5065\u5eb7\u68c0\u67e5<\/h3>\n\n\n\n<p>yaml\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">services:\n  web:\n    image: myapp\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http:\/\/localhost\/health\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5.&nbsp;<strong>\u5e38\u7528\u547d\u4ee4<\/strong><\/h2>\n\n\n\n<p>bash\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># \u6784\u5efa\u955c\u50cf<\/em>\ndocker build -t myapp:latest .\n\n<em># \u67e5\u770b\u8fd0\u884c\u5bb9\u5668<\/em>\ndocker ps\n\n<em># \u67e5\u770b\u65e5\u5fd7<\/em>\ndocker logs -f container_name\n\n<em># \u8fdb\u5165\u5bb9\u5668<\/em>\ndocker exec -it container_name \/bin\/bash\n\n<em># \u6e05\u7406\u65e0\u7528\u8d44\u6e90<\/em>\ndocker system prune -a\n\n<em># \u67e5\u770b\u8d44\u6e90\u4f7f\u7528<\/em>\ndocker stats<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6.&nbsp;<strong>\u76d1\u63a7\u548c\u65e5\u5fd7<\/strong><\/h2>\n\n\n\n<p>bash\u590d\u5236\u4e0b\u8f7d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em># \u4f7f\u7528 Portainer \u8fdb\u884c\u53ef\u89c6\u5316\u7ba1\u7406<\/em>\ndocker run -d \\\n  -p 9000:9000 \\\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock \\\n  portainer\/portainer\n\n<em># \u96c6\u4e2d\u5f0f\u65e5\u5fd7<\/em>\ndocker run -d \\\n  --name loki \\\n  -p 3100:3100 \\\n  grafana\/loki\n\n<em># \u6307\u6807\u76d1\u63a7<\/em>\ndocker run -d \\\n  --name prometheus \\\n  -p 9090:9090 \\\n  prom\/prometheus<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7.&nbsp;<strong>\u5b89\u5168\u5efa\u8bae<\/strong><\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>\u4f7f\u7528\u975e root \u7528\u6237<\/strong><\/li>\n\n\n\n<li><strong>\u5b9a\u671f\u66f4\u65b0\u57fa\u7840\u955c\u50cf<\/strong><\/li>\n\n\n\n<li><strong>\u626b\u63cf\u955c\u50cf\u6f0f\u6d1e<\/strong>bash\u590d\u5236\u4e0b\u8f7ddocker scan myapp:latest<\/li>\n\n\n\n<li><strong>\u9650\u5236\u8d44\u6e90\u4f7f\u7528<\/strong>yaml\u590d\u5236\u4e0b\u8f7dservices: web: deploy: resources: limits: cpus: &#8216;0.50&#8217; memory: 512M<\/li>\n<\/ol>\n\n\n\n<p>\u9009\u62e9\u54ea\u79cd\u90e8\u7f72\u65b9\u5f0f\u53d6\u51b3\u4e8e\u4f60\u7684\u5e94\u7528\u590d\u6742\u5ea6\u548c\u56e2\u961f\u9700\u6c42\u3002\u5bf9\u4e8e\u7b80\u5355\u5e94\u7528\uff0cDocker Compose \u5c31\u8db3\u591f\u4e86\uff1b\u5bf9\u4e8e\u5fae\u670d\u52a1\u67b6\u6784\uff0c\u5efa\u8bae\u4f7f\u7528 Kubernetes\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6211\u6765\u4ecb\u7ecd\u51e0\u79cd\u5e38\u89c1\u7684 Docker \u5e94\u7528\u90e8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[5],"tags":[],"class_list":["post-87","post","type-post","status-publish","format-standard","hentry","category-5"],"_links":{"self":[{"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/posts\/87","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":1,"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"predecessor-version":[{"id":88,"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/posts\/87\/revisions\/88"}],"wp:attachment":[{"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.huaweicloud.online\/index.php\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}