前面一节主要是熟悉docker基本操作,本分享就进行介绍一些实战案例,实战才是王道。下面就通过常用的应用进行实战介绍

一、操作系统(CentOS)

docker search centos

docker pull centos

docker run –it centos(启动一个容器)

二、创建支持SSH服务的镜像

docker run –it ubuntu /bin/bash(通过镜像来创建一个容器)

apt –get update 更新软件源信息

apt-get install openssh-server 安装和配置SSH 服务

然后vi编辑sshd

创建容器方式:commit和dockerfile

cmmit:

保存镜像:docker commit fc1 sshd:ubuntu

使用镜像:docker run –p 10022::22 –d sshd:ubuntu /run.sh

查看启动:docker ps

dockerfile

1.创建工作目录:mkdir sshd_ubuntu

2.cd ssh_ubuntu

3.touch sshd_ubuntu

4.touch dockerfile run.sh

5.编辑run.sh

#!/bin/bash

/usr/sbin/sshd –D

创建authorized_keys:

ssh-keygen –t rsa

cat ~/.ssh/id_rsa.pub >authorized_keys

6.编写Dockerfile

ockerfile一般包含下面几个部分:

    基础镜像:以哪个镜像作为基础进行制作,用法是FROM 基础镜像名称
    维护者信息:需要写下该Dockerfile编写人的姓名或邮箱,用法是MANITAINER 名字/邮箱
    镜像操作命令:对基础镜像要进行的改造命令,比如安装新的软件,进行哪些特殊配置等,常见的是RUN 命令
    容器启动命令:当基于该镜像的容器启动时需要执行哪些命令,常见的是CMD 命令或ENTRYPOINT
    在本节实验中,我们依次先把这四项信息填入文档。Dockerfile中的#标志后面为注释,可以不用写,另外实验楼的环境不支持中文输入,比较可惜。

  依次输入下面的基本框架内容:

# Version 0.1# 基础镜像
FROM ubuntu:latest# 维护者信息
MAINTAINER shiyanlou@shiyanlou.com# 镜像操作命令
RUN apt-get -yqq update && apt-get install -yqq apache2 && apt-get clean# 容器启动命令
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

7.创建镜像

cd sshd_ubuntu

docker build –t sshd:dockerfile

如果出现了“successfully built XXX字样。

8.测试镜像,运行容器

docker run –d –p 10122:22 sshd:dockerfile

三、web服务器与应用

apache:

在宿主机上准备的文件清单:

Dockerfile
#启动ssh和apache服务的角本
run.sh

以上文件都放到/root/apache_centos目录下

mkdir -p /root/apache_centos
cd /root/apache_centos

基础镜像:以镜像centos为基础的开放SSH服务的镜像

[root@localhost apache_centos]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
sshd                dockerfile          411d5fb16366        23 hours ago        278 MB
centos              latest              0f73ae75014f        5 weeks ago         172.3 MB

一、准备run.sh文件
在/root/apache_centos目录新建run.sh

vim run.sh

内容如下:

#!/bin/bash
/usr/sbin/sshd &
/usr/local/apache2/bin/httpd -D FOREGROUND
  • 1
  • 2
  • 3

二、准备Dockerfile
在/root/apache_centos目录新建Dockerfile

vim Dockerfile
  • 1

文件内容如下:

#新生成的镜像是基于sshd:dockerfile镜像
FROM sshd:dockerfile
MAINTAINER by Steven
#安装wget
RUN yum install -y wget
WORKDIR /usr/local/src
#下载并解压源码包
RUN wget http://apache.fayea.com/httpd/httpd-2.4.17.tar.gz
RUN tar -zxvf httpd-2.4.17.tar.gz
WORKDIR httpd-2.4.17
#编译安装apache
RUN yum install -y gcc make apr-devel apr apr-util apr-util-devel pcre-devel
RUN ./configure --prefix=/usr/local/apache2  --enable-mods-shared=most  --enable-so
RUN make
RUN make install
#修改apache配置文件
RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /usr/local/apache2/conf/httpd.conf
#启动apache服务
RUN /usr/local/apache2/bin/httpd
#复制服务启动脚本并设置权限
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh
#开放80端口
EXPOSE 80
CMD ["/usr/local/sbin/run.sh"]

需要注意的是:在Dockerfile文件中更换当前目录不可以用“cd”命令,而要改用“WORKDIR”.
三、生成镜像

docker build -t apache_dockerfile:centos .
  • 1

查看生成的镜像:

[root@localhost apache_centos]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
apache_dockerfile   centos              f8f30b4a0ee8        24 minutes ago      440 MB
apache              centos              f92c55dddd07        17 hours ago        423.9 MB
sshd                dockerfile          411d5fb16366        23 hours ago        278 MB
centos              latest              0f73ae75014f        5 weeks ago         172.3 MB

四、根据镜像生成的容器并进行测试
1、生成新的容器

 docker run -d -p 2222:22 -p 8000:80 apache_dockerfile:centos /usr/local/sbin/run.sh
  • 1

将容器的22端口和80端口分别映射到到宿主机上的2222端口和8000端口,并运行服务脚本。

2、查看新生成的容器:

[root@localhost apache_centos]# docker ps -a
CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS                      PORTS                                        NAMES
ae560e497f39        apache_dockerfile:centos   "/usr/local/sbin/run   45 seconds ago      Up 44 seconds               0.0.0.0:2222->22/tcp, 0.0.0.0:8000->80/tcp   condescending_bardeen
6490cd244c10        apache:centos              "/usr/local/apache2/   17 hours ago        Exited (0) 17 hours ago                                                  loving_wright
673e946b57e4        sshd:dockerfile            "/usr/local/sbin/run   18 hours ago        Exited (137) 17 hours ago                                                reverent_bell

3、测试
测试apache

[root@localhost apache_centos]# curl localhost:8000
<html><body><h1>It works!</h1></body></html>

成功!
测试ssh

[root@localhost apache_centos]# ssh localhost -p 2222
root@localhost's password:

成功!

转载于:https://www.cnblogs.com/zywu-king/p/8059788.html

docker容器-实战(分享十六)相关推荐

  1. Docker容器实战-容器的网络及数据

    一.容器的网络 1. 容器自带网络 当Docker安装成功后,就会创建三种网络,通过docker network ls可以查看 这三种网络就是系统自带的,在创建容器时可以通过--net指定,详细信息在 ...

  2. Vue实战篇十六:导航菜单

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  3. LiveVideoStack线上交流分享 (十六) —— 爱奇艺剧场直播云端混流方案

    如今网络直播如火如荼,剧场直播是其一个应用分支,主播在观看点播视频时的同时做出评述,观众端同步观看点播和主播评述的混合视频流.今晚 7:30 ,LiveVideoStack线上交流分享第十六期,我们邀 ...

  4. Docker容器实战思维

    Docker成功的基础 Docker的实现用到的基础技术(cgroups, namespace,分层文件系统)在Docker之前已经存在很多年,并且 Linux Containers(LXC)也在很多 ...

  5. 使用prometheus+grafana+cadvisor架构监控docker容器实战

    前言 本次实验包括两个内容: 1.使用docker原生命令和Linux shell脚本结合的传统方式,对容器进行监控: 2.采用云原生监控利器prometheus对docker容器进行监控: 文章收录 ...

  6. Docker容器技术介绍(六)--- 端口映射和容器间互访问

    端口映射 默认情况下,宿主机是无法访问容器内部网络的,但是可以使用端口映射来解决这个问题,在之前文章中已经提到过Docker的端口映射.主要通过docker run 跟 -P(大写) 或 -p(小写) ...

  7. 应用程序框架实战三十六:CRUD实战演练介绍

    从本篇开始,本系列将进入实战演练阶段. 前面主要介绍了一些应用程序框架的概念和基类,本来想把所有概念介绍完,再把框架内部实现都讲完了,再进入实战,这样可以让初学者基础牢靠.不过我的精力很有限,文章进度 ...

  8. Docker 容器的通信(十二)

    一.容器间通信 1.IP 通信 两个容器要能通信,必须要有属于同一个网络的网卡.满足这个条件后,容器就可以通过 IP 交互了.具体做法是在容器创建时通过--network指定相应的网络,或者通过doc ...

  9. Docker容器实战(四) - 纷纷扰扰,终归尘土

    伴随着Docker公司的容器技术生态在云计算市场中站稳了脚跟,围绕着Docker项目进行的各个层次的集成与创新产品,也如雨后春笋般出现在这个新兴市场当中. 而Docker公司,不失时机地发布了Dock ...

最新文章

  1. 打开word出现“您正试图运行的函数包含有宏或需要宏语言支持的内容。”的解决方法
  2. Hexo博客NexT主题美化之评论系统
  3. python mysql索引 优化神器explain 慢查询
  4. macpro如何清理磁盘空间_如何正确的清理C盘
  5. appweb ejs_具有快速路线的EJS
  6. Linux内核驱动如何编写?我们先从字符驱动入门开始
  7. jsp 页面中文乱码解决(笔记)
  8. Teradata的通吃法:同时飘忽于AWS和微软Azure之上
  9. Linux(centos7.4)上FTP服务器搭建(使用yum)
  10. Android 打aar包
  11. bzoj2286: [Sdoi2011消耗战
  12. php对接微信调用不到头像,【微信公众号小程序】微擎获取用户头像失败的问题如何处理— 亲测 可用 持续更新...
  13. 博士申请 | 澳门科技大学李楠楠老师组招收2022秋季入学全奖博士生
  14. php对联广告,对联广告
  15. rgb 接口lcd 驱动调试
  16. java验证身份证合法性_Java安全性,第2部分:身份验证和授权
  17. Java实现凑硬币或者最少硬币数
  18. Google教我如何定制自己的View
  19. 矩阵分析——Jordan标准形
  20. 【四分之四拍】四分之四拍每拍实际占多长时间?【用最理科的方式解释音乐里的这些玩意,不对之处欢迎指正】

热门文章

  1. 网站的安全证书存在安全问题,无继续浏览按钮
  2. Mysql中文乱码问题完美解决方案
  3. 推荐10款优秀的JavaScript Web UI库 框架和套件
  4. Windows 8 应用商店应用开发 之 画刷
  5. PHP实现http与https转化[转张宴]
  6. Repeater控件的使用
  7. Localhost与数据库连接
  8. 2016 实习招聘面试经历 - 2
  9. springBoot 打war包 程序包com.sun.istack.internal不存在的问题
  10. tar 解压缩命令详解