<第一本Docker书>里面,讲到Docker容器启动web服务时,都指定了前台运行的参数. 例如apache: ENTRYPOINT [ "/usr/sbin/apache2" ] CMD ["-D", "FOREGROUND"] 又例如nginx: ENTRYPOINT [ "/usr/sbin/nginx", "-g", "daemon off;" ] 为什么要这么做呢…
<第一本Docker书>里面,讲到Docker容器启动web服务时,都指定了前台运行的参数,例如apache: ENTRYPOINT [ "/usr/sbin/apache2" ] CMD ["-D", "FOREGROUND"] 又例如nginx: ENTRYPOINT [ "/usr/sbin/nginx", "-g", "daemon off;" ] 为什么要这么做呢?…
docker容器里时间设置: 第一种: Dockerfile文件中添加一行:RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime或者 第二种: 进入到容器中,设置环境变量  export TZ=Asia/Shanghai 文件字符编码设置: 设置环境变量: export LANG=en_US.UTF-8…
本文讨论docker容器里中文时区的问题,总所周知docker hub上的镜像默认都是英文时区的,在国人使用过程当中需要将时区设置成中文,我原来光配置/etc/localtime了date显示的时间也对,但是tomcat日志里输出的时间还是按默认时区,经过google一番,得知还需要设置timezone.以下描述一下Dockerfile的配置 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&…
把Gitlab迁移到Docker容器里 Apr 9, 2015. | By: 任怀林 公司的gitlab一直是运行在ovm的虚拟机里的,版本还是6.7.5.版本有点老了,最近在研究docker,于是想把gitlab迁移到docker container里去.发现真的有人已经做了gitlab的image了,真心赞. 1 规划 规划: 一个容器运行gitlab 一个容器运行MySQL,然后 link到gitlab上. 一个容器运行Redis,然后 link到gitlab上. 2 安装gitlab 我…
实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第一步,安装操作系统 首先在腾讯云上安装一个干净的Ubuntu系统 系统使用Ubuntu 16.04 64位 这里服务市场虽然有docker,但是版本都太低(1.8.2左右),现在的一些镜像都不支持这些低版本的了,所以自己手动装个  腾讯云推荐使用ssh连接,配置好后就不用输入登入密码了 秘钥可以在腾…
在开发过程中,我们将mysql.redis.celery等服务在docker容器里跑,项目在本地运行,便于debug调试 docker-compose -f docker-compose-dev.yml up db redis celery 当我将服务在docker里运行时,才发现了问题 报错指在manage.py,这可是一头雾水,经过一番查询之后,在manage.py文件第一行加入了路径 #! /usr/bin/env python3.6 然而并没有什么作用,报错路径问题. 最终解决方案是通过…
docker安装ssh 通过命令行安装 pull ubuntu镜像 docker pull ubuntu:latest 启动并进入bash docker run -it -d ubuntu:lastest /bin/bash # 查看刚刚运行容器的id docker ps # 在容器中执行bash命令 docker exec -it id /bin/bash 安装openssh-server并启动 apt-get update apt-get install openssh-server # 启…
1.首先,在window下用vs2017开发netcore控制台项目. 2.把建立好的项目传送到centos7下面的容器里. docker cp sharefoldersforwindows/ 359e:/testnetcore3 运行容器 docker exec -it 359e /bin/bashcd testnetcore3/cd sharefoldersforwindows/ 查看文件: -rw-r--r--. root root Feb : HelloWorld.csproj -rw-…
实现题目描述的这个需求有很多种办法,作为入门,让我们从最简单的办法开始. 首先使用命令docker ps确保当前没有正在运行的Docker实例. 运行命令docker run -it nginx: 然后我们另外开一个终端,用docker ps命令查看这个运行起来的容器实例,Status的Up 54 seconds意思是从该实例启动到现在已经经过了54秒. 使用命令进入这个容器实例: docker exec -it bbc5d48a761c /bin/sh 进入之后看到shell提示符#,我们就可…
最近项目涉及到一个定时任务的功能,所以去这几天研究了一下 crontab 的使用方法,按照网上的相关教程顺利在自己的电脑上成功开启了这个功能 Laravel + crontab 添加 crontab 配置 1.执行命令 $ crontab -e 2.添加以下内容( path/to为应用路径 ),即每分钟去执行一次以下的命令 * * * * * php /path/to/artisan schedule:run >> /dev/>& 3.启动(以下命令为Ubuntu下的启动命令,其…
在docker中安装mysql ubuntu官方镜像是精简的ubuntu系统,很多软件和库没有安装,所以直接安装mysql的话依赖较多,建议直接从源码编译安装mysql 通过命令行安装 先启动一个容器,建议可以创建一个包含常用工具的便于自己使用的基本镜像,比如:包含vim.net-tools.添加阿里云镜像 安装编译环境 需要gcc.cmake等环经,因为使用ubuntu的官方源较慢,所以要添加阿里云的源,但是注意,不要覆盖原来ubuntu的源,将阿里云的源放在/etc/apt/sources.…
前面讲到了创建MariaDB,这次在前面的基础上搭建phpMyAdmin服务,以便友好的管理数据库MariaDB.MariaDB的docker独立出来,这样方便管理,易于扩展.这次我们基于Dockerfile方式创建剩余的服务,Dockerfile也是官方推荐的创建镜像方法. 创建Apache+PHP+phpMyAdmin镜像 首先启动MariaDB的容器 在上一节中我们知道数据库的用户名是root,密码是123456,但是我们还缺少数据库的ip地址,我们使用如下方法获取docker实例的ip地…
在docker中安装redis 使用命令行安装redis 下载并解压 wget http://download.redis.io/releases/redis-3.2.6.tar.gz tar -xvf redis-3.2.6.tar.gz cd redis-3.2.6.tar.gz 2.编译安装 make 启动redis服务 // 启动redis服务 src/redis-server & // 连接redis src/redis-cli set test "hello" ge…
一.大概流程 因为目前没有找Jenkins 和docker 之间比较友好的插件,所以只能使用这种比较low 的方式来实现自动部署了. 1.Jenkins在gitlab拉取项目并编译. 2.将编译后的代码及dockfile脚本传递到部署服务器 3.通过构建后操作,生成镜像,并启动容器 二.Jenkins配置 1.创建项目及填写相关项目信息,以及源码管理选择git这些就不说了,之前的文章都写过了,有兴趣的朋友可以去看下 2.选择构建 3.构建后操作,选择 Send build  artifacts…
1.最近在使用docker容器的时候,发现宿主机的agetty进程cpu占用率达到100% 在Google上搜了下,引起这个问题的原因是在使用"docker run"运行容器时使用了"/sbin/init"和"--privileged"参数. 使用/sbin/init启动容器并加上--privileged参数,相当于docker容器获得了宿主机的全权委托权限.这时docker容器内部的init与宿主机的init产生了混淆. # 引用google到…
#docker-compose build --no-cache //重新创建容器,不管有没有 #docker-compose up #docker-compose up -d //后台启动并运行容器,如果没有会先执行build,如果有只启动#docker-compose build --no-cache && docker-compose up -d  asp.net core  #docker run -it --rm --entrypoint /bin/bash tlz.netcor…
摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)"的方式.这种方式非常适合以单进程为主的微服务架构的应用.然而由于一些传统的应用是由若干紧耦合的多个进程构成的,这些进程难以 Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per contain…
前言: 之前感觉Docker是一种小虚拟机,docker和KVM虚拟机之间有什么区别.联系.可以应用在什么样的生产环境? 一.Docker是什么以及和KVM的区别 1.docker概念? Docker是基于LXC容器技术使用Go开发的开源软件,可以打包代码的运行环境+代码,并且移植性强,可以把代码的运行环境+代码打包成docker镜像,到处运行: 2.docker的设计理念 Docker的设计理念:构建(build).运输(ship).运行(running) 3.docker的架构 docker…
一,dockerfile格式 注释# 指令 参数 指令不区分大小写,但是推荐全部大写指令. 指令从上到下顺序被执行 第一个指令必须是[FROM],指示出要使用的基础镜像. 执行docker file时,如果使用到了别的配置文件,这些配置文件不能放到[执行docker file目录]的父目录,但可以放到子目录. 在执行docker file目录下,可以放一个隐藏文件(.dockerignore),里面存放的是build时不需要的文件.可以使用通配符去指定.比如,某个子目录里10个文件,build时…
文章目录 docker简介 docker容器简单使用 1.HelloWorld 2.运行交互式的容器 3.启动容器(后台模式) 安装docker容器的博文有很多这里就不做过多赘述了,另外如果不想安装docker也可以使用 playwithdocker 提供的在线环境使用.链接:https://labs.play-with-docker.com/,不过对于免费版每天只要4小时使用时间. docker简介 Docker是最受大众关注的容器技术,并且现在"几乎"成为事实上的容器标准. 容器是…
一:为什么需要Docker容器? 1.引入 1.1麻烦的环境部署 1.在软件开发中,最麻烦的事情之一就是环境配置.在正常情况下,如果要保证程序能运行,我们需要设置好操作系统,以及各种库和组件的安装. 2.举例来说,要运行一个Python程序,计算机必须要有 Python 引擎,还需要安装好程序的各种依赖,甚至还要配置特定的环境变量.假设你有两个程序都需要部署在同一个服务器上,一个需要软件是基于Python2.0,一个是Python3.0,那么在部署上就很容易造成混乱.因为不同版本的Python模…
最近博客收到了一封交流的私信,感谢您的关注:现在就我理解的docker建立容器时namespace的建立问题做一个 个人的回答: 一,从原理角度来讲: docker创建container,说白了就是linux系统中的一次fork的调用,在fork调用的时候,会传入一些flag参数,这些参数可以控制对linux内核的调用使用新的namespace:具体的做法是docker daemon封装好一个Command类,在这个Command类中,有关于namespace的配置:接着docker daemo…
关于docker前言 A)首先是关于虚拟化 虚拟化我们可以简单的理解为一种资源管理方式.有如下几种虚拟化的方式: 1.完全虚拟化:对底层硬件实现完全的虚拟.例如:Vmware Workstation 2.部分虚拟化:只对部分硬件资源的虚拟. 3.操作系统级虚拟化:内核通过创建多个虚拟操作系统实例来隔离各个进程. docker就是属于操作系统级的虚拟化. B)其次是对docker的理解 docker的思想来源于集装箱,试问集装箱解决了什么问题? 试想,在一艘大船上,可以把货物规整的摆放起来.并且各…
这一次,我要用+Docker+部署一个用+Python+编写的+Web+应用.这个应用的代码部分(app.py)非常简单: from flask import Flask import socket import os app = Flask(__name__) @app.route('/') def hello(): html = "<h3>Hello {name}!</h3>" \ "<b>Hostname:</b> {ho…
目标:从docker容器里dump java堆 模拟程序 占用空间500M, 设置启动JVM参数 docker启动命令 (PS:经过测试,至少要650M才能启动容器) 方式1: 通过docker exec 先通过 docker exec $containerid ps x 获取进程号 执行 docker exec 此命令实际就是进入docker容器里执行/jdk/bin/jmap dump ,导出的文件也是存放在容器里 经过多次实验,基本上每次都触发容器killed 方式2,: 通过nsente…
一般情况下,我们要获取docker容器里的jvm信息只能进入容器后执行jmap,jstack,jstat 命令去获取,jstack,jstat还好,但是jmap dump的文件要拿出来,得先copy dump文件到挂载在宿主机上的目录,或者使用docker cp命令去获取, 如  https://pathtogeek.com/thread-heap-dumps-from-a-docker-container 1. Run the below command to bash into the co…
1. 问题 前两天发现 APP 刷新数据偶尔出现等半天没有响应的情况,感觉不像 APP 的问题,就查了下服务端的日志. 服务端用的是 Java,部署采用的 Docker 官方的 tomcat 镜像,并进行了基本的裁剪,Dockerfile 文件内容如下: FROM tomcat:8.0.36-jre8 MAINTAINER blog.smoker.cc@gmail.com RUN rm -rf /usr/local/tomcat/webapps && mkdir /usr/local/to…
一.Docker网络基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包:此外,如果不同子网之间要进行通信,需要额外的路由机制. Docker中的网络接口默认都是虚拟的接口.虚拟接口的最大优势就是转发效率极高.这是因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包将被直接复制到接收接口的接收缓存中,而无需通过外部物理网络设备进行交换.对于本地系统和容器内系统来看,虚拟接口跟一个正常的以太网卡…
云计算平台 云计算是一种资源的服务模式,该模式可以实现随时随地.便捷按需地从可配置计算资源共享池中获取所需资源(如网络.服务器.存储.应用及服务),资源能够快速供应并释放,大大减少了资源管理工作开销. Docker Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建.发布和运行分布式应用的平台.它是一个跨平台.可移植并且简单易用的容器解决方案.Docker的源代码托管在GitHub上,基于Go语言开发并遵从Apache 2.0…