레이블이 yum인 게시물을 표시합니다. 모든 게시물 표시
레이블이 yum인 게시물을 표시합니다. 모든 게시물 표시

yum modular filtering

# rocky 8.8 에 최신 postgresql15 repo 파일을 /etc/yum.repos.d/ 에 생성하고 설치하면
sudo yum install postgresql15-server

# 다음과 같은 에러가 발생한다.
All matches were filtered out by modular filtering for argument: postgresql15-server
# 한글 에러는 요렇다.
일치하는 인수가 없습니다: postgresql15-server

# 기존 postgresql(버전10) 패키지를 비활성화 후 설치하면 된다.
sudo yum module disable -y postgresql

install mysql8 in rocky8

# rocky8 에서 mysql8.0 설치하기 위해선 다음과 같이 외부 저장소로 부터 설치해야 했다.
# 참고로 프록시가 필요한 경우 sudo 실행시 -E 로 proxy 설정 유지가 필요하다.
(프록시설정) sudo -E yum -y install https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm

# 혹시나 잘못되면 다시 지우고 설치하자!!!(요거 몰라서 삽질)
sudo yum erase -y mysql80-community-release-el8-9.noarch

# mysql80 저장소가 보인다.
yum repolist enabled | grep mysql.*-community

# 기존 mysql 모듈은 비활성화 처리해야 mysql-community-8.0 패키지를 사용할 수 있다.
sudo yum module reset -y mysql
sudo yum module disable -y mysql

# 패지키 확인, 버전이 8.0으로 보인다.
sudo yum info mysql-community-devel mysql-community-server

# 이제 설치하면 된다.
(프록시설정) sudo -E yum install -y mysql-community-devel mysql-community-server

#####

# ansible 사용시
- block
  - name: "Install MySQL8 remote repository for Rocky 8"
    yum:
      # redirect url 사용시 에러 발생
      #name: "https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm"
      name: "https://repo.mysql.com/mysql80-community-release-el8-9.noarch.rpm"
      state: installed
      sslverify: false
      disable_gpg_check: true
      update_cache: true
    when: ansible_distribution == "Rocky" and ansible_distribution_major_version == "8"

  - name: "Install MySQL8 devel package for Rocky 8"
    yum:
      name: mysql-community-devel
      state: installed
    when: ansible_distribution == "Rocky" and ansible_distribution_major_version == "8"

  - name: "Install MySQL8 server package for Rocky 8"
    yum:
      name: mysql-community-server
      state: installed
    when: ansible_distribution == "Rocky" and ansible_distribution_major_version == "8"

  become: true
  environment: "{{ my_proxy }}"

install postresql by yum

# centos 7 에서 postresql 9.6 버전을 다음 repository로 설치하려고 하는데 해당 URL은 사라진 상태다.
# sudo yum install -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 대신 최신 yum repository 를 설치하자
sudo yum install -y -v https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 만약 gpg 체크가 필요하다는 에러 메시지가 나오면 다음 설정으로 비활성화 할 수 있다.
sudo vi /etc/yum.conf
gpgcheck=0

# 참고로 ansible 사용시 저장소 추가 예시
- name: "Install Postgresql 15 for centos/rocky"
  yum:
    name: "http://download.postgresql.org/pub/repos/yum/reporpms/EL-{{ansible_distribution_major_version}}-x86_64/pgdg-redhat-repo-latest.noarch.rpm"
    state: present
    sslverify: false
    disable_gpg_check: true
  become: yes

# 설치된 yum repository 확인
sudo yum repolist

# (필요시) /etc/yum.repo.d 내용을 다시 로딩
sudo yum makecache -q

# 기본 postgresql 패키지는 비활성화
sudo yum module disable postgresql

# 15버전 패키지가 리스트에 있는지 확인
yum list | grep -E ^postgresql15

# 설치
sudo yum install -y postgresql15-server postgresql15-contrib

# db초기화
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

# postgresql 서비스 활성화,시작,상태확인
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
sudo systemctl status postgresql-15

nfs client

# 다음과 같이 nfs 마운트 실행하면 에러가 발생했다.
sudo mount -t nfs 10.10.10.123:/nfs/ /home/ysoftman/nfs
... for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program

