2019.07.07


간만에 해보려고 했더니, 에러가 발생한다.

공식 가이드에도 14.04 버전에 대한 가이드 내용이 사라졌다.

아래 내용은 그냥 참고만 하시길...


============================================================================================


공식 홈페이지에 너무나 잘 나와있다.

- https://docs.docker.com/engine/installation/linux/ubuntu/



공식 홈페이지 내용 참고해서 직접 해보면서 진행했던 내용의 기록이다.

하나씩 따라가보자.


※ 이 블로그를 계속 봐오신 분들은 아시겠지만... 아래 내용은 직접 실행해보면서 작성한 것입니다.

※ VirtualBox를 이용하여 해당 OS를 설치하고 update까지만 마친 상태에서 진행하였습니다.




1. Ubuntu version

    - Docker에 대한 환상을 갖고 있었다. OS에 의존하지 않고 자유로운.... 하지만 꽝!

    - Ubuntu 14.04, 16.04, 16.10 만 지원하고 있다.

    - 특히, 64bit 만 지원한다! 32bit 안된다!



2. 필요 패키지 설치 (Ubuntu 14.04)

    - Ubuntu 14.04 버전에서만 하면 된다고 한다.


sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual



3. Binary 확인

    - 웹으로 다운로드 받을 버전을 확인하자.




4. Download 받기


$ wget https://download.docker.com/linux/ubuntu/dists/trusty/pool/stable/amd64/docker-ce_17.03.1~ce-0~ubuntu-trusty_amd64.deb



5. Docker 설치하기


sudo dpkg --install ./docker-ce_17.03.1~ce-0~ubuntu-trusty_amd64.deb



6. Hello World


$ sudo docker run hello-world

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

78445dd45222: Pull complete 

Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7

Status: Downloaded newer image for hello-world:latest


Hello from Docker!

This message shows that your installation appears to be working correctly.


To generate this message, Docker took the following steps:

 1. The Docker client contacted the Docker daemon.

 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.

 3. The Docker daemon created a new container from that image which runs the

    executable that produces the output you are currently reading.

 4. The Docker daemon streamed that output to the Docker client, which sent it

    to your terminal.


To try something more ambitious, you can run an Ubuntu container with:

 $ docker run -it ubuntu bash


Share images, automate workflows, and more with a free Docker ID:

 https://cloud.docker.com/


For more examples and ideas, visit:

 https://docs.docker.com/engine/userguide/



끝~

반응형

 


공식 홈페이지에 너무나 잘 나와있다.

- https://docs.docker.com/engine/installation/linux/ubuntu/



공식 홈페이지 내용 참고해서 직접 해보면서 진행했던 내용의 기록이다.

하나씩 따라가보자.


※ 이 블로그를 계속 봐오신 분들은 아시겠지만... 아래 내용은 직접 실행해보면서 작성한 것입니다.

※ VirtualBox를 이용하여 해당 OS를 설치하고 update까지만 마친 상태에서 진행하였습니다.




1. Ubuntu version

    - Docker에 대한 환상을 갖고 있었다. OS에 의존하지 않고 자유로운.... 하지만 꽝!

    - Ubuntu 14.04, 16.04, 16.10 만 지원하고 있다.

    - 특히, 64bit 만 지원한다! 32bit 안된다!



2. 필요 패키지 설치 (Ubuntu 14.04)

    - Ubuntu 14.04 버전에서만 하면 된다고 한다.


sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual



3. GPG Key 등록 준비


sudo apt-get install apt-transport-https ca-certificates curl software-properties-common



4. GPG Key 등록하기


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88



5. apt 소스 리스트 추가하기


sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

$ sudo apt-get update



6. Docker 설치하기


sudo apt-get install docker-ce



7. Hello World


$ sudo docker run hello-world

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

78445dd45222: Pull complete 

Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7

Status: Downloaded newer image for hello-world:latest


Hello from Docker!

This message shows that your installation appears to be working correctly.


