Docker 學習紀錄

Ubuntu 20.04.1 LTS (Focal Fossa)
回覆文章
leeyc
文章: 81
註冊時間: 2020年 10月 23日, 01:54

Docker 學習紀錄

文章 leeyc »

用 Docker 安裝 apache2.0 php5.3.3 mysql5.5
youtube: https://www.youtube.com/watch?v=-_ZghrWcRqU&t=53s

安裝 docker
sudo apt install docker docker-compose

1、docker服務自動重啟設定
sudo systemctl enable docker.service

如果要避免sudo在運行docker命令時鍵入任何內容,請將用戶名添加到docker組中
$ sudo usermod -aG docker ${USER}
要應用新的組成員身份,請註銷服務器並重新登錄,或鍵入以下命令:
$ su - ${USER}
通過輸入以下命令確認您的用戶已添加到docker組:
$ id -nG

sudo docker logs 8cda --tail 500 ==>看LOG
find /var/lib/docker/containers/ -type f -name "*.log" -delete  
這個指令可以刪掉全部的docker log

複製檔案到容器
$ docker cp php-5.3.3-49.el6.src.rpm finance:/

docker pull ubuntu:19.10
docker run -ti --name lamp ubuntu:19.10 bash
docker commit lamp lamp:ver1.0
docker run -ti --rm -p 8080:80 lamp:ver1.0 bash

docker start lamp
docker exec -ti lamp bash

sudo docker run -d --name apache --restart unless-stopped -p 80:80 -v /root/www:/var/www/html --link mariadb:mariadb php:7.2-apache

# mkdir -p www
# sudo docker pull php:5.3-apache

# docker run -d --name apache -p 16001:80 php:5.3-apache
# docker exec -it apache /bin/bash
# docker exec -it nextcloud /bin/bash
# docker exec -it mysql55 /bin/bash

version: '3.3'
services:
  db:
    build:
      context: ./mysql
      dockerfile: Dockerfile
    container_name: mysql55
    environment:
      MYSQL_ROOT_PASSWORD: rootpasswd
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql
      - "/etc/localtime:/etc/localtime:ro"
    restart: always
  web:
    build:
      context: ./www
      dockerfile: Dockerfile
    container_name: apache
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./www:/var/www/html"
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    restart: always
    depends_on:
      - db
  app:
    image: nextcloud
    container_name: nextcloud
    ports:
      - "8080:80"
    volumes:
      - "./nextcloud:/var/www/html"
    restart: always
    depends_on:
      - db
   wordpress:
    image: wordpress
    container_name: wordpress
    restart: always
    ports:
      - 8000:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: leeyc
      WORDPRESS_DB_PASSWORD: leeycpasswd
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wordpress:/var/www/html

# httpd-tools
./www/Dockerfile
FROM centos:centos6
MAINTAINER Assyrus
RUN yum -y update; yum clean all
RUN yum -y install epel-release 
RUN yum clean all
RUN yum -y install samba-client rsync wget httpd mod_ssl php php-mbstring php-gd php-imap php-intl php-ldap php-mssql php-mysql php-odbc php-pdo php-pear php-xml php-xmlrpc mysql zip unzip 
RUN yum clean all
RUN yum -y reinstall glibc-common
#RUN yum -y install subversion subversion-tools mod_dav_svn
#RUN echo "Apache HTTPD" >> /var/www/html/index.html
ADD php.ini /etc/
#ADD ssl.conf /etc/httpd/conf.d/
#ADD subversion.conf /etc/httpd/conf.d/
EXPOSE 80
CMD exec /usr/sbin/apachectl -D FOREGROUND

./mysql/Dockerfile
FROM mysql:5.5
RUN apt-get update
RUN apt-get install vim -y
ADD my.cnf /etc/mysql/
EXPOSE 3306


apt-get update
apt-get install vim
/etc/mysql/my.cnf
lower_case_table_names=1

docker restart mysql55

docker-compose.yml
version: '3.3'
services:
  db:
    image: mysql:5.5
    container_name: mysql55
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpasswd
    ports:
      - "3306:3306"
    volumes:
      - ./mydata/:/var/lib/mysql
      - ./etc/mysql:/etc/mysql
      - "/etc/localtime:/etc/localtime:ro"
  web:
    build:
      context: ./www
      dockerfile: Dockerfile
    container_name: apache
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./www:/var/www/html"
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      #- "./lib:/usr/local/lib"
      #- "./logs:/var/log/apache2"
      #- "./conf:/etc/apache2/sites-enabled"
    #network_mode: "host"
    restart: always
    depends_on:
      - db
    
./www/Dockerfile
FROM centos:centos6
MAINTAINER Assyrus
RUN yum -y update; yum clean all
RUN yum -y install epel-release; yum clean all
RUN yum -y install samba-client rsync wget httpd mod_ssl php php-mbstring php-gd php-imap php-intl php-ldap php-mssql php-mysql php-odbc php-pdo php-pear php-xml php-xmlrpc mysql zip unzip; yum clean all
RUN yum -y reinstall glibc-common
#RUN echo "Apache HTTPD" >> /var/www/html/index.html
ADD php.ini /etc/
EXPOSE 80
CMD exec /usr/sbin/apachectl -D FOREGROUND

chmod 777 -R etc
chmod 777 -R data

1、docker服務自動重啟設定
systemctl enable docker.service

/usr/local/etc/php/conf.d/tzone.ini
[Date]
date.timezone = "Asia/Taipei"

# docker exec -i mysql55 mysql -uroot -prootpasswd centerdb < centerdb20201005.sql

flush privileges;

