Kompletny przewodnik po tworzeniu i zarządzaniu obrazami Docker na Ubuntu | Instalacja, optymalizacja i rozwiązywanie problemów

目次

1. Wprowadzenie

Czym jest Docker?

Docker jest platformą wykorzystującą technologię wirtualizacji opartą na kontenerach, umożliwiającą efektywne tworzenie, dystrybucję i uruchamianie aplikacji. W przeciwieństwie do tradycyjnych maszyn wirtualnych (VM), kontenery współdzielą jądro systemu operacyjnego hosta, co pozwala na szybszy start i mniejsze zużycie zasobów.

Korzyści z używania Dockera na Ubuntu

Ubuntu jest jedną z dystrybucji Linuksa, które doskonale współpracują z Dockerem. Kluczowe korzyści to:

  • Oficjalne wsparcie: Docker oficjalnie wspiera Ubuntu, a instalacja jest prosta dzięki oficjalnemu repozytorium.
  • Stabilny system zarządzania pakietami: Menedżer pakietów APT w Ubuntu ułatwia zarządzanie wersjami Dockera.
  • Rozbudowane wsparcie społeczności: Ubuntu ma dużą, globalną bazę użytkowników, co ułatwia znajdowanie rozwiązań przy rozwiązywaniu problemów.

Czego dowiesz się w tym artykule

Ten artykuł poprowadzi Cię krok po kroku przez następujące tematy:

  1. Jak zainstalować Docker na Ubuntu
  2. Podstawowe operacje na obrazach Docker
  3. Tworzenie własnych obrazów przy użyciu Dockerfile
  4. Konfigurowanie środowiska języka japońskiego w kontenerze Ubuntu
  5. Optymalizacja i zmniejszanie rozmiaru obrazów Docker
  6. Tworzenie aplikacji w kontenerze Ubuntu
  7. Typowe błędy i rozwiązania problemów

Ten przewodnik jest przydatny zarówno dla początkujących, jak i zaawansowanych użytkowników, więc śmiało korzystaj z niego jako odniesienia.

2. Instalacja Dockera na Ubuntu

Instalacja Dockera przy użyciu oficjalnego repozytorium

W Ubuntu możesz łatwo zainstalować Docker, korzystając z oficjalnego repozytorium. Postępuj zgodnie z poniższymi krokami, aby je skonfigurować.

1. Usuń istniejące pakiety Docker

Ubuntu domyślnie dostarcza pakiet o nazwie docker.io, ale może to być przestarzała wersja. Zaleca się najpierw go usunąć.

sudo apt remove docker docker-engine docker.io containerd runc

2. Zainstaluj wymagane pakiety

Przed instalacją Dockera zainstaluj niezbędne pakiety zależności.

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

3. Dodaj oficjalne repozytorium Docker

Dodaj oficjalny klucz GPG Dockera i skonfiguruj repozytorium.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Zainstaluj Docker

Po dodaniu repozytorium zainstaluj Docker.

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

5. Zweryfikuj instalację

Aby sprawdzić, czy Docker został poprawnie zainstalowany, wyświetl informacje o wersji.

docker --version

Początkowa konfiguracja po instalacji

1. Uruchom i włącz usługę Docker

Uruchom usługę Docker i skonfiguruj ją, aby uruchamiała się automatycznie przy starcie systemu.

sudo systemctl start docker
sudo systemctl enable docker

2. Zezwól użytkownikom niebędącym root na używanie

Domyślnie tylko użytkownik root może uruchamiać Docker. Aby umożliwić zwykłemu użytkownikowi korzystanie z poleceń Docker, dodaj go do grupy docker.

sudo usermod -aG docker $USER

Aby zastosować zmiany, wyloguj się i zaloguj ponownie.

3. Przetestuj Docker

Uruchom kontener hello-world, aby sprawdzić, czy Docker działa poprawnie.

docker run hello-world

Jeśli zobaczysz komunikat „Hello from Docker!”, instalacja zakończyła się sukcesem.

3. Podstawowe operacje na obrazach Docker

Czym jest obraz Docker?

Obraz Docker służy jako szablon do tworzenia kontenerów. Korzystając z obrazu Docker opartego na Ubuntu, możesz szybko uruchomić środowisko Ubuntu w kontenerze.

Pobieranie obrazów Ubuntu z Docker Hub

Docker Hub udostępnia ogromną kolekcję oficjalnych obrazów Docker. Aby pobrać obraz Ubuntu, użyj następującego polecenia:

docker pull ubuntu

Uruchamianie i zatrzymywanie kontenerów

Możesz uruchomić kontener za pomocą pobranego obrazu Ubuntu za pomocą następującego polecenia:

docker run -it ubuntu bash

To polecenie otwiera powłokę w kontenerze Ubuntu, umożliwiając bezpośrednią interakcję z nim.

Wyświetlanie Uruchomionych Kontenerów

Aby sprawdzić, które kontenery są obecnie uruchomione, użyj tego polecenia:

docker ps

Aby wyświetlić wszystkie kontenery, w tym zatrzymane, dodaj opcję -a:

docker ps -a

Zatrzymywanie i Usuwanie Kontenerów

Aby zatrzymać uruchomiony kontener, użyj następującego polecenia:

docker stop [container ID or name]

Aby usunąć niepotrzebny kontener, użyj tego polecenia:

docker rm [container ID or name]

Zarządzanie Obrazami Docker

Aby wyświetlić wszystkie pobrane obrazy Docker, użyj następującego polecenia:

docker images

Aby usunąć niewykorzystany obraz, użyj tego polecenia:

docker rmi [image ID]

4. Tworzenie Niestandardowych Obrazów Docker za pomocą Dockerfile

Czym jest Dockerfile?

Dockerfile to plik konfiguracyjny używany do tworzenia obrazów Docker. Definiując konkretne instrukcje w Dockerfile, możesz budować niestandardowe obrazy Docker dostosowane do swoich potrzeb. Pomaga to standaryzować środowiska deweloperskie i włączać niezbędne pakiety do obrazu.

Podstawowa Składnia Dockerfile

Dockerfile zazwyczaj zawiera następujące kluczowe polecenia:

CommandDescription
FROMSpecifies the base image
RUNExecutes commands to build the image
COPYCopies files into the container
WORKDIRSets the working directory
CMDDefines the default command to run when the container starts
ENTRYPOINTSpecifies the main command executed when the container runs

Tworzenie Niestandardowego Obrazu Docker opartego na Ubuntu

Postępuj zgodnie z tymi krokami, aby utworzyć niestandardowy obraz Docker oparty na Ubuntu.

1. Utwórz Katalog Roboczy

Najpierw utwórz nowy katalog projektu i przejdź do niego.

mkdir my-ubuntu-image
cd my-ubuntu-image

2. Utwórz Dockerfile

W katalogu utwórz plik Dockerfile i dodaj następującą zawartość:

# Use the official Ubuntu base image
FROM ubuntu:latest

# Maintainer information (optional)
LABEL maintainer="your-email@example.com"

# Update package lists and install basic tools
RUN apt update && apt install -y curl vim git

# Set the working directory
WORKDIR /workspace

# Default command executed when the container starts
CMD ["bash"]

3. Zbuduj Obraz Docker

Użyj następującego polecenia, aby zbudować niestandardowy obraz z Dockerfile.

docker build -t my-ubuntu-image .

Opcja -t przypisuje nazwę obrazowi.

4. Sprawdź Zbudowany Obraz

Sprawdź listę dostępnych obrazów, aby upewnić się, że nowy obraz został pomyślnie utworzony.

docker images

5. Uruchom Kontener z Niestandardowego Obrazu

Uruchom kontener za pomocą nowo utworzonego niestandardowego obrazu.

docker run -it my-ubuntu-image

Ten kontener powinien zawierać narzędzia takie jak curl i vim, jak określono w Dockerfile.

5. Konfigurowanie Środowiska Językowego Japońskiego w Kontenerze Ubuntu

Domyślnie obraz Docker Ubuntu jest ustawiony na angielski. Jeśli potrzebujesz używać japońskiego, wymagane są dodatkowe konfiguracje.

Konfigurowanie Locale Japońskiego

Aby włączyć wyświetlanie i wprowadzanie japońskiego w kontenerze Ubuntu, zainstaluj niezbędne pakiety językowe.

1. Zainstaluj Wymagane Pakiety

apt update
apt install -y language-pack-ja locales

2. Skonfiguruj Locale

Ustaw locale i zastosuj ustawienia.

locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8

3. Zastosuj Ustawienia

export LANG=ja_JP.UTF-8

Konfigurowanie Wprowadzania Japońskiego

Aby włączyć wprowadzanie tekstu japońskiego w terminalu, zainstaluj ibus-mozc.

apt install -y ibus-mozc

Jeśli używasz środowiska GUI, dodaj następujące zmienne środowiskowe:

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

Używanie Aplikacji GUI

Aby uruchomić aplikacje GUI wewnątrz kontenera Docker, możesz użyć serwera X.

Zainstaluj serwer X na maszynie hosta i uruchom kontener z włączonym X11.

docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image

6. Optymalizacja i Redukcja Rozmiaru Obrazów Docker

