构建镜像教程通过

Dockerfile构建LNMP镜像教程

服务器技术 2021-09-08 11:55:41 22

导读

通过Dockerfile来进行Docker的镜像制作,本文章只演示镜像打包FROM使用的镜像,如果没有则会拉取MAINTAINER作者COPY拷贝文件至镜像指定位置RUN镜像制作时执行的命令CMD镜像制作启动时执行的命令准备基础环境拉取centos7镜像:[root@master docker]# docker pull……

通过Dockerfile来进行Docker的镜像制作,本文章只演示镜像打包

  • FROM 使用的镜像,如果没有则会拉取

  • MAINTAINER 作者

  • COPY 拷贝文件至镜像指定位置

  • RUN 镜像制作时执行的命令

  • CMD 镜像制作启动时执行的命令

准备基础环境

拉取centos7镜像:

[root@master docker]# docker pull centos:7

pull下载过慢可下载tar包并进行导入

[root@master ~]# wget https://file.api.ym68.cc/docker/images/centos_7.tar [root@master ~]# docker load -i centos_7.tar
构建环境
Mysql

编辑Dockerfile文件内容

[root@master mysql]# vim Dockerfile  FROM docker.io/centos:7 MAINTAINER <admin@ym68.cc> COPY mysql_57/ /usr/local/mysql_57/ RUN yum -y install openssl-libs

开始build构建Mysql镜像

[root@master mysql]# docker build -t mysql:v5.7.29 ./ Sending build context to Docker daemon 1.694 GB Step 1/4 : FROM docker.io/centos:7  ---> b5b4d78bc90c Step 2/4 : MAINTAINER <admin@ym68.cc>  ---> Using cache  ---> 06fa3abfc1cf Step 3/4 : COPY mysql_57/ /usr/local/mysql_57/  ---> Using cache  ---> 7e7a1a1a78c4 Step 4/4 : RUN yum -y install openssl-libs  ---> Using cache  ---> 7d9d2bac5b99 Successfully built 7d9d2bac5b99
Nginx

编辑Dockerfile文件内容

[root@master nginx]# vim Dockerfile  FROM docker.io/centos:7 MAINTAINER <admin@ym68.cc> COPY nginx/ /usr/local/nginx/ RUN yum -y install gd-devel pcre-devel openssl openssl-devel

开始build构建Nginx镜像

[root@master nginx]# docker build -t nginx:v1.17.10 ./
PHP

编辑Dockerfile文件内容

[root@master php]# vim Dockerfile FROM docker.io/centos:7 MAINTAINER <admin@ym68.cc> COPY php72/ /usr/local/php72/ RUN yum -y install libpng autoconf libxslt libjpeg-turbo freetype

开始build构建PHP镜像

[root@master php]# docker build -t php:v7.2 ./
查看结果

查看images列表

[root@master nginx]# docker images REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE nginx               v1.18               20dabe80ad0c        2 minutes ago       306 MB php                 v7.2                1d279f0043d9        31 minutes ago      520 MB mysql               v5.7.29             7d9d2bac5b99        49 minutes ago      1.97 GB centos              7                   b5b4d78bc90c        4 weeks ago         203 MB docker.io/centos    7                   b5b4d78bc90c        4 weeks ago         203 MB
通过docker-compose启动容器

配置docker-compose

[root@master ~]# wget -O /usr/local/bin/docker-compose https://file.api.ym68.cc/docker/sbin/docker-compose [root@master ~]# chmod +x /usr/local/bin/docker-compose

编辑启动文件并进行配置,根据实际需要进行配置

 

由于配置是根据自己实际需要进行修改的,此教程仅供参考。如果根据教程来你会缺少配置文件及启动脚本。
[root@master conf]# vim WebSite_All.yaml  version: '2.3' services:     nginx:       image: nginx:v1.18       container_name: nginx       cpu_count: 1       cpu_percent: 50       cpus: 0.5       cpu_shares: 73       cpuset: 0,1       mem_limit: 512m       memswap_limit: 1024m       mem_reservation: 125m       shm_size: 64M       hostname: nginx-server       command: /bin/bash /usr/local/bin/nginxd start       ports:         - "80:80"         - "443:443"       volumes:         - /data/nginx/sbin/nginxd.sh:/usr/local/bin/nginxd         - /data/nginx/wwwroot:/wwwroot/         - /data/nginx/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf         - /data/nginx/ssl/:/usr/local/nginx/ssl/         - /data/nginx/vhost/:/usr/local/nginx/vhost/         - /dev/shm/php-fpm.sock:/dev/shm/php-fpm.sock         - /etc/hosts:/etc/hosts       networks:          website:             ipv4_address: 10.173.68.88     mysql_db:       container_name: mysql_57       image: mysql:v5.7.29       cpu_count: 1       cpu_percent: 50       cpus: 1       cpu_shares: 73       cpuset: 0,1       mem_limit: 1024m       memswap_limit: 2049m       mem_reservation: 248m       shm_size: 64M       command: /bin/bash /usr/local/mysql_57/sbin/mysqld.sh        hostname: mysql-server       volumes:         - /data/mysql/data:/usr/local/mysql_57/data         - /data/mysql/conf:/usr/local/mysql_57/conf         - /data/mysql/logs:/usr/local/mysql_57/logs         - /data/mysql/sbin:/usr/local/mysql_57/sbin         - /data/mysql/backup:/usr/local/mysql_57/backup       networks:          website:             ipv4_address: 10.173.68.77     php_fpm:       container_name: php       image: php:v7.2       cpu_count: 1       cpu_percent: 50       cpus: 1       cpu_shares: 73       cpuset: 0,1       mem_limit: 1024m       memswap_limit: 1621m       mem_reservation: 248m       shm_size: 64M       hostname: php-server       command: /bin/bash /usr/local/bin/phpd start       volumes:        - /data/php/sbin/phpd:/usr/local/bin/phpd        - /data/php/php.ini:/usr/local/php72/php.ini        - /data/php/ext/:/usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/        - /data/php/etc/:/usr/local/php72/etc/        - /data/nginx/wwwroot:/wwwroot/        - /dev/shm/php-fpm.sock:/dev/shm/php-fpm.sock        - /etc/hosts:/etc/hosts       networks:          website:             ipv4_address: 10.173.68.99 networks:    website:       ipam:          config:          - subnet: 10.173.68.0/24            gateway: 10.173.68.1

启动容器

[root@master conf]# docker-compose -f /data/docker/conf/WebSite_All.yaml up -d Creating network "conf_website" with the default driver Creating nginx    ... done Creating php      ... done Creating mysql_57 ... done
上传镜像至dockerhub

登陆docker

[root@master conf]# docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one Username: ymcc Password:  Login Succeeded

更改tag为用户名开头

[root@master conf]# docker tag mysql:v5.7.29 ymcc/mysql:v5.7.29 [root@master conf]# docker tag php:v7.2 ymcc/php:v7.2  [root@master conf]# docker tag nginx:v1.18 ymcc/nginx:v1.18

上传镜像

[root@master conf]# docker push ymcc/mysql:v5.7.29 [root@master conf]# docker push ymcc/php:v7.2 [root@master conf]# docker push ymcc/nginx:v1.18


1253067 TFnetwork_cn