Dockerミラー作成実戦:タイムゾーンとシステムコードの設定

7699 ワード

Dockerミラーを作成する際にcentosの公式ミラーをベースミラーとしてよく使用します.これらのベースミラーのタイムゾーンとシステム符号化は私たちのニーズを満たしていません.タイムゾーンCST、システム符号化UTF-8が必要です.今日は実戦でDockerミラーを作成し、タイムゾーンとシステム符号化を私たちが望んでいるものに設定します.今後、他のミラーはこれをベースミラーとして、タイムゾーンとシステム符号化の問題に注目する必要はありません.
原文住所:https://blog.csdn.net/boling_cavalry/article/details/80381258

まず現状を見る


まずcentosの公式ミラーの状況を見てみましょう:1.dockerが装着されたマシンでdocker run-name centos 001-idt centos:7を実行すると、centosの公式ミラーのコンテナが起動します.2.コマンドdocker exec-it centos 7001/bin/bashを実行し、容器内に入る.3.コマンドdateを実行します.現在のコンテナタイムゾーンはUTCで、以下のように表示されます.
root@maven:~# docker run --name centos001 -idt centos:7
b51aba6a372ea21ec25ccf53f09b8837508414a11a1da0488a350d775dd9e85b
root@maven:~# docker exec -it centos001 /bin/bash 
[root@b51aba6a372e /]# date
Sun May 20 04:17:23 UTC 2018

4.コマンドlocaleを実行し、現在のシステム符号化が表示されます.以下のようにします.
[root@b51aba6a372e /]# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

以上が現状であり、次にミラーを作成する方法を見て、タイムゾーンとシステム符号化が設定されている.

カスタムミラー


タイムゾーンとシステムコードの設定はミラーを作成するときに完了するので、ミラーを作成します:1.Dockerfileファイルを作成します.内容は次のとおりです.
# Docker file for date and locale set 
# VERSION 0.0.3
# Author: bolingcavalry

# 
FROM centos:7

# 
MAINTAINER BolingCavalry 

# 
ENV TZ=Asia/Shanghai

# 
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone

# 
RUN yum -y install kde-l10n-Chinese glibc-common

# 
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8

# 
ENV LC_ALL zh_CN.utf8

2.Dockerfileファイルがあるディレクトリでコマンドdocker build-t bolingcavalry/centos 7-cst-utf 8:0.0.1を実行します.ミラーの作成は以下のように行います.
root@maven:/usr/local/work/cstutf8image# docker build -t bolingcavalry/centos7-cst-utf8:0.0.1 .
Sending build context to Docker daemon 2.048 kB
Step 1/7 : FROM centos:7
 ---> 2d194b392dd1
Step 2/7 : MAINTAINER BolingCavalry 
 ---> Using cache
 ---> a7549a776033
Step 3/7 : ENV TZ Asia/Shanghai
 ---> Using cache
 ---> 7b861b5c357c
Step 4/7 : RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
 ---> Using cache
 ---> 08ca24b44c93
Step 5/7 : RUN yum -y install kde-l10n-Chinese glibc-common
 ---> Using cache
 ---> 4b6f471ae930
Step 6/7 : RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
 ---> Using cache
 ---> 1cc68728acb0
Step 7/7 : ENV LC_ALL zh_CN.utf8
 ---> Using cache
 ---> 9e5b583d7359
Successfully built 9e5b583d7359

新しいイメージを体験

  • コマンドdocker run–name centos 002-idt bolingcavalry/centos 7-cst-utf 8:0.0.1を実行し、構築したばかりのミラーに基づいてコンテナを作成します.
  • コマンドdocker exec centos 002 dateを実行し、コンテナに現在の時間情報を表示させます.以下に示すように、CSTタイムゾーンであり、中国語で正常に表示できます.
  • root@maven:/usr/local/work/cstutf8image# docker exec centos002 date
    2018  05  20    16:33:14 CST

    3.コマンドdocker exec centos 002 localeを実行し、コンテナに現在のシステムコードを以下のように表示させます.
    root@maven:/usr/local/work/cstutf8image# docker exec centos002 locale
    LANG=
    LC_CTYPE="zh_CN.utf8"
    LC_NUMERIC="zh_CN.utf8"
    LC_TIME="zh_CN.utf8"
    LC_COLLATE="zh_CN.utf8"
    LC_MONETARY="zh_CN.utf8"
    LC_MESSAGES="zh_CN.utf8"
    LC_PAPER="zh_CN.utf8"
    LC_NAME="zh_CN.utf8"
    LC_ADDRESS="zh_CN.utf8"
    LC_TELEPHONE="zh_CN.utf8"
    LC_MEASUREMENT="zh_CN.utf8"
    LC_IDENTIFICATION="zh_CN.utf8"
    LC_ALL=zh_CN.utf8

    これで、新しいミラーの作成と検証が完了し、これらの微細な変更が、ビジネスミラーやコンテナの起動後に処理する必要がなく、ミラーをカスタマイズする際にいくつかの参考を提供することを望んでいます.