To generate this message, Docker took the following steps:

 1. The Docker client contacted the Docker daemon.

 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.

 3. The Docker daemon created a new container from that image which runs the

    executable that produces the output you are currently reading.

 4. The Docker daemon streamed that output to the Docker client, which sent it

    to your terminal.


To try something more ambitious, you can run an Ubuntu container with:

 $ docker run -it ubuntu bash


Share images, automate workflows, and more with a free Docker ID:

 https://cloud.docker.com/


For more examples and ideas, visit:

 https://docs.docker.com/engine/userguide/



끝~

반응형

 

리눅스 환경에서 "원격 데스크탑"으로 가장 유명한 SW로 꼽히는 것이 바로 VNC이다. 최근에는 xrdp를 많이 사용하긴 하지만, 그래도 전통을 갖고 있는 VNC...

 

하지만 보통 우리가 알고 있는 VNC SW는 오픈소스 프로젝트가 아닌 것 같다.

RealVNC 라는 업체에서 제공하는 Free 버전의 경우 "For individual private use." 용도로 되어있다.

 

 

뭐 일단 내 PC와 Server가지고 나만 사용하는 것이니까... 라이선스에는 부합하는 것 같은데...

 

 

 

VNC에 대해서 검색을 하다보면 그 대중성과 유명세에 비해서 정보들이 많지 않다.

다들 잘 아는데, 나만 모르는 건가? 나만 검색을 잘 못하는 건가?

 

 

 

일단 VNC를 사용할 때에 좀 귀찮은 부분이 "Desktop Environments"을 맞추는 것이다.

검색 결과의 대부분이 VNC를 셋팅할 때에 가볍게 사용하기 위한 XFce 같은 것으로 알려주고 있다.

나는 그냥 사용하고 있는 Unity 화면과 비스무리하게 사용하고 싶은데...

 

 

그리고, 대부분의 포스트에서 보면 실행 권한에 대한 언급을 볼 수 없었다.

대체 root 권한으로만 해야하는 것인지, 그냥 일반 계정 권한으로 하면 안되는 것인지...

 

 

또 하나는, 포트인데... VNC에서 사용하는 포트가 몇 번인지 명확히 설명해준 글이 많지 않았다.

때로는 방화벽이나 Proxy 등으로 사용하는 포트가 궁금했는데...

 

 

 

결국은 목마른 넘이 우물을 파듯이...

하나씩 찾아보고, 직접 테스트 해보고 하면서 다음과 같이 정리해보았다.

 

 

 

기본 실행 환경은 Ubuntu Desktop 버전을 기본값으로 그대로 설치하고,

기본 패키지 업그레이드는 기본 상태에서 최신으로 계속 갱신해 놓은 상태이다.

 

아래 내용을 테스트한 환경은 아래와 같다.

- Ubuntu 12.04 LTS 64bit

- Ubuntu 14.04 LTS 64bit

- Ubuntu 16.04 LTS 64bit

 

 

 

1. 필요 패키지 설치

 

    본래는 아래 패키지들도 설치해야하지만, 이미 설치되어 있어서 제외하고 설치해도 된다.

 

        - sudo apt-get install gnome-settings-daemon gnome-terminal metacity nautilus

 

    아래와 같이 필요한 패키지를 설치하자

 

$ sudo apt-get install gnome-panel vnc4server

 

 

 

2. 첫 실행

 

    첫 실행을 해서 기본 Config 등의 구성을 하도록 하면 되는데,

    sudo 없이 계정 권한으로 실행하여도 된다.

 

$ vnc4server

 

    아래와 같이 패스워드 설정을 진행하면 된다.

 

 

    위의 화면을 보면 알겠지만, 계정 권한으로 실행을 하면 해당 계정으로 환경 설정을 한다.

 

 

 

 

3. 기본 창 관리자 변경

 

    기본 생성된 xstartup 파일에는 내가 원하는 대로 환경 설정이 되어 있지 않다.

    가장 먼저 실행된 vnc4server를 종료부터 하고 xstartup 파일을 수정하자.

 

$ vnc4server -kill :1

$ cp ~/.vnc/xstartup ~/.vnc/xstartup.old

$ nano ~/.vnc/xstartup

 

#!/bin/sh

