您的位置:首页 > 运维架构 > Docker

阿里云服务器:Dockerfile利用外网yum源制作镜像,并且安装Apache自启动容器,同时测试外网能连接容器

2018-05-08 17:34 816 查看

(1)系统环境:centos7.2

[root@Video ~]#cat /proc/version

Linux version3.10.0-693.11.6.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.520150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Thu Jan 4 01:06:37 UTC 2018

(2)执行命令查看Docker镜像:

[root@Video ~]# docker images

REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE

docker.io/centos     latest              e934aafc2206        4 weeks ago         199 MB

docker.io/busybox    latest              8ac48589692a        4 weeks ago         1.15 MB

docker.io/registry   latest              d1fd7d86a825        3 months ago        33.3 MB

 

(3)创建一个目录:[存放Docker文件,网络yum文件,脚本]

[root@Video ~]# mkdir  dockerbuild/

[root@Video ~]#cd  dockerbuild/

 

(4)添加网络yum源配置文件:这里直接拷贝本地宿主机的yum配置文件

[root@Video mydockerbuild]# cp/etc/yum.repos.d/CentOS-Base.repo ./

 

(5)Dockerfile文件:

[root@Video mydockerbuild]# catDockerfile

#镜像源

FROM docker.io/centos:latest

#个人信息

MAINTAINER cai_niao.com

#设置时区的终端

ENV TZ "Zsia/Shanghai"

ENV TERM xterm

#执行的命令

RUN rm -rf /etc/yum.repos.d/*

#把当前目录下的localhost.repo追加到镜像的/etc/yum.repo.d/目录下

ADD localhost.repo /etc/yum.repos.d/docker.repo

#执行的命令

RUN yum clean all

RUN yum repolist

RUN yum -y install httpd vim-minimal

RUN sed -i 's/#ServerNamewww.example.com:80/ServerName 127.0.0.1:80/' /etc/httpd/conf/httpd.conf

#端口号,它就是把容器的80端口可以映射到宿主机中

EXPOSE 80

#设置httpd的启动

ENTRYPOINT ["/usr/sbin/httpd","-D", "FOREGROUND"]

 

(6)生成镜像:

 

[root@Video mydockerbuild]# dockerbuild -t web/centos:httpd .

Sending build context to Docker daemon7.168 kB

Step 1/12 : FROMdocker.io/centos:latest

 ---> e934aafc2206

Step 2/12 : MAINTAINER Victorroot@linuxdc.com

 ---> Running in c93532cc790a

 ---> de4e6f5b00a5

Removing intermediate containerc93532cc790a

Step 3/12 : ENV TZ"Zsia/Shanghai"

 ---> Running in 1f285f73e9b6

 ---> 0337ea9661ef

Removing intermediate container1f285f73e9b6

Step 4/12 : ENV TERM xterm

 ---> Running in 4cb90cb9de28

 ---> 48d4732d3825

Removing intermediate container4cb90cb9de28

Step 5/12 : RUN rm -rf/etc/yum.repos.d/*

 ---> Running in 35d62616c4af

 

 ---> 741e05cc8ebc

Removing intermediate container35d62616c4af

Step 6/12 : ADD localhost.repo/etc/yum.repos.d/docker.repo

 ---> 21f0a8b98a1d

Removing intermediate container43e4f55cb937

Step 7/12 : RUN yum clean all

 ---> Running in 7ee6d7484b4b

 

Loaded plugins: fastestmirror, ovl

Cleaning repos: base extras updates

Cleaning up everything

Maybe you want: rm -rf /var/cache/yum,to also free up space taken by orphaned data from disabled or removed repos

 ---> fbd4a413ec0c

Removing intermediate container7ee6d7484b4b

Step 8/12 : RUN yum repolist

 ---> Running in 219de24fb0e1

 

Loaded plugins: fastestmirror, ovl

http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/0c34273ad0292747ee5e15c047d3e51c67ca59861a446972db45d71abacc7ad7-primary.sqlite.bz2:[Errno 12] Timeout onhttp://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/0c34273ad0292747ee5e15c047d3e51c67ca59861a446972db45d71abacc7ad7-primary.sqlite.bz2:(28, 'Connection timed out after 30001 milliseconds')

Trying other mirror.

Determining fastest mirrors

 * base: mirrors.aliyun.com

 * extras: mirrors.aliyun.com

 * updates: mirrors.aliyun.com

repo id                  repo name                                        status

base/7/x86_64            CentOS-7 - Base -mirrors.aliyun.com             9591

extras/7/x86_64          CentOS-7 - Extras -mirrors.aliyun.com            448

updates/7/x86_64         CentOS-7 - Updates -mirrors.aliyun.com          2416

repolist: 12455

 ---> e8e400a23315

Removing intermediate container219de24fb0e1

Step 9/12 : RUN yum -y install httpdvim-minimal

 ---> Running in 5b2d4a433b79

 

Loaded plugins: fastestmirror, ovl

Loading mirror speeds from cachedhostfile

---> Running in 2025ac466443

………..

………………….

………………………………….

 ---> d8d219ac05f3

Removing intermediate container2025ac466443

Step 11/12 : EXPOSE 80

 ---> Running in 0ac6a636bd7f

 ---> 8593cfa84611

Removing intermediate container0ac6a636bd7f

Step 12/12 : ENTRYPOINT/usr/sbin/httpd -D FOREGROUND

 ---> Running in f50a0db6ab32

 ---> 98982990364d

Removing intermediate containerf50a0db6ab32

Successfully built 98982990364d

 

(7)查看仓库的镜像

[root@Video mydockerbuild]# dockerimages

REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE

web/centos           httpd               98982990364d        About an hour ago   457 MB

docker.io/centos     latest              e934aafc2206        4 weeks ago         199 MB

docker.io/busybox    latest              8ac48589692a        4 weeks ago         1.15 MB

docker.io/registry   latest              d1fd7d86a825        3 months ago        33.3 MB

 

(8)运行容器并将宿主机的8081端口映射到容器里去

[root@Video mydockerbuild]# docker run-d -p 8081:80 web/centos:httpd

 

[root@Video mydockerbuild]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES

1668ac76beb2        web/centos:httpd    "/usr/sbin/httpd -..."   About a minute ago   Up About a minute   0.0.0.0:8081->80/tcp   jovial_golick

 

 

(9)进入容器

[root@Video mydockerbuild]# dockerexec -it 1668 /bin/bash

[root@1668ac76beb2 /]# cd/var/www/html/

[root@1668ac76beb2 html]# echo"<h1>Hello Woeld</h1>" > index.html

 

 

(10)宿主机访问:

[root@Video mydockerbuild]# curlhttp://宿主机ip:8081

<h1>Hello Woeld</h1>

在浏览器输入宿主机ip加端8081端口访问测试:

 

注意:不能访问可能是阿里云的安全组没有配置:

登录阿里云平台配置

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