# nfs 클라이언트 프로그램을 설치하면 된다.
# ubuntu 의 경우
sudo apt-get install nfs-common

# centos 의 경우
dnf install nfs-utils
# 또는
yum install nfs-utils

centos 최신 repo 반영하기

# docker등 CentOS 기본 버전에서는 최신 패키지 내용이 반영되어 있지 않다.
# CentOS:7 도커 이미지를 기반에서 nodejs(npm 사용하기 위해) 패키지를 설치할때
yum install -y nodejs

# 다음과 같이 사용 불가능한 패키지로 표시된다.
No package nodejs available

# 이 경우 https://ius.io/ 에서 제공하는 최신 패키지 리스트를 사용하면 된다.
# RHEL(Red Hat Enterprise Linux) 나 CentOS 에 최신 패키지 리스트 적용
# /etc/yum.repos.d/ius.repo 등이 생성된다.
yum install -y https://centos7.iuscommunity.org/ius-release.rpm

# ius 를 추가하면 centos 7 에서 yum 으로 python3 설치할 수 있다.
yum install -y python36u python36u-libs python36u-devel python36u-setuptools

ycmd server SHUT DOWN 에러 해결하기

# youcompleteme(ycm) 플러그인을 설치 후 vim 시작시 다음과 같은 에러가 발생한다.
# 참고로 ycm 은 클라이언트이고 third_party/ycmd 에 서버 소스가 있다.
The ycmd server SHUT DOWN (restart with ':YcmRestartServer')

# 다음과 같이 인스톨을 다시 해줘야 한다.
cd ~/.vim/plugged/youcompleteme
git submodule update --init --recursive
./install.py --all --verbose

# 만약 ./install.py 수행시 c++11 지원 안된다는 에러가 발생하는 경우
CMake Error at CMakeLists.txt:247 (message):
  Your C++ compiler does NOT fully support C++11.

# gcc 는 있지만 g++ 이 설치되어 있지 않아서다.
# 다음과 같이 g++ 를 설치 후 ./install.py
sudo yum install gcc-c++

# 만약 다음과 같은 에러가 발생하는 경우
fatal error: pyconfig.h:

# python-devel 을 설치 후 ./install.py
sudo yum install python-devel

#####

# M1(arm64) 맥북 환경에서 다음과 같이 빌드시 clang 에러가 발생했다.
./install.py --all --verbose

# 원인은 pyenv 로 설치한 python3.12(~/.pyenv/shims/python)가
# 설치시 다음과 같이 gcc 로 빌드해서였다.
CC=/opt/homebrew/bin/gcc-13 pyenv install -v 3.12

# clang 으로 다시 빌드해 설치 후
pyenv install -v 3.12

# ycmd 를 다시 빌드하면 된다.
./install.py --all --verbose

yum 최신 저장소 추가

# yum update 로 패키지를 업데이트를 하더라도 최신 패키지가 반영되지 않을 수 있다.
# 이럴땐 EPEL repository 를 설치하자.
# EPEL(extra package for enterprise linux, fedora 최신 패키지 저장소)
# 저장소 확인
yum repolist

# epel 설치
sudo yum install epel-release

# 혹시 epel 로 기존 패키지 설치가 안되는 경우 epel을 삭제하자
# 현재 설치된 epel 버전 확인
rpm -qa | grep epel-release

# epel 제거 -e 패키지명
sudo rpm -ev epel-release-7-11.noarch


#####

# yum 캐시 전체 삭제
yum clean all

# yum update 했는데 문제가 생긴경우 update 를 되돌려 보자
# yum 으로 실행한 이력을 파악
sudo yum history

# ID 에 해당하는 yum 명령을 undo 한다.
sudo yum history undo ID번호


centos7 docker 이미지 locale 설정 오류

# centos7 기본 도커 이미지를 받아 실행한다.
# .bashrc 파일에 다음과 같이 언어 설정을 하고 접속을 하게 되면
export LANG=ko_KR.utf8
export LC_ALL=ko_KR.utf8

# 다음과 같이 locale 을 설정할 수 없다는 에러가 발생하는 경우가 있다.
bash: warning: setlocale: LC_ALL: cannot change locale (ko_KR.utf8): No such file or directory

