Lewati ke konten
Kembali ke Blog

Cara Install Docker di Ubuntu Linux

· · 4 menit baca

Docker adalah platform containerization yang memudahkan deployment aplikasi. Mari pelajari cara install dan menggunakannya.

Prerequisites

System Requirements

# Check Ubuntu version
cat /etc/os-release

- Ubuntu 20.04 LTS atau lebih baru

- 64-bit system

- Kernel 3.10+

Remove Old Versions

# Hapus versi lama jika ada
sudo apt-get remove docker docker-engine docker.io containerd runc

Install Docker Engine

Setup Repository

# Update package index
sudo apt-get update

Install prerequisites

sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release

Add Docker's official GPG key

sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Setup repository

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

Install Docker

# Update package index again
sudo apt-get update

Install Docker Engine

sudo apt-get install docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin

Verify installation

sudo docker run hello-world

Post-Installation Setup

Add User to Docker Group

# Buat docker group
sudo groupadd docker

Add user ke group

sudo usermod -aG docker $USER

Apply changes (logout/login atau run)

newgrp docker

Test tanpa sudo

docker run hello-world

Enable Docker on Boot

# Enable auto-start
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Check status

sudo systemctl status docker

Basic Docker Commands

Image Management

# Pull image dari Docker Hub
docker pull nginx
docker pull node:18-alpine
docker pull mysql:8

List images

docker images

Remove image

docker rmi nginx

Container Operations

# Run container
docker run -d --name webserver nginx

List running containers

docker ps

List all containers

docker ps -a

Stop container

docker stop webserver

Start container

docker start webserver

Remove container

docker rm webserver

Container with Port Mapping

Expose Ports

# Map port 80 container ke port 8080 host
docker run -d -p 8080:80 --name web nginx

Multiple port mapping

docker run -d \ -p 80:80 \ -p 443:443 \ --name webserver nginx

Environment Variables

# Set environment variables
docker run -d \
    -e MYSQL_ROOT_PASSWORD=secret \
    -e MYSQL_DATABASE=myapp \
    --name database mysql:8

Volume Management

Create and Use Volumes

# Create volume
docker volume create mydata

List volumes

docker volume ls

Use volume in container

docker run -d \ -v mydata:/var/lib/mysql \ --name database mysql:8

Mount host directory

docker run -d \ -v /home/user/html:/usr/share/nginx/html \ --name webserver nginx

Docker Compose

Install Docker Compose

# Sudah included dengan docker-compose-plugin
docker compose version

Alternative: standalone installation

sudo curl -L \ " https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \ -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

Docker Compose File

# docker-compose.yml
version: "3.8"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html

db: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: myapp volumes:

  • dbdata:/var/lib/mysql

volumes: dbdata:

Compose Commands

# Start services
docker compose up -d

Stop services

docker compose down

View logs

docker compose logs -f

Rebuild

docker compose up -d --build

Building Docker Images

Dockerfile Example

# Dockerfile
FROM node:18-alpine

WORKDIR /app

COPY package*.json ./ RUN npm install

COPY . .

EXPOSE 3000 CMD ["npm", "start"]

Build Image

# Build image
docker build -t myapp:1.0 .

Build with different Dockerfile

docker build -f Dockerfile.prod -t myapp:prod .

Push to Docker Hub

docker login docker tag myapp:1.0 username/myapp:1.0 docker push username/myapp:1.0

Networking

Docker Networks

# Create network
docker network create mynetwork

List networks

docker network ls

Connect container to network

docker run -d \ --network mynetwork \ --name web nginx

Connect existing container

docker network connect mynetwork container_name

Cleanup Commands

Remove Unused Resources

# Remove stopped containers
docker container prune

Remove unused images

docker image prune

Remove unused volumes

docker volume prune

Remove all unused resources

docker system prune -a

Check disk usage

docker system df

Kesimpulan

Docker memudahkan deployment dengan containerization. Mulai dengan basic commands lalu explore Docker Compose untuk multi-container applications.

Ditulis oleh

Hendra Wijaya

Tinggalkan Komentar

Email tidak akan ditampilkan.