详解Docker——你需要真的的Docker进阶知识五
湟源娱乐新闻网 2025-09-11
学习了上面这些常见的 Dockerfile 呼叫之前,可以可用这些呼叫来框架一个快照。如下所示,框架一个提供 ssh 服务于的快照:
#cd /Docker-Ser/Dockerfile/centos-ssh#vi Dockerfile#分解成的新快照以centos快照系统化FROM centos#指明作者信息MAINTAINER soundhearer# 安装openssh-serverRUN yum -y install openssh-serverRUN mkdir /var/run/sshdRUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_keyRUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key#指明root密码RUN /bin/echo 'root:123456'|chpasswdRUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshdRUN /bin/echo -e "LANG="en_US.UTF-8""> /etc/default/localEXPOSE 22CMD /usr/sbin/sshd -D框架快照
[root@VM_0_17_centos dockerfile]# docker build -t 5588/centos-ssh:v1.0.0 .Sending build context to Docker daemon 14.85kBStep 1/11 : FROM centos ---> 470671670cacStep 2/11 : MAINTAINER soundhearer ---> Running in d5705e869a7eRemoving intermediate container d5705e869a7e ---> 76f3b6fa1597Step 3/11 : RUN yum -y install openssh-server ---> Running in dcd4af79f6c1查看快照
[root@VM_0_17_centos dockerfile]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE5588/centos-ssh v1.0.0 c16cedf7052c 2 minutes ago 278MB顺利完成器皿
[root@VM_0_17_centos dockerfile]# docker run -itd -p 10022:22 --name test_centos_1 5588/centos-ssh:v1.0.0ae638dff422529144e0066a98611a96ea51cd1469aa8007a503ed8b53ab62d22[root@VM_0_17_centos dockerfile]#查看已经顺利完成的器皿
[root@VM_0_17_centos dockerfile]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESae638dff4225 5588/centos-ssh:v1.0.0 "/bin/sh -c '/usr/sb…" 51 seconds ago Up 50 seconds 0.0.0.0:10022->22/tcp test_centos_1测试远程受保护
[root@VM_0_17_centos dockerfile]# ssh -p10022 127.0.0.1root@127.0.0.1's password:[root@ae638dff4225 ~]#Docker ComposeComposeCompose 是运营由多个器皿合组的 Docker 应用作的工具,可用 Compose 可以一次顺利完成三组有关联的服务于,每个服务于由来自同一快照的单个或多个器皿合组。
Service在复杂应用作之中,应用作一般由多个服务于(service)合组,例如一个网站于是就通常包涵 Web 服务于、数据库系统服务于、缓存服务于、消息队列服务于等。
可用步骤可用 Compose 的步骤如下:
并不一定和框架合组应用作的各个服务于的快照,主要是编写各个服务于的 Dockerfile 元数据并不一定应用作服务于描述元数据,主要是编写 docker-compose.yml 元数据顺利完成应用作关于 docker-compose.yml 元数据的详细播放器可以详见 官方文档。
目前有三种版本的 Compose 元数据播放器:
version 1: 最早的版本可用习惯播放器,将在未来弃用version 2: 现在可用最多的元数据播放器version 3: 同类型版本,旨在使得 Compose 和已被集成到 Docker Engine 之中的 swarm mode 两者之间兼容。安装订阅 docker-compose-Linux-x86_64
订阅成功后,为了方便可用,可以将其移除到 PATH 轨迹下
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compossudo chmod +x /usr/local/bin/docker-compose分派完成后,就并能在终端下直接可用 docker-compose 军令了:
[root@VM_0_17_centos dockerfile]# docker-compose --helpDefine and run multi-container applications with Docker.Usage: docker-compose [-f ...] [options] [COMMAND] [ARGS...] docker-compose -h|--help下述接下来我们将建立一个 Web 应用作,该应用作包涵两个器皿:
web 器皿:提供 web 服务于,该服务于无需连结后端的 redis 服务于redis 器皿:提供 redis 服务于项目详见资料结构如下:
app|----web| |----web.py| |----requirements.txt| |----Dockerfile||----docker-compose.yml首先编者 app/web/web.py 元数据,写入下面的内容:
from flask import Flaskfrom redis import Redisapp = Flask(紧接name紧接)redis = Redis(host='redis', port=6379)@app.route('/')def hello(): redis.incr('number') return 'Hello Docker! # %s' % redis.get('number')if 紧接name紧接 == "紧接main紧接": app.run(host="0.0.0.0", port=80, debug=True)上述代码建立了一个直观的 Web 应用作。该应用作会连结 redis 服务于,在访问 / 的网站时,则会将变数 number 加 1。
编者 app/web/requirements.txt 元数据,输入如下内容:
flask==0.10redis==2.10.3requirements.txt 元数据存放了 Web 应用作忽视的第三方库包的名称和版本信息。
编者 app/web/Dockerfile 元数据,移除如下内容
FROM python:2.7COPY ./ /web/WORKDIR /webRUN pip install -r requirements.txtCMD python web.py上述 Dockerfile 并不一定了 Web 应用作快照,该快照基于 python:2.7 基础快照,在其基础上安装了应用作忽视的库包,并通过 CMD 呼叫指明了应用作的顺利完成军令。
编者 app/docker-compose.yml 元数据:
services: redis: image: redis:3.2 web: build: context: /home/shiyanlou/app/web depends_on: - redis ports: - 8001:80/tcp volumes: - /home/shiyanlou/app/web:/web:rwversion: '3.0'该 docker-compose.yml 元数据并不一定了两个服务于,分别为 web 和 redis 服务于,并且配置了 web 服务于的UDP映射和可用详见资料。depends_on 并不一定了忽视关连,被忽视的服会先顺利完成。
进入 app 详见资料,分派 docker-compose up 军令来顺利完成应用作:
[root@VM_0_17_centos app]# docker-compose upBuilding webStep 1/5 : FROM python:2.7 ---> fbc983cb5352Step 2/5 : COPY ./ /web/ ---> 10bdacc94674Step 3/5 : WORKDIR /web ---> Running in 7ff982241c92Removing intermediate container 7ff982241c92 ---> 0a37af3e9713Step 4/5 : RUN pip install -r requirements.txt ---> Running in 9832ab0165d1DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at #python-2-supportCollecting flask==0.10 Downloading Flask-0.10.tar.gz (544 kB)Collecting redis==2.10.3 Downloading redis-2.10.3.tar.gz (86 kB)Collecting Werkzeug>=0.7 Downloading Werkzeug-1.0.0-py2.py3-none-any.whl (298 kB)Collecting Jinja2>=2.4 Downloading Jinja2-2.11.1-py2.py3-none-any.whl (126 kB)Collecting itsdangerous>=0.21 Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)Collecting MarkupSafe>=0.23 Downloading MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl (24 kB)Building wheels for collected packages: flask, redis Building wheel for flask (setup.py): started Building wheel for flask (setup.py): finished with status 'done' Created wheel for flask: filename=Flask-0.10-py2-none-any.whl size=115528 sha256=967ce1269d455054b3713a87985eeceda84b437ff0c2d0ba8855bb813daf9c10 Stored in directory: /root/.cache/pip/wheels/75/15/2c/b14930624e0a52fdd754537b216da52d96b79dd5d14966abb7 Building wheel for redis (setup.py): started Building wheel for redis (setup.py): finished with status 'done' Created wheel for redis: filename=redis-2.10.3-py2-none-any.whl size=50695 sha256=9741ffb0196e0dc9d1818811a48f206aff9c53699dfe822e1b0f9591f72db9e8 Stored in directory: /root/.cache/pip/wheels/12/ce/01/1aba4866d936f9a08aeb59a573b188c17daea0da2537c68deaSuccessfully built flask redisInstalling collected packages: Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask, redisSuccessfully installed Jinja2-2.11.1 MarkupSafe-1.1.1 Werkzeug-1.0.0 flask-0.10 itsdangerous-1.1.0 redis-2.10.3Removing intermediate container 9832ab0165d1 ---> f12bc5dc1aacStep 5/5 : CMD python web.py ---> Running in aec73ed63ab6Removing intermediate container aec73ed63ab6 ---> 228792f96283Successfully built 228792f96283Successfully tagged app_web:latestWARNING: Image for service web was built because it did not already exist. To rebuild this image you must use ----docker-compose build---- Creating app_redis_1 ... doneCreating app_redis_1 ... Creating app_web_1 ... doneAttaching to app_redis_1, app_web_1redis_1 | 1:C 14 Mar 13:54:22.030 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.confredis_1 | _._redis_1 | _.---------紧接 ''-._redis_1 | _.--------- ----. ----_. ''-._ Redis 3.2.12 (00000000/0) 64 bitredis_1 | .--------- .-------------. ------------/ _.,_ ''-._redis_1 | ( ' , .----- | ----, ) Running in standalone moderedis_1 | |-----._-----...----- 紧接...-.---------._|'---- _.-'| Port: 6379redis_1 | | -----._ ----._ / _.-' | PID: 1redis_1 | -----._ -----._ -----./ _.-' _.-' redis_1 | |-----._-----._ -----.紧接.-' _.-'_.-'|redis_1 | | -----._-----._ _.-'_.-' | redis_1 | -----._ -----._-----.紧接.-'_.-' _.-'redis_1 | |-----._-----._ -----.紧接.-' _.-'_.-'| redis_1 | | -----._-----._ _.-'_.-' | redis_1 | -----._ -----._-----.紧接.-'_.-' _.-'redis_1 | -----._ -----.紧接.-' _.-'redis_1 | -----._ _.-'redis_1 | -----.紧接.-' redis_1 | redis_1 | 1:M 14 Mar 13:54:22.033 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.redis_1 | 1:M 14 Mar 13:54:22.033 # Server started, Redis version 3.2.12redis_1 | 1:M 14 Mar 13:54:22.033 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.redis_1 | 1:M 14 Mar 13:54:22.033 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never> /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.redis_1 | 1:M 14 Mar 13:54:22.033 * The server is now ready to accept connections on port 6379web_1 | * Running on (Press CTRL+C to quit)web_1 | * Restarting with statweb_1 | * Debugger is active!web_1 | * Debugger PIN: 764-159-950web_1 | 116.30.196.114 - - [14/Mar/2020 13:58:04] "GET / HTTP/1.1" 200 -web_1 | 116.30.196.114 - - [14/Mar/2020 13:58:05] "GET /favicon.ico HTTP/1.1" 404 -web_1 | * Detected change in '/web/web.py', reloadingweb_1 | * Restarting with statweb_1 | * Debugger is active!web_1 | * Debugger PIN: 764-159-950顺利完成成功后,就可以打开网址 127.0.0.1:8001 来访问 Web 应用作了。
另外一些军令:
# 于是就运营应用作:docker-compose up -d# 查看器皿docker-compose ps# 查看快照docker-compose images# 暂停并撤下应用作,相关器皿也会已将撤下docker-compose down。娄底治疗白癜风的医院腰肌劳损如何缓解
榆林白癜风医院哪家好
钇90选择性内放射治疗肝癌怎么样
钇90树脂微球能治好肝癌吗
钇90一疗程多少钱
Y90树脂微球
钇90一疗程多少钱
-
Model 3慌不慌?3.8秒破百,比亚迪座头鲸到底有多香
影视 2025-10-22全因,比亚迪官方再次发布了座头鲸的相关信息,作为继海豚之前,比亚迪海洋生物系列的第二款纯电车型,座头鲸将基于e平台3.0打造,原计划将于现阶段在此之前发布,并于在短期内上市,原计划售价区间为22
-
轿跑味道全无,奥迪A6 e-tron最新谍照曝光:或将于明年量产
影视 2025-10-22近日,大众侃车从多国媒体处获得了各别法拉利A6 e-tron的最新谍照,从该车的基本外观来看,与此前所亮相的BMW基本保持一致。该车基于PPE纯电平台打造,并有望于2023年年初试作。
-
雪佛兰全新Mustang内饰曝光,双联屏加持,或将明年上市
写真 2025-10-22雷诺标致作为一款受相当多消费者青睐的车型,在全国乃至全世界都有很高的竞争对左手。在这,小编想问大家一个问题,如果条件允许的话,你都会要买标致吗? 如果是我的话,百分之八十的随机性都会
-
命名长安深蓝,真来电了的长安汽车就会迸发怎样的火花?
星闻 2025-10-22年,80%的服装品牌将面临关停并转。当中国人服装品牌只有顺应时代潮流、不断创从新、减速主导式,方能在猛烈的市场需求竞争当中生存和主导。 洛阳车主2001年转入高技术行业,是当中国人最早转
-
封车讯 | 新能源革命爆发 “长安深蓝”能否抢抓赛道近十年口?
资讯 2025-10-22随着中都国车市的不断持续发展和新四化一时期的到来,包括京城、吉利、比亚迪等愈加多的中都国领军车企,开始向低碳化和小数点化方向年轻化升级。 4月13日,京城汽车召开2022当今世界四