export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &

gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &

 

 

 

4. 다시 실행하기

 

    실행할 때에 해상도를 미리 정해줘야 한다.

 

$ vnc4server -geometry 1024x768

 

 

 

5. VNC Viewer 로 접속하기

 

    다른 PC에서 해당 IP로 접속하면 된다. 물론 뒤에 디스플레이 번호 붙여서...

 

 

    예쁘게 잘 나온다!

 

 

 

 

 

6. 부팅 時 자동으로 실행

 

    이제 잘 되는 것 까지는 확인했으니, 부팅할 때에 알아서 되도록만 하면 되겠다.

 

$ sudo nano /etc/init.d/vncserver

 

    아래 내용을 그대로 사용하면 된다.

    USER 부분이나 해상도 부분은 각자 상황에 맞게...

 

#!/bin/bash
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

 

PATH="$PATH:/usr/bin/"
export USER="u12"

 

DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"

 

OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

 

. /lib/lsb/init-functions

 

case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;

 

stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;

 

restart)
$0 stop
$0 start
;;
esac
exit 0

 

$ sudo chmod +x /etc/init.d/vncserver

$ sudo update-rc.d vncserver defaults

 

    이제는 재부팅을 하여도 잘 된다~!!!

 

 

 

아! 그리고 Display 1번인 경우 디폴트 포트는 5901 을 사용한다!

다른거 없이 이거 하나만 열리면 사용할 수 있다.

 

 

 

앗싸~ 여기까지!

반응형


짜증나는 오류 보고 메시지...



원인을 찾아보기 위해 로그를 뒤져보았다.


$ nano /var/log/syslog


어라?! 진짜로 error 메시지가 보이네....



Nov 15 01:31:05 u12-VBox NetworkManager[839]: <info> DNS: starting dnsmasq...

Nov 15 01:31:05 u12-VBox NetworkManager[839]: <error> [1447518665.535971] [nm-dns-dnsmasq.c:393] update(): dnsmasq not available on the bus, can't update servers.

Nov 15 01:31:05 u12-VBox NetworkManager[839]: <error> [1447518665.536318] [nm-dns-dnsmasq.c:395] update(): dnsmasq owner not found on bus: Could not get owner of name 'uk.org.thekelleys.dnsmasq': no such name

Nov 15 01:31:05 u12-VBox NetworkManager[839]: <warn> DNS: plugin dnsmasq update failed



뭔가 해보자.


$ sudo cp /usr/share/doc/dnsmasq-base/examples/dnsmasq.conf.example /etc/NetworkManager/dnsmasq.d/dnsmasq.conf


샘플 복사하고...


#strict-order


→ strict-order


주석 지워주자!



$ sudo restart network-manager



서비스 재시작!




반응형


툴 같은 것들을 테스트하기 위해서 Ubuntu 여러 버전을 만들어 놓고 있는데

잊을만하면 나오는 기분나쁜 메시지 !!!



대체 Avahi 라는 놈은 뭔데 나를 기분 상하게 하지!?

심지어 이것때문인지 오류 보고까지 하겠다고 한다. 아! 기분나빠!






Avahi가 뭔지 열심히 검색을 해보았더니,

Zeroconf(Zero configuration networking)의 Linux 환경을 위한 구현체라고 한다.


Zeroconf라는 놈은 또 무엇일까 열심히 검색을 해보았더니,

DHCP가 없는 환경에서도 수동 설정 없이 자동으로 네트워킹을 할 수 있는 환경을 만들어주는 것을 말한다고 한다.

(Apple의 Bonjour와 같은 놈!)


뭐 지금 이 놈에 대해서 깊이 공부하는 시간은 아니니...여기까지만 하기로 하고...



결론적으로,

이러한 Avahi의 알려진 버그로 인해서 특정 ISP 환경에서는 위와 같은 에러 메시지(?)를 보인단다.


그래서 저런 메시지가 나오지 않게 하려면 다음과 같이 하면 된다.



$ sudo nano /usr/lib/avahi/avahi-daemon-check-dns.sh


AVAHI_DAEMON_DETECT_LOCAL=1


