docker之dockerfile的使用

2. 容器基本管理
2.0 容器的类型:
工具类: vim
[root@gukai vim]# docker run -it --name="test_vim" bb41d99ad12f
服务类:nginx
[root@gukai ~]# docker run -d -p 8080:80 --name="discuz" nginx:1.14

2.1容器的多累启动方式:
(1)交互式启动
[root@gukai ~]# docker run -it --name "testcentos" centos:6.9 /bin/bash
主要针对于工具类的容器, 一旦exit容器,容器就自动关闭
(2)守护式启动
1.交互启动容易+ctrl+p+q
[root@gukai ~]# docker run -it --name "testcentos" centos:6.9 /bin/bash
按住 CRTL +P +Q
[root@gukai ~]# docker attach testcentos
#再次进入容器内的镜像进程中
2.2. 死循环

2.3. 服务前端运行
sshd -D
nginx -g ""

        [root@gukai ~]# docker run -it --name "old_sshv1" centos:6.9 /bin/bash
        [root@2044a497987c /]# passwd 
        [root@2044a497987c /]# /etc/init.d/sshd start    #重要:ssh第一次启动时,需要生成密钥,生成pam生成验证

        [root@2044a497987c /]# /usr/sbin/sshd -D    #"hang"运行sshd,并丢到后台
        按住 CRTL +P +Q        #退出到原来的宿主机上

        [root@gukai ~]# docker commit old_sshv1 oldgukai/sshd:v1    #创建一个新的镜像

        1.启动一个基础容器
        2.安装所需要的应用
        3.让应用hang运行
    

docker stop
docker kill


docker start -i
docker restart 容器ID|容器名字

docker rm 容器ID|容器名字
docker rm -f `docker ps -a -q`

dockerfile高级使用说明

基本功能:

FROM
RUN
CMD
ENTRYPOINT


常用功能:
EXPOSE
USER
ENV
ADD
COPY
VOLUME
WORKDIR
ONBUILD

小练习:
1. 如何双系统: sshd +httpd

[root@gukai openssh]# mkdir -p /opt/Docketfile/app/openssh

[root@gukai openssh]# cat Dockerfile 
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN echo -e "[ftp]
name=ftp
baseurl=ftp://192.168.181.128/pub/centos6
gpgcheck=0">/etc/yum.repos.d/ftp.repo
RUN yum makecache fast && yum install openssh-server -y
RUN yum install -y vim
RUN yum install -y httpd
RUN echo "123"|passwd --stdin root
RUN /etc/init.d/sshd start
EXPOSE 22
EXPOSE 80
ADD ssh_httpd.sh /opt/ssh_httpd.sh
CMD ["/bin/bash","/opt/ssh_httpd.sh"]



[root@gukai openssh]# cat ssh_httpd.sh
#!bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D
sshd+httpd 安装2个程序的使用脚本起来的方法

#############以上是自定义基于centsos6.9的镜像自定义一个安装好了ssh 和httpd服务的镜像
#注意 sshd 服务一定要开启, 一定要设置好密码 EXPOSE 22 EXPOSE 80 端口一定要打开
#注意 这次的CMD 使用的是脚本的形式开启的


[root@gukai openssh]# docker build -t "gukai/ssh_httpd:v1" /opt/Docketfile/app/openssh
#开始制作镜像文件

[root@gukai openssh]# docker run -it -p 8080:80 -p 2222:22 --name "testssh" gukai/ssh_httpd:v1 /bin/bash
#开启docker的镜像文件到docker内


2. 双系统: sshd +httpd +volumns

[root@gukai openssh]# mkdir -p /opt/Docketfile/app/ssh_httpd

[root@gukai openssh]# cat Dockerfile 
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo /tmp
RUN echo -e "[ftp]
name=ftp
baseurl=ftp://192.168.181.128/pub/centos6
gpgcheck=0">/etc/yum.repos.d/ftp.repo
RUN yum makecache fast && yum install openssh-server -y
RUN yum install -y vim
RUN yum install -y httpd
RUN echo "123"|passwd --stdin root
RUN /etc/init.d/sshd start
EXPOSE 22
EXPOSE 80
ADD ssh_httpd.sh /opt/ssh_httpd.sh
VOLUME /var/www/html
CMD ["/bin/bash","/opt/ssh_httpd.sh"]        


[root@gukai openssh]# cat ssh_httpd.sh
#!bin/bash
/etc/init.d/httpd start
/usr/sbin/sshd -D

#这里的是可以直接吧容器内的数据保存在自己的宿主机上,查看使用的是 inspect 命令可以看到

原文地址:https://www.cnblogs.com/gukai/p/10827334.html