镜像创建的实例密码多少,镜像位置和镜像索引怎么填写

首页 > 实用技巧 > 作者:YD1662024-01-17 04:25:46

docker是一个容器,在这个容器中可以运行镜像,就好像tomcat可以运行war包一样,我们可以把项目打包成一个镜像,丢到docker里面,让它运行,同时一台物理机器可以运行多个docker容器,且他们相互隔离,不会互相影响抢夺cpu和内存

docker基本命令

docker run ubuntu:15.10 /bin/bash

-i: 交互式操作。

-t: 终端。以命令模式进入容器

-d: 容器在后台运行

-P:将容器内部使用的网络端口随机映射到我们使用的主机上。比如-P 5001:5000

ubuntu: ubuntu 15.10版本镜像。

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

docker ps -a

获取所有容器,可以看到容器id

docker start/stop/restart b750bbbcfd88

启动/停止/重启ID为b750bbbcfd88的容器

docker exec 1e560fca3906

退出容器

docker export 1e560fca3906 > ubuntu.tar

docker run -d -P 5001:5000 training/webapp python app.py

-d:让容器在后台运行。

-P:将容器内部使用的网络端口随机映射到我们使用的主机上。通过5001端口来访问容器5000端口

docker commit -m="has update" -a="runoob" e218edb10161 ubuntu:v2

将已有的容器id e218edb10161 创建为一个新的镜像,ubuntu, 它的版本号是v2

DockerFile的作用

由一系列的命令组成,是build或者运行docker时要执行的指令

COPY 复制文件或目录

ENV 设置环境变量

VOLUME 路径,定义匿名数据卷,避免数据因容器重启丢失

dockerfile 例子 :

FROM centos:6.7 //这个镜像基于centos 6.7版本创建

MAINTAINER Fisher "fisher@sudops.com" //坐着

RUN /bin/echo 'root:123456' |chpasswd //修改镜像centos 6.7中root用户的密码,用于新镜像的密码

RUN useradd runoob

RUN /bin/echo 'runoob:123456' |chpasswd

RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local

EXPOSE 22

EXPOSE 80

CMD /usr/sbin/sshd -D //创建出来的docker镜像被启动后执行cmd后面的命令,

docker build -t runoob/centos:6.8 //创建一个新的 centos 6.8镜像, 它的root用户密码为123456

Docker Compose

Dockerfile 可以让用户管理一个单独的容器,那么如果我要管理多个容器呢?那就要用到docker compose了。

docker compose使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

使用举例:

1.准备一个测试目录,目录下先生成一个app.py文件,这个代码含义是用python的flask框架,为127.0.0.1:5000路径创建了一段逻辑,输出"Hello World! I have been seen {N} times"。

import time

import redis

from flask import Flask

app = Flask(__name__)

cache = redis.Redis(host='redis', port=6379)

def get_hit_count():

retries = 5

while True:

try:

return cache.incr('hits')

except redis.exceptions.ConnectionError as exc:

if retries == 0:

raise exc

retries -= 1

time.sleep(0.5)

@app.route('/')

def hello():

count = get_hit_count()

return 'Hello World! I have been seen {} times.\n'.format(count)

然后目录下新建docker-compose.yml,这里是表示以5000端口启动web服务,同时在此容器中启动redis。

# yaml 配置

version: '3'

services:

web:

build: .

ports:

- "5000:5000"

redis:

image: "redis:alpine"

最后新建DockerFile,大家用的时候,记得去掉//和注释。

FROM python:3.7-alpine

WORKDIR /code

ENV FLASK_APP app.py // FLASK_APP变量 用来说明Flask实例对象 app 所在的模块位置

ENV FLASK_RUN_HOST 0.0.0.0

RUN apk add --no-cache gcc musl-dev linux-headers

COPY requirements.txt requirements.txt

RUN pip install -r requirements.txt

COPY . .

CMD ["flask", "run"] //运行开发服务器

最后在当前目录的终端下输入docker-compose up,就可以编译出一个docker镜像,并运行起来。访问

大家如果有任何问题,欢迎关注"Java自学之路"这个公众号来提问,里面也有自学全套视频(含项目)和Idea激活码等信息。

对于java来说,可以把代码达成war包,然后在docker compose中配置需要tomcat服务,然后在tomcat服务build过程中,把war包复制到tomcat的webapps文件夹,启动docker就可以了。当然,这只是一种方案,大家可以在网上找到更加自动化的方案

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.