docker 实战---安装一个基础镜像 (一)

泡了几天官网,对docker有了一点了解。准备着手搭建一个公司的开发测试环境,包括java、python。

环境介绍

首先说明一下我的环境

2台物理服务器(后面简称主机)

主机A的配置如下:

[[email protected] ~]# lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.5 (Final)
Release:        6.5
Codename:       Final
[[email protected] ~]# uname -a
Linux opnvz 3.10.52-1.el6.elrepo.x86_64 #1 SMP Fri Aug 8 11:40:18 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] ~]# docker version
Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.2
Git commit (client): 63fe64c/1.0.0
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.2
Git commit (server): 63fe64c/1.0.0

主机B 今天还用不到,后面再介绍

目标

创建一个基础镜像,要求具备以下功能:

  • 使用国内软件源
  • 安装进程管理工具supervisor管理启动进程
  • 可以使用ssh服务

安装步骤

从一个文件系统创建base镜像

创建镜像的方法有很多,官方推荐的是直接从官网仓库pull一个,但由于官网被墙的比较厉害,所以这里我选择从文件系统创建一个base镜像。详细方法见我的另外一片博文http://blog.csdn.net/smallfish1983/article/details/38555827

这里以ubuntu14.04 为例,从openvz下载一个ubuntu14.04的模板

wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64.tar.gz

cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:base

然后用docker images看下:

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              base               05ac7c0b9383        17 seconds ago      215.5 MB

这样我们就建了一个基于openvz模板的ubuntu基础镜像。(虽然官方的镜像可能比这个更小,但一些基础的如ping这样的工具都没有安装,不是十分方便,推荐openvz的模板)

更改软件源、安装supervisor服务

可以使用docker的dockerfile来完成整个过程,不过个人觉的还是自己手工进去配置完之后更方便,dockerfile更适合分享你的创建过程给其他人。

这里我们执行 docker run -t -i ubuntu:base /bin/bash 进入虚拟机

编辑apt软件源vi /etc/apt/sources.list,删除里面的内容,粘帖上国内163的源

deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

执行apt-get update更新

然后安装supervisor服务

apt-get supervisor
cp supervisord.conf conf.d/
cd conf.d/
vi supervisord.conf 

修改该文件如下:

; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)
nodaemon=true                         ;(修改该软件的启动模式为非daemon,否则docker 在执行的时候会直接退出)
[include]
files = /etc/supervisor/conf.d/*.conf

[program:sshd]
command = /usr/sbin/sshd -D        ;(添加ssh服务)<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

配置ssh服务

创建ssh的运行目录

mkdir /var/run/sshd

更改root密码 passwd

vi /etc/ssh/sshd_config 修改下面2个参数允许root登陆

PermitRootLogin yes
UsePAM no

退出 docker

[email protected]:/etc/supervisor/conf.d# exit
exit
[[email protected] start]# docker commit f3c8  ubuntu
5c21b6cf7ab3f60693f9b6746a5ec0d173fd484462b2eb0b23ecd2692b1aff6b
[[email protected] start]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu                           latest              5c21b6cf7ab3        6 seconds ago       512 MB<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

提交刚才的改变到新的image ubuntu上,如果不加冒号tag,默认的tag就是latest

现在新建一个目录

mkdir ubuntu
touch ubuntu/Dockerfile
vi ubuntu/Dockerfile

添加如下内容

FROM ubuntu

EXPOSE  22
CMD ["/usr/bin/supervisord"]<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

然后从这个文件创建image

[[email protected] start]# docker build -t ubuntu ubuntu/
Sending build context to Docker daemon  2.56 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu
 ---> 5c21b6cf7ab3
Step 1 : EXPOSE  22
 ---> Running in 00a75d649b65
 ---> 0429a60c040d
Removing intermediate container 00a75d649b65
Step 2 : CMD ["/usr/bin/supervisord"]
 ---> Running in 49d505f56418
 ---> c5d51fba9226
Removing intermediate container 49d505f56418
Successfully built c5d51fba9226<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

再看下images

[[email protected] start]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
ubuntu                           latest              c5d51fba9226        About a minute ago   512 MB
<none>                           <none>              66604abb62b1        38 minutes ago       570.3 MB<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

刚才创建的ubuntu 被新的image给替代了,而之前的镜像我们如果要删掉的话,得先删除刚才我们执行的容器,然后再删除image

docker ps -a<span style="font-family:Arial;"><span style="font-size: 14px; line-height: 26px;">
</span></span>

找到刚才的容器

docker rm  f3c8005aa252
docker rmi 66604abb62b1

再看下images

[[email protected] start]# docker images
REPOSITORY                       TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
ubuntu                           latest              c5d51fba9226        About a minute ago   512 MB

docker run -p 301:22 -d --name test ubuntu /usr/bin/supervisord

然后我们就可以ssh 到301端口了

到这里,一个基础的ubuntu的基本镜像就创建完成了,后面将根据这个镜像来创建其他的服务

docker 实战---安装一个基础镜像 (一)

时间: 2024-12-21 02:09:44

docker 实战---安装一个基础镜像 (一)的相关文章

Docker 实战—使用 Dockerfile 构建镜像

GitHub Page:http://blog.cloudli.top/posts/Docker实战-使用-Dockerfile-构建镜像/ Dockerfile 指令详解请访问:https://www.cnblogs.com/cloudfloating/p/11737447.html 使用 Alpine Linux 作为基础镜像 Alpine 是一个非常轻量的 Linux 镜像,他只有大约 5MB 的大小,基于它构建镜像,可以大大减少镜像的体积. Alpine 的 Docker Hub 页面:

为什么需要自定义一个基础镜像?

开始之前 为什么需要自定义一个PHP基础镜像? 对于使用php (python)等开发的项目,由于是解释型语言并不需要编译代码这个步骤(go或者java将依赖打包到可执行程序或包中),但是往往还需要安装一些依赖的库或者第三方模块. 在项目实践中一般会先在PHP官方镜像之上,添加项目一些必用扩展模块,例如连接 mysql数据库的 mysqlnd 模块,或者连接 redis.memcache.mongodb 等常用的php扩展模块,以项目实际需求为准. 基础镜像作用是为项目镜像提供支持,准备好php

docker之安装使用和镜像与容器

一.安装下载 下载:epel-release-6-8.noarch.rpm 安装:rpm -Uvh epel-release-6-8.noarch.rpm yum install docker-io 启动:/etc/init.d/docker start 搜寻镜像:docker search centos #搜寻centos镜像 获取镜像:docker pull centos #获取centos镜像 查看镜像:docker images 创建镜像:docker run centos /bin/e

docker学习系列-jdk基础镜像制作

准备一台安装有docker服务的机器 1.编辑Dockerfile vim Dockerfile FROM centos:latest ADD ./jdk-8u141-linux-x64.tar.gz /usr/local ENV JAVA_HOME /usr/local/jdk1.8.0_141 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH $PATH:$JAVA_HOME/bin 2.docker

Docker下安装MySQL Server镜像

安装环境,CentOS  Linux version 3.10.0-514.el7.x86_64 1.查找最新的mysql镜像 docker search mysql 2.下载最新的mysql-server镜像 docker pull mysql/mysql-server:latest 3.下载完成之后可以查看到下载的镜像 docker images 4.生成容器,-e 命令设定默认密码, --name可以自定义镜像的名称 docker run --name mysql -p 3306:3306

ubuntu16创建docker基础镜像

通过Dockerfile创建镜像时,一般都是基于 Docker Hub 提供的官方镜像.以下介绍在ubuntu16系统上创建个人私有基础镜像的方法. 1.安装Bootstrap工具debootstrap $ sudo apt-get insall debootstrap -y 2.使用debootstrap下载ubuntuxenial(16.04)二进制文件 $ sudo debootstrap xenial xenial 3.使用docker import命令创建基础镜像 1)导入xenial

Docker 第一个HelloWorld镜像

Docker 创建第一个HelloWorld镜像: 创建Dockerfile FROM alpine CMD "echo" "Hello World!" 通过Dockerfile构建image,  docker build -t hellosky:1 . 查看是否构建成功: 通过镜像启动容器:docker run --rm hellosky:1 搞定! 原文地址:https://www.cnblogs.com/AK47Sonic/p/8733244.html

docker 真实---安装基本映像 (一)

浸泡了几天的官方网站,正确docker有了更好的理解.准备着手建立一个公司的开发和测试环境,包含java.python. 环境介绍 首先说明一下我的环境 2物理server(以后简称为主机) 主机A配置,如下面: [[email protected] ~]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4

Docker数据管理与网络通信之镜像的创建方法

Docker镜像的创建方法 Docker镜像除了是Docker的核心技术之外,也是应用发布的标准格式. 一个完整的Docker镜像可以支撑一个Docker容器的运行,在Doker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务,如果要把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像. 创建镜像的方法有三种,分别为基于已有镜像创建.基于本地模板创建以及基于Dockerfile创建. 基于已有镜像创建 基于已有镜像创建主要使用