docker-使用,关联 docker-compose

简述

  • Docker Engine
    包含一个daemon来管理容器、docker client 命令行工具

  • Docker Compose
    更好用的docker前端,通过 docker-compose.yml 控制多个container

  • Docker Desktop
    用来启动一个Linux 虚拟机运行container。Windows 和 Mac 系统必备,Linux也可以装。

安装

  • arch linux
1
2
3
4
5
6
7
sudo pacman -Syy docker docker-compose
sudo systemctl enable docker.service

# 查看版本
docker version
# deamon的状态
sudo docker info

适用版本:
Ubuntu Jammy 22.04 (LTS)
Ubuntu Impish 21.10
Ubuntu Focal 20.04 (LTS)
Ubuntu Bionic 18.04 (LTS)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Uninstall old versions
sudo apt-get remove docker docker-engine docker.io containerd runc

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

# Add Docker’s official GPG key
sudo mkdir -p /etc/apt/keyrings
# 如果是ubuntu
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 如果是 debian
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# set up the repository
# 如果是Ubuntu
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
# 如果是 Debian
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
# Install Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

配置

如果希望非root用户可以直接使用docker命令,必须将用户加入 docker 用户组,然后重新登录,重启docker.service

1
sudo usermod -aG docker ${whoami}

docker 常用命令

container 相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 列出正在运行的container
docker ps
docker container ls

# 列出已经关闭的container
docker ps --filter "status=exited"

# 检查container的详情
docker container inspect your-container-id
# see last container's details
docker container inspect $(docker container ls --last 1 --format '\{\{.ID\}\}')

# 停止容器
docker stop <容器ID>

# 重启容器
docker restart <容器ID>

# 启动已经停止的容器
docker start <容器ID>

# 删除容器
docker rm <容器ID>
# 删除所有容器
docker container rm -f $(docker container ls -aq)

# 启动shell连接到容器
docker container exec -it <容器ID> /bin/bash
docker container exec -it <容器ID> sh
# 或,for Windows
docker container exec -it <容器ID> cmd

Image 相关命令

  • 创建镜像
1
2
3
4
5
6
# --tag 参数指定 image 的 name
# 最后一个参数,说明build 的 local 目录,点表示当前目录
docker image build --tag web-ping .

# 不使用默认的Dockerfile,使用 -f 参数指定一个Dockerfile
docker image build -t my-image -f ./Dockerfile-v2 .

docker-compose 常用命令

1
2
3
4
5
6
7
docker-compose up
docker-compose down

docker-compose start
docker-compose stop

docker-compose logs