文件目录
问了保证网络错误,把相关的软件先下载到本地再通过
# docker build -t tag之意 -f file文件 后台跟.
docker build -t xxx_images -f Dockfile .
Dockfile文件
##使用的基础镜像
FROM centos:7.4.1708
# MAINTAINER编写者
MAINTAINER xxp 332410549@qq.com
# put nginx-1.12.2.tar.gz into /usr/local/src and unpack nginx 来吧nginx 和PHP提前都放进基础镜像的/usr/local/src目录下,方便编译安装
ADD nginx-1.12.2.tar.gz /usr/local/src
ADD php-7.1.19.tar.gz /usr/local/src
# running required command 安装Nginx
WORKDIR /usr/local/src/nginx-1.12.2
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel && \
yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel && \
useradd -M -s /sbin/nologin nginx && \
# execute command to compile nginx
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
#截止此,开始安装php,惯例,开始安装一些编译的依赖包
WORKDIR /usr/local/src/php-7.1.19
RUN yum -y install epel-release && \
yum -y install libmcrypt-devel && \
yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel && \
#编译 安装
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --with-redis --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache && make && make install
RUN cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf && \
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf && \
cp php.ini-production /usr/local/php7/etc/php.ini && \
mkdir -p /usr/local/src/ioncube_loader_lin_7 && \
mkdir -p /var/www/html && \
mkdir -p /var/log/nginx && \
chown -R nginx:nginx /usr/local/src/ioncube_loader_lin_7 && \
echo "zend_extension = /usr/local/src/ioncube_loader_lin_7/ioncube_loader_lin_7.1.so">>/usr/local/php7/etc/php.ini
COPY ioncube_loader_lin_7.1.so /usr/local/src/ioncube_loader_lin_7
ADD redis-5.0.2.tgz /usr/local
RUN cd /usr/local/redis-5.0.2 \
&& /usr/local/php7/bin/phpize \
&& ./configure --with-php-config=/usr/local/php7/bin/php-config \
&& make \
&& make install && \
echo "extension=redis.so">>/usr/local/php7/etc/php.ini && \
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx && \
ln -s /usr/local/php7/bin/php /usr/bin/php && \
mkdir -p /usr/local/nginx/conf/cond.d/ && \
chown -R nginx:nginx /var/www/html
EXPOSE 80 443
CMD /usr/local/php7/sbin/php-fpm && /usr/local/nginx/sbin/nginx -g "daemon off;"
运行docker run
在win10下演示
docker run -it -d --name dnmp_shop_b2b2c_v2 -p 9900:80 -v /d/docker/dockerfile/code:/var/www/html -v /d/docker/dockerfile/nginx/etc/nginx.conf:/usr/local/nginx/conf/nginx.conf -v /d/docker/dockerfile/nginx/etc/conf.d:/usr/local/nginx/conf/conf.d -v /d/docker/dockerfile/php/etc/php.ini:/usr/local/php7/etc/php.ini dnmp_b2b2c_v2
推送到阿里云docker镜像
阿里云官方网站链接:https://cr.console.aliyun.com/cn-shenzhen/instances/repositories
创建镜像仓库(创建镜像仓库时要绑定一个代码托管网站,例如:github)
#1.登录到阿里云的doker仓库,–username为阿里云的用户名,另外,密码为开通镜像服务时设置的密码
忘记密码可以点击菜单:“容器镜像服务”->“默认实例”–>“访问凭证”进行修改
1. 登录阿里云Docker Registry
$ sudo docker login --username=xxp****@qq.com registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/swoole0008/shop-b2b2c:[镜像版本号]
实例
docker tag 0d4d7c4cfb21 registry.cn-hangzhou.aliyuncs.com/swoole0008/shop-b2b2c:v1
3. 将镜像推送到Registry
$ sudo docker login --username=xxp****@qq.com registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/swoole0008/shop-b2b2c:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/swoole0008/shop-b2b2c:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
实例
docker push registry.cn-hangzhou.aliyuncs.com/swoole0008/shop-b2b2c:v1
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 “docker push” 命令将该镜像推送至远程。
$ sudo docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
开启redis-docker服务
docker pull redis
docker run -d --name shop-redis -p 6379:6379 redis --requirepass "shopredis6379"
下载mysql-dockerf服务
docker pull mysql:5.6
#运行
docker run --name=shopsc-mysql \
-e MYSQL_DATABASE=kamocloud \
-p 3308:3306 \
-e MYSQL_USER=mysql \
-e MYSQL_PASSWORD=mysql \
-e MYSQL_ROOT_PASSWORD=root \
-v $PWD/mysql:/var/lib/mysql \
-d mysql:5.6
如何容器启动不起来,可以进入容器查看原因
docker run -it --rm fd560f53e0bf /bin/sh