docker之实用技巧

前言

这里记录自己常用的一些实战技巧.

技巧一

容器执行指定命令并后台运行

容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关.
我就有以下场景需求.制作一个squid镜像,并在运行容器后,容器里执行squid start命令.
一般需要让容器可以后台长久运行,需要指定/bin/bash指令.

1
$ docker run -ti --name [容器名] -d [镜像名] /bin/bash

方式一:通过Dockerfile来build

利用ENTRYPOINT实现

1
2
3
4
5
6
7
8
9
10
FROM centos:7
RUN yum install -y squid
# ip高匿与端口
RUN echo 'request_header_access Via deny all' >> /etc/squid/squid.conf \
&& echo 'request_header_access X-Forwarded-For deny all' >> /etc/squid/squid.conf \
&& echo 'request_header_access From deny all' >> /etc/squid/squid.conf \
&& sed -i 's/http_access deny all/http_access allow all/g' /etc/squid/squid.conf \
&& sed -i 's/http_port 3128/http_port 57112/g' /etc/squid/squid.conf
ENTRYPOINT /usr/sbin/squid start && /bin/bash # 这个是重点
EXPOSE 57112

方式二:使用supervisor(有问题,待修改)

1、容器中需要安装supervisor服务;
2、上传本地supervisor配置文件

1
2
3
4
5
6
7
8
9
10
11
FROM centos:7
RUN yum install -y squid python-setuptools
RUN easy_install supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# ip高匿与端口
RUN echo 'request_header_access Via deny all' >> /etc/squid/squid.conf \
&& echo 'request_header_access X-Forwarded-For deny all' >> /etc/squid/squid.conf \
&& echo 'request_header_access From deny all' >> /etc/squid/squid.conf \
&& sed -i 's/http_access deny all/http_access allow all/g' /etc/squid/squid.conf \
&& sed -i 's/http_port 3128/http_port 57112/g' /etc/squid/squid.conf
EXPOSE 57112

supervisor配置文件
1
2
3
4
[supervisord]
nodaemon=true
[program:squid]
command=/usr/sbin/squid start

技巧二

Docker Hub 自动构建

技巧三

本地阅读Docker官方文档

1
2
# 本地运行Docker官方文档网站
$ docker run -d -p 80:4000 docs/docker.github.io
坚持原创技术分享,您的支持将鼓励我继续创作!
Fork me on GitHub