# 사용 가능한 모든 지역 언어(locale -a)설정 리스트를 확인해보면
# 지원되는 언어 3개 밖에 없다.
locale -a
C
POSIX
en_US.utf8

# 언어 패키지가 설치 안된것 같아 다음과 같이 설치해보았지만 설치자체가 안된다.
sudo yum groupinstall korean-support

# 이와 같은 이슈를 고민하는 사람들이 있다.
https://serverfault.com/questions/616790/how-to-add-language-support-on-centos-7-on-docker

# 도커 centos7 최근 이미지에서 영어, c, posix 를 제외한 로케일을 일부러 삭제한것으로 보인다.
# 우선 glibc 패키지를 재설치하라고 했지만 해결되지 않는다.
sudo yum reinstall -y glibc-common glibc

# 해결 방법
# (centos8의 경우) glibc-locale-source 설치
sudo yum install glibc-locale-source

# 이렇게 하면 /usr/lib/locale/locale-archive (locale 이 참고하는 파일)에 추가된다고 한다.
# -f UTF-8 :charmap 지정, /usr/share/i18n/charmaps/UTF-8.gz 심벌, 인코딩 정보
# -i ko_KR : sourcefile 지정, /usr/share/i18n/locales/ko_KR 언어 정의
# ko_KR.utf : 아카이브에 추가할 이름
sudo localedef -f UTF-8 -i ko_KR ko_KR.utf8

# 추가로  UTC 로 설정(링크)되어 있는 링크를 한국시간으로 변경해보자.
https://yoonbh2714.blogspot.kr/2017/11/centos-localtime.html
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# 참고
# centos7 기본이라 패키지가 설치된게 거의 없다.
# dockerfile 로 다음 패키지들은 설치하도록 한다.
# yum 으로 패키지 설치후 locale 이 변경될 수 있어 localedef 는 뒤에 실행 하자.
RUN yum install -y sudo tar git rsync gcc gcc-c++ net-tools which iproute man-pages man setuptool ncurses-devel python-devel libevent-expat-devel bzip2-devel
RUN yum groupinstall -y 'development tools'
RUN localedef -f UTF-8 -i ko_KR ko_KR.utf8 && ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# 추가로 
# ubuntu 에서 타임존 설정
RUN apt-get update && \
apt-get install -y rsync apt-utils && \
rm -f /etc/localtime && \
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# alpine 에서 타임존 설정
RUN apk --no-cache add tzdata && \
cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
echo "Asia/Seoul" > /etc/timezone

python2, python3 동시에 사용하기

# python2, python3 각각 설치하면 버전에 맞는 PYTHONPATH 를 설정해야 한다.
# pyenv python 버전별 설치 및 버전별 스위칭을 해준다.
# pyenv 를 이용해서 python2, python3 설치하면 PYTHONPATH 신경쓸필요 없이 각 버전에 맞는 환경이 설정되어 잘 실행된다.
# pyenv(https://github.com/pyenv/pyenv)를 설치하자
brew install pyenv

# 쉘 설정 끝에 추가한다.
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

# 쉘을 다시 시작하면 다음과 같이 환경변수에 pyenv 가 가장 우선하게 된다.
echo $PATH
/Users/ysoftman/.pyenv/shims:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

# 파이썬 2.7.14 버전 설치
# -f, --force
pyenv install -f 2.7.14

# 파이썬 2.7.12 버전 삭제
pyenv uninstall -f 2.7.12

# 파이썬 3.6.4 버전 설치
pyenv install -f 3.6.4

# 참고로 mac 에서 pyenv install 3.6.4 설치시
# [Modules/posixmodule.o] Error 1 .. 등이 발생할 하면 xcode 를 업데이트해보자.
# 사용 가능한 파이썬 버전 확인, *현재 기본(전역) 설정된 값
pyenv versions
  2.7.14
* 3.6.4 (set by /Users/ysoftman/.pyenv/version)

# 현재 전역으로 설정된 파이썬 버전 확인
pyenv global

# python3 을 전역으로 설정하는 경우
pyenv global 3.6.4

