docker基本使用

docker基本使用

vate_room 26 2022-08-01

本文章非原创,主要内容基于xaoc的笔记。

参考: https://yeasy.gitbook.io/docker_practice/install/debian https://devhints.io/docker https://www.cnblogs.com/sparkdev/p/7821376.html https://docs.docker.com/engine/install/debian/

[TOC]


1.使用脚本自动安装

curl -fsSL get.docker.com -o get-docker.sh
# 阿里源
sudo sh get-docker.sh --mirror Aliyun

2.启动 Docker

sudo systemctl enable docker
sudo systemctl start docker

3.将当前用户加入 docker 组

root 用户跳过这步

#建立 docker 组
sudo groupadd docker
#将当前用户加入 docker 组
sudo usermod -aG docker $USER

4.测试 Docker 是否安装正确

docker run --rm hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
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.
    (amd64)
 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://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

若能正常输出以上信息,则说明安装成功。

5.常见命令

for example:

# 启动
peace@192:~$ docker run -d -p 9001:80 -it badapple9/speedtest-x
61a8ceb360bd2527148a652bc2279bc5f58ad25d27b36a13520de911aad72fff

peace@192:~$ docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                   NAMES
61a8ceb360bd   badapple9/speedtest-x   "docker-php-entrypoi…"   17 seconds ago   Up 16 seconds   0.0.0.0:9001->80/tcp, :::9001->80/tcp   intelligent_northcutt

# 结束
peace@192:~$ docker stop 61a8
61a8

peace@192:~$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

设置开机启动

docker update --restart=no
docker update --restart=always docker_id

删除docker内容

  • all stopped containers
  • all networks not used by at least one container
  • all images without at least one container associated to them
  • all build cache
 docker system prune -a 

进入容器

attach 命令

如果从这个 stdin 中 exit,会导致容器的停止。 可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。

docker attach  [CONTAINER ID]
docker attach --sig-proxy=false  [CONTAINER ID]

exec 命令

只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。 当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

$ docker exec -it [CONTAINER ID] bash

docker start/stop

docker start [options] CONTAINER
  -a, --attach        # attach stdout/err
  -i, --interactive   # attach stdin

docker stop [options] CONTAINER

Start/stop a container.

docker ps

$ docker ps
$ docker ps -a
$ docker kill $ID

Manage containers using ps/kill.

docker stats

输出的主要内容: [CONTAINER]:以短格式显示容器的 ID。 [CPU %]:CPU 的使用情况。 [MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。 [MEM %]:以百分比的形式显示内存使用情况。 [NET I/O]:网络 I/O 数据。 [BLOCK I/O]:磁盘 I/O 数据。 [PIDS]:PID 号。

#每隔 1 秒钟刷新一次
docker stats

#只返回当前的状态
docker stats --no-stream

#只输出指定的容器
docker stats --no-stream registry 1493

docker stats 命令用来显示容器使用的系统资源。

docker 启动 重启 关闭命令

# 启动        
systemctl start docker

# 守护进程重启   
systemctl daemon-reload

# 重启 docker 服务   
systemctl restart docker
#service docker restart

# 关闭 docker
systemctl stop docker
systemctl stop docker.socket
#service docker stop
#service docker.socket stop

6.卸载 Docker 引擎

  1. 卸载 Docker Engine、CLI、Containerd 和 Docker Compose 软件包:

    $ sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
  2. 主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷:

    $ sudo rm -rf /var/lib/docker
    $ sudo rm -rf /var/lib/containerd
    

您必须手动删除任何已编辑的配置文件。

实测会少卸载几个

peace@192:~$ sudo apt list|grep 'docker'| grep '安装'
docker-ce-rootless-extras/bullseye,now 5:20.10.17~3-0~debian-bullseye amd64 [已安装]
docker-scan-plugin/bullseye,now 0.17.0~debian-bullseye amd64 [已安装]

手动再卸掉就行


参考链接

https://yeasy.gitbook.io/docker_practice/container/attach_exec