文件目录
问了保证网络错误,把相关的软件先下载到本地再通过
# docker build -t tag之意 -f file文件 后台跟.docker build -t xxx_images -f Dockfile .
Dockfile文件
##使用的基础镜像FROM centos:7.4.1708# MAINTAINER编写者MAINTAINER xxp 332410549@# 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/srcADD php-7.1.19.tar.gz /usr/local/src# running required command 安装NginxWORKDIR /usr/local/src/nginx-1.12.2RUN 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.19RUN 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 installRUN 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.iniCOPY ioncube_loader_lin_7.1.so /usr/local/src/ioncube_loader_lin_7ADD redis-5.0.2.tgz /usr/localRUN 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/htmlEXPOSE 80 443CMD /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./cn-shenzhen/instances/repositories
创建镜像仓库(创建镜像仓库时要绑定一个代码托管网站,例如:github)
#1.登录到阿里云的doker仓库,–username为阿里云的用户名,另外,密码为开通镜像服务时设置的密码
忘记密码可以点击菜单:“容器镜像服务”->“默认实例”–>“访问凭证”进行修改
1. 登录阿里云Docker Registry
$ sudo docker login --username=xxp****@ -
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ sudo docker pull -/swoole0008/shop-b2b2c:[镜像版本号]
实例
docker tag 0d4d7c4cfb21 -/swoole0008/shop-b2b2c:v1
3. 将镜像推送到Registry
$ sudo docker login --username=xxp****@ -
$ sudo docker tag [ImageId] -/swoole0008/shop-b2b2c:[镜像版本号]
$ sudo docker push -/swoole0008/shop-b2b2c:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
实例
docker push -/swoole0008/shop-b2b2c:v1
4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
如果您使用的机器位于VPC网络,请使用 registry-- 作为Registry的域名登录。
5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB
$ sudo docker tag 37bb9c63c8b2 registry--/acs/agent:0.7-dfb6816
使用 “docker push” 命令将该镜像推送至远程。
$ sudo docker push registry--/acs/agent:0.7-dfb6816
开启redis-docker服务
docker pull redisdocker 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