# 파이썬 3.6.4 을 사용하는 ysoftmanProejctA 이름의 가상환경 생성
# pyenv 로 3.6.4 가 설치되어 있어야 한다.
pyenv virtualenv 3.6.4 ysoftmanProejctA

# virtualenv 리스트
pyenv virtualenvs

# ysoftmanProjectA 가상환경 활성화(시작)
pyenv activate ysoftmanProjectA

# ysoftmanProjectA 가상환경 비활성화
pyenv deactivate ysoftmanProjectA

# virtualenv 삭제
pyenv uninstall ysoftmanProjectA

# 현재 작업중인 디렉토리에서는 python3 를 사용한다면 다음과 같이 실행
# .python-version 파일이 생성되며 내용은 3.6.4 로 명시된다.
pyenv shell 3.6.4

# 이제 같은 쉘 환경에서 python 또는 python3 를 실행이 가능하다.
# 참고로 패키지는 설치는 pip, pip3 그대로 사용하면 된다.
pip2 install numpy pillow matplotlib
pip3 install numpy pillow matplotlib

##########

# pyenv 파이썬 버전만 변경하기 때문에 프로젝트별 패키지를 구분해 관리하려면 
# virtualenv(https://github.com/pypa/virtualenv)를 설치하자
brew install pyenv-virtualenv

# ~/.bashrc 에 다음을 추가해준다.(필요한 경우만)
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
export PYENV_VIRTUALENV_DISABLE_PROMPT=1

# 참고로 pyenv virtualenv-init - 명령을 실행하면
# precmd_function 에 _pyenv_virtualenv_hook() 를 추가 시키고
# 이 함수는 pyenv sh-activate 를 실행하는게 이게 느림(400ms 정도)
# prompt 속도가 느려지니 필요없으면 제외시키자.

# ysoftman1 디렉토리에 python3.6 가상환경 생성
virtualenv ysoftman1 --python=python3.6

# ysoftman1 가상환경 활성화
source ./ysoftman1/bin/activate

# ysoftman1 가상환경 비활성화(activate 스크립트에 deactivate()가 있음)
deactivate

# ysoftman1 가상환경 삭제
rm -rf ./ysoftman1

# 참고로 venv 는 virtualenv 의 경량버전으로 python3.3 부터 기본으로 포함되어 있다.
# 경량버전이라 기능이 적고 virtualenv 보다 속도가 느리다고 한다.
# 현재 디렉토리에 venv 가상환경 설정
# python3 -m venv .

##########

# pip+virtualenv 를 합친 pipenv(https://github.com/pypa/pipenv) 설치
# pipenv 내부적으로 virtualenv 를 사용한다.
pip install pipenv

# 현재 경로의 프로젝트에 새로운 가상환경 생성
# (package.json 같은) Pipfile 패키지 파일을 생성한다.
pipenv
# 또는
pipenv --python 3.7

# 현재 프로젝트(가상환경) 홈 위치 확인
pipenv --where

# 현재 프로젝트의 실제 가상환경 위치 확인
# 이 위치로 패키지,파이썬 등이 설치된다.
# /Users/ysoftman/.local/share/virtualenvs/ysoftmant-test-1234 등의 위치가 된다.
pipenv --venv

# 현재 프로젝트(가상환경)에 패키지 설치(pip)
pipenv install package_name

# 현재 프로젝트(가상환경)에 패키지 삭제(pip)
pipenv uninstall package_name

# 현재 로컬(setup.py)을 현재 프로젝트(가상환경)에 설치
pipenv install -e .

# 현재 프로젝트(가상환경)을 가진 shell 실행
# 가상환경 설정을 반영(. ~/가상환경 설정 경로)한 쉘을 생성한다.
pipenv shell

# 현재 프로젝트(가상환경)에 설치된 패키지 정보 확인
pipenv graph

# 현재 프로젝트(가상환경)에서 실행하기
pipenv run aaa.py

# 현재 프로젝트(가상환경) 제거하기
pipenv --rm

# pipfile.lock 갱신하기
pipenv lock

centos6 gcc 4.8 이상 설치

centos 6.x 의 기본 gcc 버전은 4.4.x 다.
최근의 프로그램들은 gcc 4.8 이상에서 빌드되는 경우가 많은데 os 업그레이드 없이 gcc 버전을 업데이트 해보자.