service mysql stop
service apache2 restart

# docker commit -m "Added php.ini" -a "leeyc" e1418153eeff php:53-apache-v2

docker tag php:53-apache-v2 leeyichung/php:53-apache-v2


try {
    $user = "leeyc";
    $pass = "leeycpasswd";
    $host = "db";
    $dbh = new PDO("mysql:host=$host;dbname=centerdb", $user, $pass);
    foreach($dbh->query('SELECT * from bw_acode') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

/etc/apache2/sites-available# a2ensite 000-default.conf

## docker push images
# docker login
Username: leeyichung
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/referenc ... ials-store

Login Succeeded

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
web_web             latest              927feea7bfcb        24 minutes ago      1.17GB
web_db              latest              55221240336b        38 minutes ago      252MB
mysql               5.5                 d404d78aa797        17 months ago       205MB
centos              centos6             d0957ffdf8a2        19 months ago       194MB

# docker tag 55221240336b leeyichung/mysql55:firsttry
# docker push leeyichung/mysql55

# docker tag 927feea7bfcb leeyichung/apache2_php533:firsttry
# docker push leeyichung/apache2_php533

// 將容器儲存 image
# docker commit app
# docker tag 9bfd7cf23423 leeyichung/app:latest
# docker push leeyichung/app:latest

## docker-compose.yml
version: '3.3'
services:
  db:
    image: leeyichung/mysql55:firsttry
    container_name: mysql55
    environment:
      MYSQL_ROOT_PASSWORD: rootroot
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql
      - "/etc/localtime:/etc/localtime:ro"
    restart: always
  web:
    image: leeyichung/apache2_php533:firsttry
    container_name: apache
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./www:/var/www/html"
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    restart: always
    depends_on:
      - db
  app:
    image: leeyichung/app:latest
    container_name: app
    ports:
      - "8080:80"
    volumes:
      - "./html:/var/www/html"
    restart: always
    depends_on:
      - db

# docker exec -it apache /bin/bash
mkdir /var/www/bak

vi /etc/httpd/conf/httpd.conf

CustomLog logs/access_log combined

RewriteEngine On
RewriteLog logs/rewrite_log
RewriteLogLevel 4

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
TransferLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log 86400"


vi /etc/httpd/conf.d/directory.conf

#Alias /bak/ "/var/www/bak/" 
<Directory "/var/www/html/bak"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Allow from all 
    Order allow,deny 
    AuthType Basic
    AuthName "MyBak"
    AuthUserFile /var/www/html/bak/.htaccess
    Require valid-user
</Directory>
Alias /fdata/ "/var/www/html/fdata/"
<Directory "/var/www/html/fdata"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Allow from all 
    Order allow,deny 
</Directory>

# docker restart apache

root@b:/web# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
a06a836ccb91        web_web             "/bin/sh -c 'exec /u…"   22 minutes ago      Up 5 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   apache
4f36ed436b79        web_app             "docker-php-entrypoi…"   2 weeks ago         Up 8 hours          0.0.0.0:8080->80/tcp                       app
67c9bc26af7d        web_db              "docker-entrypoint.s…"   3 weeks ago         Up 8 hours          0.0.0.0:3306->3306/tcp                     mysql55
root@b:/web#

// 將容器儲存 image
# docker commit apache

root@b:/web# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              5c6db1065813        19 seconds ago      1.17GB
leeyichung/app      firsttry            eba868ab68cc        2 weeks ago         415MB
web_app             latest              eba868ab68cc        2 weeks ago         415MB
web_web             latest              4f6d0941e229        3 weeks ago         1.17GB
web_db              latest              993dfa742811        3 weeks ago         252MB
php                 7.4-apache          aaf1fe8553ca        4 weeks ago         414MB
mysql               5.5                 d404d78aa797        18 months ago       205MB
centos              centos6             d0957ffdf8a2        20 months ago       194MB
root@b:/web#

# docker tag 5c6db1065813 leeyichung/apache:latest
# docker push leeyichung/apache:latest


  web:
    image: leeyichung/apache:latest
    container_name: apache
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./www:/var/www/html"
      - "./bak:/var/www/bak"
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    restart: always
    depends_on:
      - db

## 中央保全HR Docker 設定檔 ###################
leeyc@TS100-E9-PI4:/web$ cat docker-compose.yml
version: '3.3'
services:
  web:
    image: leeyichung/apache:php53
    container_name: apache
    volumes:
      - "./www:/var/www/html"
      - "./www/bak:/var/www/html/bak"
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
    ports:
      - "80:80"
      - "443:443"
    network_mode: "host"
    restart: always
    depends_on:
      - db
  db:
    image: mysql:5.5
    container_name: mysql55
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpasswd
    ports:
      - "3306:3306"
    volumes:
      - ./mydata/:/var/lib/mysql
      - "/etc/localtime:/etc/localtime:ro"
###################################

Alias /fdata/ "D:/AppServ/www/fdata/" 
<Directory "D:/AppServ/www/fdata/"> 
    Options FollowSymLinks MultiViews 
    AllowOverride None 
    Allow from all 
    Order allow,deny 
    #AuthType Basic
    #AuthName "MyBak"
    #AuthUserFile d:\AppServ\bak\.htaccess
    #Require valid-user
</Directory>
Alias /bak/ "d:/AppServ/bak/" 
<Directory "d:/AppServ/bak/"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Allow from all 
    Order allow,deny 
    AuthType Basic
    AuthName "MyBak"
    AuthUserFile d:\AppServ\bak\.htaccess
    Require valid-user
</Directory>
回覆文章