精华内容
下载资源
问答
  • 创建一个docker容器

    万次阅读 2017-06-23 10:29:48
    创建一个便携的镜像,首先需要创建一个叫做Dockerfile的文件,这个文件定义了你要创建容器所需要的环境配置。由于这个环境是虚拟化的,所以与外部环境隔离,因此需要将你所需要用到的端口映射到外部,并具体说明...
    根据第一节,把docker安装完毕并学习了基本操作之后,我们来学习构建一个docker应用程序
    

    要创建一个便携的镜像,首先需要创建一个叫做Dockerfile的文件,这个文件定义了你要创建的容器所需要的环境配置。由于这个环境是虚拟化的,所以与外部环境隔离,因此需要将你所需要用到的端口映射到外部,并具体说明这个环境中需要什么样的配置,这样做之后,就可以通过Dickerfile构建应用程序,并且运行到任何地方。
    接下来逐步说明docker应用程序的创建过程。
    创建一个空目录,并在此目录中创建Dockerfile文件,定义应用程序的环境,配置如下:

    # Use an official Python runtime as a base image
    FROM python:2.7-slim
    # Set the working directory to /app
    WORKDIR /app
    # Copy the current directory contents into the container at /app
    ADD . /app
    # Install any needed packages specified in requirements.txt
    RUN pip install -r requirements.txt
    # Make port 80 available to the world outside this container
    EXPOSE 80
    # Define environment variable
    ENV NAME World
    # Run app.py when the container launches
    CMD ["python", "app.py"]

    阅读配置信息可以看出,我们还需要创建requirements.txt和app.py文件,文件内容分别是:
    requirements.txt
    Flask
    Redis
    这里的Flask和Redis分别是需要给Python安装的库,因为在运行时需要这两个库的支持。
    app.py

    from flask import Flask
    from redis import Redis, RedisError
    import os
    import socket
    # Connect to Redis
    redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
    app = Flask(__name__)
    @app.route("/")
    def hello():
        try:
            visits = redis.incr("counter")
        except RedisError:
            visits = "<i>cannot connect to Redis, counter disabled</i>"
       html = "<h3>Hello {name}!</h3>" \
               "<b>Hostname:</b> {hostname}<br/>" \
               "<b>Visits:</b> {visits}"
        return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=80)
    

    这个app.py做了两个事情,第一,启动Flask服务,第二链接redis服务器。
    文件准备完毕,我们就开始进行应用程序的构建了,在创建的目录下运行命令:
    docker build -t xxxx .
    xxxx表示将要生成的容器名称
    build image
    注意:在容器名称中输入大写字母直接报错,意思是不能使用大写字母,将大写字母改成小写即可。
    这里写图片描述

    通过运行过程我们可以看到,写在Dockerfile的配置全部运行完成,则表示容器创建成功。
    接下来,我们来看一下创建的容器放在了哪里,docker images 一下:
    查看image

    可以看到,已经生成在了images列表中,然后,我们来对该容器进行测试:
    使用docker run -p 9999:80 my-helloworld 来运行容器,其中 -p 表示我们要使用外部端口来映射容器的80端口
    端口映射

    在浏览器中输入http://192.168.83.129:9999,当我们看到如下页面时,表示我们的容器已经生成完毕,可以发布和使用了。
    查看部署页面

    这里的报无法连接Redis的错误是因为我们没有安装Redis数据库,而仅仅安装了Python的redis库的原因。在服务端,我们看到访问记录如下:
    服务端记录
    当然我们也可以在后台运行我们的应用程序,只需要加上-d参数即可,即:
    docker run -d -p 9999:80 my-helloworld
    如果要关闭应用,运行 docker stop imageid
    如果要上传此容器到Docker Hub,只需参考初识docker部分,上传之后,就可以在任何安装docker的机器上运行docker run -pxxxx:80 xxxx/xxxx来从docker库中拉取xxxx/xxxx的镜像了。
    一些常用命令:

    docker build -t friendlyname .  # Create image using this directory's Dockerfile
    docker run -p 4000:80 friendlyname  # Run "friendlyname" mapping port 4000 to 80
    docker run -d -p 4000:80 friendlyname         # Same thing, but in detached mode
    docker ps                                 # See a list of all running containers
    docker stop <hash>                     # Gracefully stop the specified container
    docker ps -a           # See a list of all containers, even the ones not running
    docker kill <hash>                   # Force shutdown of the specified container
    docker rm <hash>              # Remove the specified container from this machine
    docker rm $(docker ps -a -q)           # Remove all containers from this machine
    
    docker images -a                               # Show all images on this machine
    docker rmi <imagename>            # Remove the specified image from this machine
    docker rmi $(docker images -q)             # Remove all images from this machine
    docker login             # Log in this CLI session using your Docker credentials
    docker tag <image> username/repository:tag  # Tag <image> for upload to registry
    docker push username/repository:tag            # Upload tagged image to registry
    docker run username/repository:tag                   # Run image from a registry
    展开全文
  • Docker 创建一个 Jar 服务容器

    千次阅读 2020-03-24 19:31:21
    准备好 jar 包,放在随意...编写Dockerfile文件,直接创建一个空文件,名字改成 “Dockerfile” 编写 Dockerfile 内容 FROM java:8 MAINTAINER cuixiaojian // 烤皮到容器 COPY servers-config-1.0.0.jar /usr/lo...

    1. 将jar包构建成为docker镜像
    2. 启动镜像生成容器
    3. 将镜像上传至镜像仓库

    1. 构建Docker镜像

    创建一个Dockerfile文件内容如下:

    // 指定镜像源
    FROM java:8
    MAINTAINER cuixiaojian
    // 将文件复制到容器中,COPY [宿主机路径] [容器内路径]
    COPY config-1.0.0.jar /usr/local/config-1.0.0.jar
    // 开放端口
    EXPOSE 26999
    // 需要开放多个端口则多一条expose
    // EXPOSE 27000
    // 生成容器后,容器启动时执行的命令
    ENTRYPOINT ["java -Xms256M -Xmx256M -XX:MaxMetaspaceSize=256M", "-jar", "/usr/local/config-1.0.0.jar -server -Dfile.encoding=UTF-8"]
    

    在Dockerfile所在目录执行以下命令

    build命令后的 “.” 符号代表为当前目录,会将本目录当做为docker build上下文,copy或add命令在执行时候,文件需要在上下文中可以找到,所以需要复制进容器的文件也需要和dockerfile在同一目录

    • 此命令需要在dockerfile所在目录执行
    docker build -t [自定义镜像名]:[版本号] -f Dockerfile .
    

    构建完成后查看镜像

    docker images
    

    2. 启动镜像生成容器

    执行命令:

    docker run --name [自定义容器名] -it -p 26999:26999 [自定义镜像名]:[版本号] /bin/bash
    

    指定容器后台运行(增加d参数表示后台运行):

    docker run --name [自定义容器名] -itd -p 26999:26999 [自定义镜像名]:[版本号] /bin/bash
    

    3. 上传镜像至远程仓库

    标记本地镜像,将其归入某一仓库

    docker tag [镜像ID] [远程文件路径 + 镜像名]:[版本号]
    

    推送镜像至远程仓库

    docker push [远程文件路径 + 镜像名]:[版本号]
    
    展开全文
  • K8S在一个Pod中创建多个容器

    千次阅读 2021-02-26 20:06:41
    YAML文件内容(把tomcat和mysql放到同一个Pod中) apiVersion: v1 kind: Pod metadata: name: my-app labels: name: my-app spec: containers: - name: tomcat image: tomcat:1.0 ports: - containerPort: ...

    参考书籍:《Kubernetes权威指南第4版从Docker到Kubernetes实践全接触》

    YAML文件内容(把tomcat和mysql放到同一个Pod中)

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-app
      labels:
        name: my-app
    spec:
      containers:
      - name: tomcat
        image: tomcat:1.0
        ports:
        - containerPort: 8080
      - name: mysql
        image: mysql:5.7
        ports:
        - containerPort: 3306
    

    注意:属于同一Pod的容器之间相互访问仅需通过localhost就可以访问

    展开全文
  • Spring 容器使用 DI 管理构成应用的组件,它会创建相互协作的组件之间的关联。Q:Spring 容器主要负责什么? A:Spring 容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期,从生存到死亡。Q:Spring...

    在基于 Spring 的应用中,你的应用对象生存于 Spring 容器中。

    容器是 Spring 框架的核心。Spring 容器使用 DI 管理构成应用的组件,它会创建相互协作的组件之间的关联。

    Q:Spring 容器主要负责什么?
    A:Spring 容器负责创建对象装配它们,配置它们并管理它们的整个生命周期,从生存到死亡。

    Q:Spring自带了哪些容器实现?
    A:第一类:bean 工厂是最简单的容器,提供基本的 DI 支持;第二类:应用上下文基于 BeanFactory 构建,并提供应用框架级别的服务。

    Q:选择哪一类容器实现?
    A:应用上下文。因为 bean 工厂对大多数应用来说往往太低级了,因此,应用上下文要比 bean 工厂更受欢迎。


    2.1 使用应用上下文

    Spring 自带了多种类型的应用上下文。

    • AnnotationConfigApplicationContext:从一个或多个基于 Java 的配置类中加载 Spring 应用上下文。
    • AnnotationConfigWebApplicationContext:从一个或多个基于 Java 的配置类中加载 Spring Web 应用上下文。
    • ClassPathXmlApplicationContext:从类路径下的一个或多个 XML 配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
    • FileSystemXmlapplicationcontext:从文件系统下的一个或多个 XML 配置文件中加载上下文定义。
    • XmlWebApplicationContext:从 Web 应用下的一个或多个 XML 配置文件中加载上下文定义。

    如何使用?

    // 从指定的文件系统路径下,查找 knight.xml 文件
    ApplicationContext context = new FileSystemXmlApplicationContext("d:/knight.xml");
    
    // 使用 ClassPathXmlApplicationContext 从应用的类路径下加载应用上下文
    ApplicationContext context = new ClassPathXmlApplicationContext("knight.xml");
    
    // 从 Java 配置中加载应用上下文
    ApplicationContext context = new AnnotationConfigApplicationContext(com.springinaction.knights.config.KnightConfig.class);

    2.2 bean 的生命周期

    bean 装载到 Spring 应用上下文中的一个典型的生命周期过程。
    这里写图片描述

    下面进行详细描述:

    1. Spring 对 bean 进行实例化;
    2. Spring 将值和 bean 的引用注入到 bean 对应的属性中;
    3. 如果 bean 实现了 BeanNameAware 接口,Spring 将 bean 的 ID 传递给 setBeanName()方法
    4. 如果 bean 实现了 BeanFactoryAware 接口,Spring 将调用 setBeanFactory()方法,将 BeanFactory 容器实例传入;
    5. 如果 bean 实现了 ApplicationContextAware 接口,Spring 将调用 setApplicationContext()方法,将 bean 所在的应用上下文的引用传入进来;
    6. 如果 bean 实现了 BeanPostProcessor 接口,Spring 将调用它们的 postProcessBeforeInitialization()方法;
    7. 如果 bean 实现了 InitializingBean 接口,Spring 将调用它们的 afterPropertiesSet()方法。类似地,如果 bean 使用 initmethod 声明了初始化方法,该方法也会被调用;
    8. 如果 bean 实现了 BeanPostProcessor 接口,Spring 将调用它们的 postProcessAfterInitialization()方法;
    9. 此时,bean 已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,知道该应用上下文被销毁;
    10. 如果 bean 实现了 DisposableBean 接口,Spring 将调用它的 destory() 接口方法。同样,如果 bean 使用 destroymethod 声明了销毁方法,该方法也会被调用。

    上一篇: Spring 是如何简化 Java 开发的?
    下一篇:Spring 模块和 Spring Portfolio

    展开全文
  • docker pull tomcat:latest //拉取最新版的tomcat镜像docker run -d -p 80:8080 tomcat//宿主机的80端口映射容器的8080Tomcat默认端口docker ps //查看当前所以容器结果如下: Mac系统限制宿主机无法与外网ping通,...
  • Docker实战之创建一个tomcat容器

    千次阅读 2017-07-12 17:29:38
    、Docker与虚拟机的区别     二、Docker学习步骤 2.1:安装宿主操作系统 在VMVare中安装了Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-62-generic x86_64) 64位操作系统 建议内核在 3.8 以上,执行uname –r ...
  • 【摘要】 云容器引擎(Cloud Container Engine)新手课堂 - 本期导读:3分钟创建一个2048游戏类容器应用。 在学习本期CCE新手课堂前,建议您先学习以下课程: 1.CCE基本概念解读。 2.CCE使用基本流程。 3.创建...
  • docker run :创建一个新的容器并运行一个命令 语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 1.OPTIONS说明 -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用 -i:以交互模式运行容器,通常与 -t...
  • Docker的概念 Docker是开发人员和系统管理员 使用容器开发,部署和...、测试一下Docker的版本 1. 查看Docker版本的信息 运行docker –version并确保您拥有受支持的Docker版本: root@iZbp162mb58mqtz72o389nZ...
  • docker容器创建后更新容器配置

    千次阅读 2019-07-30 11:06:58
    docker容器创建后,配置container跟随docker自动重启 docker container update --restart=always php72-fpm
  • Docker创建MySQL容器

    万次阅读 2014-08-15 08:09:37
    Docker创建MySQL容器
  • 第一次使用IBM的云平台Bluemix,写一个blog记录一下。 我注册Bluemix挺早的,但是在工作中一直没有机会使用IBM的云平台。现在辞职创业,做自己喜欢的互联网,终于有机会用上了。Bluemix为开发人员、企业和最终...
  • docker 创建数据卷容器

    千次阅读 2020-09-24 11:11:44
    数据卷容器 --volumes-from 容器名/id docker run -it --name docker01 centos ...多个容器通过 --volumes-from 绑定的容器之间是双向绑定的, 删除`数据卷容器`不会影响其他容器, 其他容器他们还是绑定的
  • Ubuntu创建LXD系统容器

    千次阅读 2018-11-19 18:17:51
    基于Ubuntu 16.04.5 LTS系统,首先安装lxd。...使用lxc list可查看当前系统的容器列表,目前还没有创建任何容器,列表为空。 # sudo lxc list +------+-------+------+------+------+---------...
  • 想要实现查看一个正在运行的容器当时创建的命令,需要安装一个命令。 1. 安装 python-pip yum install python-pip 如果在安装 python-pip过程出现如下情况: Loaded plugins: fastestmirror Loading mirror ...
  • docker 创建 mongodb容器

    千次阅读 2020-04-30 15:58:36
    docker 创建 mongodb容器 1. docker pull mongo:latest 2. docker run -itd --name mongo -p 27017:27017 mongo --auth 3. ...# 创建一个名为 admin,密码为 123456 的用户。 > db.create...
  • 1.首先创建Ubuntu 16.04容器 : docker run -i -t ubuntu:16.04 /bin/bash 这句命令其实是直接进入Ubuntu的命令行,如果不存在Ubuntu的话Docker会自动创建容器,并已进入容器,显示如下,root@后面那串数字字母是...
  • docker 创建镜像,创建容器命令

    千次阅读 2019-03-06 17:27:22
    创建容器命令:  docker run --name XXX -d 93d3d9bd44ca(镜像id)  docker run -it -v /data/xxx:/xxx(本地路径映射到容器里) -p 50299:50299 --name xxx 93d3d9bd44ca(镜像id) /bin/bash 启动...
  • 创建镜像 使用docker commit创建 先下载镜像启动容器docker run...在容器中添加json和gem 两应用。gem install json 当结束后,我们使用 exit来退出,现在我们的容器已经被我们改变了,使用docker commit命...
  • Docker-compose创建镜像与容器

    千次阅读 2020-04-19 17:10:59
    IDEA源码到Docker容器创建完成图解全过程、工程源码打包成jar二、添加配置文件1、application.yml 内容2、docker-compose.yml 内容3、Dockerfile 内容三、将上述三文件与工程jar包上传服务器四、使用Docker-...
  • 只看标题还不是很明显,本文实现docker的这样一种比较常用的功能:通过docker run启动一个容器后,容器中已经运行了一个后台进程(这里以监听80端口的nginx为例),同时进入一个shell终端可供操作,而不受限于只能在...
  • 实现扩展服务的目的,主要难点是利用配置文件分别启动不同的实例,刚开始没有搞清楚配置文件和容器启动的关系,被坑了很长时间代码其实很简单,就是一个注册服务中心,以开发环境配置文件创建服务注册中心,...
  • 1.3 查看生成的镜像 docker images 1.4 创建容器并运行 使用镜像“myubuntu:v8”以交互模式启动一个容器,将其命名为“myubuntu_test”,在容器内执行“/bin/bash”,而且绑定容器的 80 端口,并将其映射到本地主机...
  • 创建控件容器

    千次阅读 2005-03-06 23:52:00
     实现方法是由CDialog类派生出一个容器类,将控件放入其中,再将这个容器加入到窗口中. 具体实现方法如下: 首先新建一个workspace,再新建一个对话框资源,ID设置为IDD_DIALOG_PANEL,将其OK和Cancel按钮删掉,就得到
  • docker创建redis容器

    千次阅读 2015-05-12 20:35:40
    下载redis数据库image$ docker pull dockerfile/redis #根据官方DockerFile下载并创建镜像创建redis容器实例,我们使用了Docker的端口映射机制,从而我们就可以使用Host服务器的IP访问这些实例$ docker run -d --name...
  • 列出退出状态的容器id docker container ls -f 'status=exited' -q 删除所有退出状态的容器 docker rm $(docker container ls -f 'status=exited' -q)
  • 在Docker中创建CentOS容器

    千次阅读 2019-03-10 21:44:30
    在Docker中创建CentOS容器前提镜像准备运行并保存容器再次运行容器 前提 前提是机器上安装了docker,并运行了docker服务。本人为图方便(没钱买服务器,懒得装虚拟机),使用的操作系统...镜像相当于一个安装包,是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 949,329
精华内容 379,731
关键字:

创建一个容器