# repo 추가
# 혹시 보안상의 이유로 proxy 가 필요하다면 proxy 설정을 export 한다.
# sudo 에서 export 된 proxy 설정을 사용하기 위해 -E 추가
sudo -E wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo

# 패키지 설치
sudo -E yum install centos-release-scl-rh
sudo -E yum install devtoolset-3-gcc devtoolset-3-gcc-c++

# gcc, g++ 위치
/opt/rh/devtoolset-3/root/usr/bin/

# devtoolset 활성화
# .bashrc 에 추가해서 사용하자.
source /opt/rh/devtoolset-3/enable

docker command

docker(도커)는 리눅스의 컨테이너 기술을 이용한 가상화 플랫폼이다.
기존 가상화 시스템인 VMware, VirtualBox 등과 달리 Guest OS 를 설치하지 않고 Host OS 의 자원을 공유해서 사용할 수 있어 빠른 장점이 있다.
(기존 가상화 시스템은 게스트 OS 와 호스트 OS 를 사이에 Hypervisor 가 존재하고 이과정으로 인해 전반적인 속도 저하가 발생한다.)
도커는 이미지(image)라는 일종의 파일 묶음을 컨테이너(container)라는 일종의 실행환경 인스턴스로 만들어 사용하게 된다.
도커는 리눅스에서 동작하지만 Mac 이나 Windows 에서 Docker ToolBox 를 이용해서 사용할 수 있다.

# 윈도우에서 docker 설치하기(legacy)
# DockerToolBox 다운로드 https://www.docker.com/products/docker-toolbox
# 아래 그림 처럼 docker compose, virtualbox, kitematic 를 모두 설치하자.


# Docker QuickStart Terminal 실행하면 도커의 마스코트 고래가 짜잔~ㅎ
# 참고로 초기 실행시 환경 설정으로 느리고 다음 실행 부터는 빠르게 프롬프트가 표시된다.


# dockertoolbox 는 legacy 로 대신 docker ce(community edition) 을 설치할 수 도 있다.
# 윈도우 도커 다운로드 https://docs.docker.com/docker-for-windows/install/

#####

# 맥에서 docker 설치
# Docker.dmg 다운로드 https://docs.docker.com/docker-for-mac/install/
# docker.app 실행 하면 도커 데몬이 실행되고 상단에 다음과 같은 고래 아이콘이 보인다.

# 2017년 현재 mac 에서 docker 사용시 몇자기 제한이 있다.
# docker0 브리지가 없고 컨테이너 ip 설정이 안된다.
https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
# 설정 파일을 이용한다면
vi /etc/docker/daemon.json
{
  "data-root": "/home/ysoftman/docker",
  "insecure-registries" : ["myregistrydomain.com:5000", "ysoftman.com:5000"]
}
sudo service docker restart

#####

# centos 에서 docker 설치
# 기존 설치된 docker 모두 삭제
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
# 도커 설치 파일 다운로드
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.12.1.ce-1.el7.centos.x86_64.rpm

# 설치(rpm 파일은 yum 으로도 설치할 수 있다.)
sudo yum install ./docker-ce-17.12.1.ce-1.el7.centos.x86_64.rpm

#####
# linux 에서 sudo 없이 docker 명령 사용하기
# 방법1 - docker 그룹 추가 (/etc/group)
sudo groupadd docker

# /etc/group 에 docker 그룹에 현재 사용자 추가
sudo gpasswd -a $USER docker

# 소켓파일 docker 그룹으로 변경
sudo chgrp docker /var/run/docker.sock

# 터미널 로그아웃/로그인
# 방법2 - socket 파일 권한 변경
# docker.sock file acl 보기
getfacl /var/run/docker.sock

# docker.sock docker 그룹 권한 설정
sudo setfacl -m g:docker:rw /var/run/docker.sock

# docker.sock docker 그룹 권한 삭제
sudo setfacl -x g:docker /var/run/docker.sock

# 방법3 - socket 파일 현재 사용자:그룹으로 권한 변경
sudo chown -R ysoftman:ysoftman /var/run/docker.sock

#####