AVAHI_DAEMON_DETECT_LOCAL=0


하나 더!


$ sudo nano /etc/default/avahi-daemon


AVAHI_DAEMON_DETECT_LOCAL=1


AVAHI_DAEMON_DETECT_LOCAL=0



그럼 이제는 재부팅~


반응형

'OS > Ubuntu' 카테고리의 다른 글

VNC Server 설치하기 (Ubuntu 12.04, 14.04, 16.04)  (5) 2016.06.06
dnsmasq error (Ubuntu 12.04)  (0) 2015.11.15
커널 빌드 하기 (Ubuntu 12.04 64bit)  (0) 2015.10.11
BASH Shell Script  (0) 2015.10.10
Apache2 error(?) - domain name...ServerName  (0) 2015.09.29


예전에 컴파일 시간 비교를 위해서 만만한(?) 커널을 가지고 테스트를 했었다.

그 때 메모해놓은 커널 컴파일 방법을 찾게되어서... 포스팅을 마무리 하고자 한다.



1. 사전 준비

    - 미리 설치해야하는 것들이 좀 있다.

$ sudo apt-get install build-essential kernel-package libncurses5-dev libgtk2.0-dev libglib2.0-dev libglade2-dev libqt3-mt-dev bin86 libssl-dev



2. 커널 다운로드

    - Ubuntu 패키지가 아니라 직접 다운로드 받아서 해보겠다.
    - 커널 소스가 있는 곳은 /usr/src 이다.

$ cd /usr/src

$ sudo wget https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.3-rc4.tar.xz

$ sudo xz -d linux-4.3-rc4.tar.xz

$ sudo tar -xvf linux-4.3-rc4.tar

$ cd ./linux-4.3-rc4

    - 특이하게(?) xz 타입으로 배포하는 커널이다.


3. 옵션 설정

    - 나름 Graphical 화면이 등장한다.

$ sudo make menuconfig

    - Save는 ".config" 파일로 하면 된다.



4. 빌드

   - 그냥 하면 된다.

$ sudo make


상황에 따라 다음과 같은 명령어도 사용할 수 있다.

설치 및 활용은 다음에 기회를 봐서 포스팅하겠다.

$ sudo make clean

$ sudo make bzImage install

$ sudo make modules modules_install




반응형


빌드 환경을 테스트하는데,

Ubuntu 12.04 환경과 Ubuntu 14.04 환경 모두 필요해서 고민하던 중에 문득 떠오른 Docker.


설치까지만 해보고 가지고 놀지를 못하다보니 docker의 개별 image를 어떻게 다루어야 할지,

image와 container를 어떻게 구분을 해야 하는지,

각 container가 어느 정도의 독립성을 갖고 있는지 아무것도 확신이 없다.


하나씩 정복해보도록 하겠다.




1. Image 다운로드 받기


- Ubuntu 이미지를 다운로드 받으려면 다음과 같이 했었다.


$ docker pull ubuntu

latest: Pulling from ubuntu


83e4dde6b9cf: Pull complete 

b670fb0c7ecd: Pull complete 

29460ac93442: Pull complete 

d2a0ecffe6fa: Already exists


$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              latest               d2a0ecffe6fa         2 days ago            188.4 MB

ubuntu              14.04              5ba9dab47459        5 months ago        188.3 MB

ubuntu              14.04.1            5ba9dab47459        5 months ago        188.3 MB

ubuntu              trusty               5ba9dab47459        5 months ago        188.3 MB


- 그런데, 우리가 필요한 12.04 버전이 없다.




2. 특정 버전의 Ubuntu 다운로드 받기


- 우리가 필요한 12.04를 다운로드 받기 위해서는 다음과 같이 하면 된다.


$ docker pull ubuntu:12.04

12.04: Pulling from ubuntu


093e01545ca5: Pull complete 

639d60300768: Pull complete 

50e9f95f98f1: Pull complete 

6d021018145f: Already exists 

ubuntu:12.04: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.


Digest: sha256:ac1fcd76d94daa6ee3e832b540812d42a0095bfdc7c2837e2fc6cee2ec9809d7