Optymalizacja obrazów Docker zwiększa szybkość uruchamiania kontenerów i zmniejsza zużycie pamięci dyskowej. Ten rozdział przedstawia metody tworzenia lekkich obrazów.

Tworzenie lekkiego obrazu opartego na Ubuntu

Domyślny obraz ubuntu:latest jest stosunkowo duży. Aby zmniejszyć rozmiar kontenera, rozważ użycie mniejszej alternatywy, takiej jak ubuntu:minimal.

FROM ubuntu:minimal

Alternatywnie możesz użyć Alpine Linux, który jest znacznie mniejszy niż Ubuntu.

FROM alpine:latest
RUN apk add --no-cache bash curl

Ta metoda może zmniejszyć rozmiar obrazu o kilkaset megabajtów.

Usuwanie niepotrzebnych plików w celu zmniejszenia rozmiaru obrazu

Po zainstalowaniu pakietów przy pomocy apt-get możesz usunąć niepotrzebne pliki pamięci podręcznej, aby zminimalizować rozmiar obrazu.

RUN apt update && apt install -y curl vim 
    && apt clean 
    && rm -rf /var/lib/apt/lists/*

Polecenie rm -rf /var/lib/apt/lists/* usuwa listę pakietów, redukując niepotrzebne dane.

Budowanie wieloetapowe (Multi‑Stage Builds)

Dzięki budowaniu wieloetapowemu możesz używać tymczasowego kontenera do kompilacji zależności, jednocześnie utrzymując finalny obraz lekki.

FROM ubuntu as builder
RUN apt update && apt install -y gcc

FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc

Ta technika pozwala wykluczyć niepotrzebne narzędzia deweloperskie z końcowego obrazu, czyniąc go znacznie mniejszym.

7. Praktyczny przewodnik: tworzenie aplikacji w kontenerze Ubuntu

W tej sekcji skonfigurujemy środowisko programistyczne wewnątrz kontenera Ubuntu i pokażemy, jak rozwijać aplikacje przy użyciu Dockera.

Konfiguracja środowiska programistycznego Pythona

Aby utworzyć środowisko programistyczne Pythona w kontenerze Docker, użyj poniższego Dockerfile.

FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]

Zbuduj obraz i uruchom kontener.

docker build -t python-dev .
docker run -it python-dev

Wewnątrz kontenera możesz wywołać polecenie python3, aby uruchamiać skrypty Pythona i rozwijać aplikacje.

Konfiguracja środowiska programistycznego Node.js

Do programowania w Node.js użyj poniższego Dockerfile.

FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]

Zbuduj i uruchom kontener.

docker build -t node-dev .
docker run -it node-dev

Dzięki tej konfiguracji możesz używać polecenia node do wykonywania kodu JavaScript i tworzenia aplikacji w kontrolowanym środowisku.

8. FAQ i rozwiązywanie problemów

Podczas pracy z Dockerem możesz napotkać różne problemy. Ten rozdział zawiera rozwiązania najczęstszych problemów oraz odpowiedzi na najczęściej zadawane pytania.

Różnica między Dockerem a maszynami wirtualnymi

  • Docker: Udostępnia jądro systemu operacyjnego hosta, co czyni go lekkim i umożliwia szybkie uruchamianie kontenerów.
  • Maszyny wirtualne (VM): Każda VM posiada własny system operacyjny, zużywa więcej zasobów i potrzebuje więcej czasu na uruchomienie.

Docker jest bardziej efektywny pod względem wykorzystania zasobów, co czyni go idealnym rozwiązaniem dla środowisk programistycznych i automatycznych wdrożeń.

Trwałe przechowy kontenerze Ubuntu

Aby zachować dane po zatrzymaniu kontenera, użyj montowania wolumenów.

docker run -v my_data:/data ubuntu

Wolumen my_data przechowuje dane trwale, umoiając dostęp do nich nawet po usunięciu kontenera.

Typowe błędy i ich rozwiązania

1. Błąd permission denied

Jeśli pojawia się błąd permission denied podczas wykonywania poleceń Docker, Twój użytkownik może nie należeć do grupy docker.

Dodaj swojego użytkownika do grupy docker za pomocą następującego polecenia:

sudo usermod -aG docker $USER

Po wykonaniu tego polecenia wyloguj się i zaloguj ponownie, aby zmiany zaczęły obowiązywać.

2. Błąd image not found

Jeśli obraz został usunięty z Docker Hub, podaj inny tag, aby pobrać prawidłową wersję.

docker pull ubuntu:22.04

Określając wersję, możesz mieć pewność, że pobierasz działający obraz.