# docker command
# 도커 이미지 저장 위치(docker root dir) 저장소(registry) 등 정보 확인
docker info

# 현재 가지고 있는 이미지 목록 보기
docker images

# 도커 hub 에 올라온 nginx 이미지 검색하기
docker search nginx

# description 에 Official 이라고 명시된 공식 이미지를 다운 받자.
# nginx:123 와 같이 태그를 명시하지 않으면 가장 최근 버전을 다운 받는다.
docker pull nginx

# nginx 에서 사용에 마운트해서 사용할 공간 만들기
mkdir /www
vi /www/index.html
ysoftman nginx test

# nginx 이미지로 컨테이너 만들기
# run : 컨테이터 생성(실행)
# --name : 컨테이너 이름 설정
# -d : 컨테이너를 백그라운드로 실행
# -i : interactive(stdin open)
# -t : tty 환경
# -v : 호스트 /www 를 컨테이너의 /usr/share/nginx/html 에 readonly 로 마운트, 둘다 절대경를 사용해얖 한다. readonly 를 빼면 디폴트로 쓰기도 가능하다.
# -p : 호스트 포트 8080 을 컨테이너 포트 80 에 바인딩
# nginx : 실행시킬 이미지 이름
docker run --name ysoftman_nginx -dit -v /www:/usr/share/nginx/html:ro -p 8080:80 nginx

# 컨테이너에 명령어 실행하기(쉘 실행하여 접속해보기)
docker exec -u root -it ysoftman_nginx /bin/bash

# 컨테이너 상태 파악
# -v 마운트를 했는데 Config -> Volumes 가 null 이라면 -v 을 사용하지 말자
docker inspect ysoftman_nginx

# 컨테이터의 ip 확인
docker inspect --format='{{.NetworkSettings.IPAddress}}' ysoftman_nginx

# 도커(호스트) ip 확인
# 윈도우의 경우 mingw64 환경(git bash사용)에서 도커가 동작하기 때문에 mingw64 가 호스트가 된다.
# http://도커ip:8080 로 nginx 동작 확인
docker-machine ip

# ysoftman_nginx 컨테이너에서 현재 실행중이 프로세스 보기
docker top ysoftman_nginx

# 컨테이너 목록 보기(STATUS 로 상태를 알 수 있기 때문에 top 대신 사용 가능)
docker ps -a  또는 --all


# 컨테이너 변경사항으로부터 이미지 만들기
# -m "ysoftman_nginx" : 커밋 메시지
# -a "ysoftman" : 작성자
# ysoftman/ysoftman_nginx:1.0 : 저장소:tag 로 이미지 생성
docker commit -m "ysoftman_nginx" -a "ysoftman" ysoftman_nginx ysoftman/ysoftman_nginx:1.0

# dockerfile 을 작성하여 이미지 빌드시
# --no-cache=true 캐시된 이미지를 사용하지 않고 새로 만들어 시간이 올래 걸린다.
# -t 태그 명시(저장소:태그)
# 자세한 내용은 https://docs.docker.com/engine/reference/builder/
docker build --no-cache=true -t ysoftman/ysoftman_nginx:1.0 .

# dockerfile 작성시 유념
# RUN,COPY 실행 마다 레이어가 생성된다.
# 이전 레이어가 실행한것을 알지 못하기 의존성이 있는 명령은 && 연결해 하나의 RUN 으로 실행해야 한다.
# CMD 는 한번밖에 사용하지 못한다.
# CMD "echo aaa; echo bbb" 는 shell(새로운 프로세스 생성) 방식이다.
# CMD ["echo aaaa"] 는 exec(현재 프로세스를 대체) 방식이다.
# exec 방식에서 여러개의 명령을 실행하려면
# CMD ["bash", "-c", "echo aaa; echo bbb;"] 와 같이 bash -c(뒤에 오는 스트링을 쉘명을 처리) 로 실행해야 한다.
# 참고 https://docs.docker.com/engine/reference/builder/#cmd
# 다음은 명령마다 생성된 이미지와 각각의 크기를 알 수 있다.
docker histsory ysoftman/ysoftman_nginx:1.0

# docker hub 로그인(없으면 계정 생성 https://hub.docker.com)
# $HOME/.docker/config.json 설정된 서버로 로그인한다.
docker login

