Dockerfile案例
·
Dockerfile案例:配置SSH镜像
项目背景:官方下载的centos镜像默认不带ssh,管理起来不方便,自己制作一个带SSH功能的 centos镜像
创建dockerfile
[root@docker ~]# vim centos .ssh .dockerfile
FROM centos :8 .4 .2105
MAINTAINER gaoqiaodong
RUN minorver=8 .4 .2105 && \
sed -e "s|^mirrorlist=|#mirrorlist=|g " \
-e
"s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://m
irrors.aliyun.com/centos-vault/$minorver|g" \
-i .bak \
/etc/yum .repos .d/CentOS-*.repo
RUN yum install -y openssh-server
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
RUN echo "root:huawei " | chpasswd
EXPOSE 22
CMD ["/usr/sbin/sshd ","-D"]
构建镜像
[root@docker ~]# docker build -t centos:ssh -f centos .ssh .dockerfile .
[+] Building 0 .6s (10/10) FINISHED
docker:default
=> [internal] load build definition from centos .ssh .dockerfile
0 .0s
=> => transferring dockerfile: 604B
0 .0s
=> [internal] load metadata for docker.io/library/centos:8.4.2105
0 .0s
=> [internal] load .dockerignore
0 .0s
=> => transferring context: 2B
0 .0s
=> [1/6] FROM docker.io/library/centos:8.4.2105
0 .0s
=> CACHED [2/6] RUN minorver=8 .4 .2105 && sed -e "s|^mirrorlist=|#mirrorlist=|g "
-e "s|^#baseurl=http://mirror.centos.org/$contentdir/$releasever|baseurl=h 0.0s
=> CACHED [3/6] RUN yum install -y openssh-server
0 .0s
=> CACHED [4/6] RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
0 .0s
=> [5/6] RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
0 .3s
=> [6/6] RUN echo "root:huawei " | chpasswd
0 .3s
=> exporting to image
0 .0s
=> => exporting layers
0 .0s
=> => writing image
sha256:cc138c4d3c36fe82eab32dd80549707c8bfe99ddcb6d3882319a10283bb1a864
0 .0s
=> => naming to docker.io/library/centos:ssh
查看现象
[root@docker ~]# docker history centos:ssh
IMAGE CREATED CREATED BY
SIZE COMMENT
cc138c4d3c36 36 seconds ago CMD ["/usr/sbin/sshd" "-D"]
0B buildkit.dockerfile.v0
<missing> 36 seconds ago EXPOSE map[22/tcp:{}]
0B buildkit.dockerfile.v0
<missing> 36 seconds ago RUN /bin/sh -c echo "root:huawei" | chpasswd…
1.77kB buildkit.dockerfile.v0
<missing> 36 seconds ago RUN /bin/sh -c ssh-keygen -t ecdsa -f /etc/s…
695B buildkit.dockerfile.v0
<missing> 47 minutes ago RUN /bin/sh -c ssh-keygen -t rsa -f /etc/ssh…
3.18kB buildkit.dockerfile.v0
<missing> 47 minutes ago RUN /bin/sh -c yum install -y openssh-server…
51.9MB buildkit.dockerfile.v0
<missing> About an hour ago RUN /bin/sh -c minorver=8.4.2105 && sed -e "…
17.6kB buildkit.dockerfile.v0
<missing> About an hour ago MAINTAINER gaoqiaodong
0B buildkit.dockerfile.v0
<missing> 3 years ago /bin/sh -c #(nop) CMD ["/bin/bash"]
0B
<missing> 3 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc…
0B
<missing> 3 years ago /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0…
231MB
测试
#基于刚才dockerfile创建的镜像centos:ssh创建容器sshtest
[root@docker ~]# docker run -d -p 2022 :22 --name sshtest centos:ssh
73d963d15407a1e73097540bb320b9edf05b468001bd707abf01bc7be5e54bcb
#创建出来的容器
[root@docker ~]# docker ps
CONTAINER ID IMAGE
PORTS
73d963d15407 centos:ssh
COMMAND
NAMES
"/usr/sbin/sshd -D "
CREATED
6 seconds ago
STATUS
Up 5 seconds
0 .0 .0 .0:2022->22/tcp , :::2022->22/tcp sshtest
#ssh登录容器测试ssh,能够成功登录
[root@docker ~]# ssh root@localhost -p 2022
The authenticity of host '[localhost]:2022 ([::1]:2022)' can 't be established .
ECDSA key fingerprint is SHA256:z1owYLOuClnbPrZwXxgy1jcItQT1k+QX6LxosydT64A .
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:2022 ' (ECDSA) to the list of known hosts .
root@localhost 's password:
"System is booting up . Unprivileged users are not permitted to log in yet . Please
come back later . For technical details , see pam_nologin(8)."
[root@73d963d15407 ~]#
Dockerfile案例:自定义httpd镜像
创建dockerfile
[root@docker ~]# vim httpd.dockerfile
FROM centos:8.4.2105
MAINTAINER gaoqiaodong
RUN minorver=8 .4 .2105 \
&& sed -e "s|^mirrorlist=|#mirrorlist=|g " -e
"s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://m
irrors.aliyun.com/centos-vault/$minorver|g" -i.bak /etc/yum.repos.d/CentOS-*.repo
RUN yum install -y httpd && yum clean all && rm -rf /var/cache/yum
COPY index .html /var/www/html/
EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
[root@docker ~]# echo Hello World > index .html
构建镜像
[root@docker ~]# docker build -t httpd:centos -f httpd.dockerfile .
查看现象
[root@docker ~]# docker history httpd:centos
测试
#基于刚才dockerfile创建的镜像httpd:centos创建容器myweb
[root@docker ~]# docker run -d -p 80:80 --name myweb httpd:centos
1e0b0631cf708bcc0a162d56b936a12cd06c9bcdebcc2594b23c2fbee3ed8894
#创建出来的容器
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
1e0b0631cf70 httpd:centos "/usr/sbin/httpd -DF …" About a minute ago Up
About a minute 0 .0 .0 .0:80->80/tcp , :::80->80/tcp myweb
#访问测试
[root@docker ~]# curl localhost
Hello World
Dockerfile案例:自定义mycentosjava8
项目背景:java工程师需要我们给他发个带JAVA的centos
要求CentOS8镜像具备vim+ifconfig+jdk8
JDK的下载地址:https://www.oracle.com/java/technologies/downloads/#java8
编写Dockerfile文件
[root@docker ~]# mkdir myfile ; cd myfile
[root@docker myfile]# vim Dockerfile
FROM centos :8 .4 .2105
MAINTAINER gaoqiaodong<6946630@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置yum源
RUN minorver=8 .4 .2105 \
&& sed -e "s|^mirrorlist=|#mirrorlist=|g " -e
"s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://m
irrors.aliyun.com/centos-vault/$minorver|g" -i.bak /etc/yum.repos.d/CentOS-*.repo
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc .i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar ,把jdk-8u461-linux-x64 .tar .gz添加到容器中,安装包必须要和Dockerfile文件
在同一位置
ADD jdk-8u461-linux-x64 .tar .gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1 .8 .0_461
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH
$JAVA_HOME/lib/dt .jar:$JAVA_HOME/lib/tools .jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok "
CMD /bin/bash
# 将jdk-8u461-linux-x64 .tar .gz与Dockerfile放到同一目录
[root@docker myfile]# ls
Dockerfile jdk-8u461-linux-x64 .tar .gz
# 构建镜像为centosjava8:461
[root@docker myfile]# docker build -t centosjava8:461 .
查看构建的镜像
[root@docker myfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centosjava8 461 8097b762c0a5 4 minutes ago 537MB
用创建的镜像运行容器测试
[root@docker myfile]# docker run -it centosjava8:461 /bin/bash
[root@6b2767bcdf24 local]# pwd #测试了ENV和WORKDIR
/usr/local
[root@6b2767bcdf24 local]# java -version #测试java是否安装
java version "1 .8 .0_461 "
Java(TM) SE Runtime Environment (build 1 .8 .0_461-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25 .461-b11 , mixed mode)
[root@6b2767bcdf24 local]# ifconfig #测试net-tools是否安装
eth0 : flags=4163<UP ,BROADCAST ,RUNNING ,MULTICAST> mtu 1500
inet 172 .17 .0 .3 netmask 255 .255 .0 .0 broadcast 172 .17 .255 .255
ether 02 :42 :ac :11:00:03 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656 .0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0 .0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP ,LOOPBACK ,RUNNING> mtu 65536
inet 127 .0 .0 .1 netmask 255 .0 .0 .0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0 .0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0 .0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@6b2767bcdf24 local]#vim file1 #测试vim是否安装
更多推荐
所有评论(0)