Status: Downloaded newer image for ubuntu:12.04



$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              latest               d2a0ecffe6fa          2 days ago           188.4 MB

ubuntu              12.04               6d021018145f        2 days ago           134 MB

ubuntu              14.04               5ba9dab47459       5 months ago        188.3 MB

ubuntu              14.04.1             5ba9dab47459       5 months ago        188.3 MB

ubuntu              trusty               5ba9dab47459        5 months ago        188.3 MB



 

다음 링크 참조하면 도움이 많이 될 것이다.

https://github.com/docker/docker/wiki/Public-docker-images



반응형

여러 버전의 JDK를 사용하고 싶은 경우 때문에 알게된 명령어가 바로 "update-alternatives" 이다.

기본적인 사항을 한 번 살펴보기 위해서 java를 살펴보자.

$ whereis java
java: /usr/bin/java /usr/bin/X11/java /usr/local/java /usr/share/java

여기저기에 위치하고 있는 java 중에서 "/usr/bin/java"에 대해서 조금 더 자세히 살펴보면,

$ ls -al /usr/bin/java
lrwxrwxrwx 1 root root 22  6월  7 22:10 /usr/bin/java -> /etc/alternatives/java

잘 살펴보면, 일반적이지 않은 경로의 링크가 보인다. 바로 "alternatives" 경로가 바로 그것이다.
이러한 설정을 알아보기 위해서 "--config" 옵션을 사용해보면 전체 목록을 보면서 설정도 해볼 수 있다.

$ update-alternatives --config java
대체 항목 java에 대해 (/usr/bin/java 제공) 2개 선택이 있습니다.

  선택       경로                                            우선순위    상태
------------------------------------------------------------
  0            /usr/local/java/jdk1.7.0_60/bin/java   1         자동 모드
* 1            /usr/local/java/jdk1.7.0_60/bin/java   1         수동 모드
  2            /usr/local/java/jdk1.8.0_05/bin/java   2         수동 모드

기본 사항[*]을 사용하려면 엔터, 다른 것을 사용하려면 번호를 입력하십시오:

$

위의 화면을 보면, 설정에 대해서 전반적으로 살펴볼 수 있다.
사실 정보만 보기 위해서는 "--display" 옵션이 맞는 것이지만, 예쁘게 보여주는 것은 "--config" 옵션인 것 같다.



[ 등록하기 ]

특정 패키지를 설치한 후 다음과 같은 명령어로 등록을 할 수 있다.

sudo update-alternatives --install <link> <name> <path> <priority>

각 항목에 대한 설명은 다음과 같다.

옵션 설명
<link>   실행파일 이름으로 /etc/alternatives/<name> 을 가리킨다.
 (예: /usr/bin/pager) 
<name>   해당 링크 그룹의 대표 이름으로, 여러 가지 버전의 패키지들을 대표하는 이름으로 보면 될 것 같다.
 (예: pager)
<path>   alternatives 로 실제 연결할 실행파일 이름으로, 시스템에 설치한 패키지의 실행파일 이름이다.
 (예: /usr/bin/less)
<priority>   automatic 모드에서 어떤 것을 자동으로 선택해서 사용할지 결정할 때 사용되는 우선순위로, 높은 수가 더 높은 우선순위이다.



[ 삭제하기 ]

설정한 내역을 지워버리고 싶을 때에는 다음과 같이 하자.

sudo update-alternatives --remove <name> <path>




[ 설정하기 ]

등록한 내역을 설정하기 위해서는 다음과 같이 하면 된다.

sudo update-alternatives --set <name> <path>



반응형

'OS > Ubuntu' 카테고리의 다른 글

BASH Shell Script  (0) 2015.10.10
Apache2 error(?) - domain name...ServerName  (0) 2015.09.29
리눅스 배포판 인기 순위  (0) 2014.08.17
hostname 확인/변경 하기 (Ubuntu 12.04 / 14.04)  (0) 2014.08.16
fcitx : 한글 입력기 (Ubuntu 14.04)  (2) 2014.08.11

+ Recent posts