# docker hub 에 이미지 푸시하기
docker push ysoftman/ysoftman_nginx:1.0

# 컨테이너 5초 후 중지
docker stop -t 5 ysoftman_nginx

# 컨테이너 시작하기
docker start ysoftman_nginx

# 컨테이너 로그(비정상 종료 코드로 exit 되는 경우 참고)
# -f, --follow
docker logs -f ysoftman_nginx

# 컨테이너 강제 삭제
docker rm -f ysoftman_nginx

# 컨테이너 전체 삭제
docker rm $(docker ps -aq)

# 이미지 강제 삭제
docker rmi -f ysoftman_nginx:1.0

# 이미지 전체 삭제
docker rmi $(docker images -q)

# 이미지 태깅이 안되거나 이미지 생성 중 실패된 상태의 <none> 이미지 삭제
docker rmi $(docker images -a | grep "<none>" | awk '{print $3}')

# docker 1.13 부터 image container ... 등 관리 명령이 추가되었다.
# 최신 docker 무료버전(ce) 를 설치하자
# 기존 old docker 삭제
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

# yum 관련 유틸 설치
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# centos 용 docker 저장소 추가
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# docker ce 설치
sudo yum install docker-ce

# unused 이미지들 모두 삭제
docker image prune

# dangling 이미지들 모두 삭제
sudo docker rmi $(sudo docker images --filter "dangling=true" -q)

# 중지된 컨테이너들 모두 삭제
docker container prune

# exited 또는 created 상태 컨테이너들 삭제
sudo docker ps -a | grep -i -e exited -e created | awk '{print $1}' | xargs docker rm

# 도커 이미지,컨테이너등이 사용하는 디스크 용량 확인
docker system df
docker system df -v

# 사용안하는 이미지, 컨테이너들 모두 삭제
docker system prune

# 100일(2400시간)이 지난 이미지는 모두 삭제
# -a, --all  Remove all unused images, not just dangling ones
#     --filter filter   Provide filter values (e.g. 'until=<timestamp>')
# -f, --force           Do not prompt for confirmation
docker image prune -a -f --filter "until=2400h"

# 참고
http://pyrasis.com/docker.html
https://hub.docker.com/_/nginx
http://blog.iolo.kr/510
https://docs.docker.com/engine/reference/commandline/dockerd/
https://docs.docker.com/engine/installation/windows/#container-port-redirection
http://www.slideshare.net/pyrasis/docker-fordummies-44424016

Linux yum, apt-get 설치된 패키지 위치 정보

# 설치한 패키지의 위치를 알아내기
# 예) gcc

# readhat 계열의 yum 으로 설치한 경우
rpm -ql gcc

# debian 계열의 apt-get 으로 설치한 경우
dpkg -L gcc

Linux yum 저장소(repository) 설정

yum 이 참조하는 저장소는 /etc/yum.repos.d 에서 설정할 수 있다.
보통 CentOS 경우 CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo 3개가 있으며 패키지 저장소 위치는 CentOS-Base.repo 에 아래와 같이 설정된다.

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

# 참고로 gcc/g++ 개발 툴 패키지를 기본으로 설치해놓도록 한다.
# 패키지 확인
sudo yum groupinfo -v 'development tools'

# 설치
sudo yum groupinstall -y 'development tools'

Linux CentOS 설치 후 한글 언어를 선택하면 사각형 문자로 표시되는 문제

CentOS 를 설치하고 언어선택(Language Selection)에서 한글을 선택하면 한글이 사각형 문자로 표시되는 경우가 있다.
이것은 한글 폰트가 없어서 한글을 표시하지 못하는 문제로 아래와 같이 한글 폰트를 설치해 주면 된다.
yum -y install fonts-korean

install mercurial

// Mercurial(일명 hg) 는 SVN 과 같은 버전 관리 툴로 사용방법은 다음과 같다.
// 파이썬 설치하기
yum install python-devel

// 머큐리얼 파일 다운로드 및 설치
wget http://mercurial.selenic.com/release/mercurial-1.0.tar.gz
tar xvfz mercurial-1.0.tar.gz
make all
make install