Docker的常用命令

Docker的常用命令

帮助命令

version 显示docker的版本信息。

[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        2291f61
 Built:             Mon Dec 28 16:17:48 2020
 OS/Arch:           linux/amd64
 ...

info 显示docker的系统信息。

[root@localhost ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 2
  Running: 0
  Paused: 0
  Stopped: 2
 Images: 3
 ...

–help 命令使用信息。

[root@localhost ~]# docker info --help

Usage:  docker info [OPTIONS]

Display system-wide information

Options:
  -f, --format string   Format the output using the given Go template

镜像命令

images 查看本地所有镜像

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
redis         latest    621ceef7494a   6 days ago      104MB
node          latest    d6740064592f   7 days ago      936MB
hello-world   latest    bf756fb1ae65   12 months ago   13.3kB

search 搜索镜像

[root@localhost ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10380     [OK]       
mariadb                           MariaDB is a community-developed fork of MyS…   3848      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   758                  [OK]
percona                           Percona Server is a fork of the MySQL relati…   519       [OK]       
centos/mysql-57-centos7           MySQL 5.7 SQL database server                   87                   
mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   79                   
centurylink/mysql                 Image containing mysql. Optimized to be link…   59                   [OK]
bitnami/mysql                     Bitnami MySQL Docker Image                      47                   [OK]
...

pull 下载镜像

# 下载镜像 docker pull 镜像名[:tag
[root@localhost ~]# docker pull mysql
Using default tag: latest # 如果不写tag,默认会下载latest
latest: Pulling from library/mysql
a076a628af6f: Already exists # 分层下载。
f6c208f3f991: Pull complete 
88a9455a9165: Pull complete 
406c9b8427c6: Pull complete 
7c88599c0b25: Pull complete 
25b5c6debdaf: Pull complete 
43a5816f1617: Pull complete 
1a8c919e89bf: Pull complete 
9f3cf4bd1a07: Pull complete 
80539cea118d: Pull complete 
201b3cad54ce: Pull complete 
944ba37e1c06: Pull complete 
Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c # 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址

# 指定版本下载,版本号一定要在hub.docker.com能找到。
[root@localhost ~]# docker pull mysql:5.7

rmi 删除镜像

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         latest    c8562eaf9d81   16 hours ago    546MB
redis         latest    621ceef7494a   6 days ago      104MB
node          latest    d6740064592f   7 days ago      936MB
hello-world   latest    bf756fb1ae65   12 months ago   13.3kB

[root@localhost ~]# docker rmi -f 621ceef7494a
Untagged: redis:latest
Untagged: redis@sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4801fd0882c72bf7cad3a13494
Deleted: sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb

# 删除多个容器
[root@localhost ~]# docker rmi -f c8562eaf9d81 621ceef7494a d6740064592f bf756fb1ae65
# 删除全部容器
[root@localhost ~]# docker rmi -f $(docker images -aq)

容器命令

说明:我们有了镜像才可以创建容器,下载一个CentOS镜像来测试学习。

[root@localhost ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete 
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

run 新建并启动容器

docker run [可选参数] image

# 参数说明
--name="ImageName" 容器名字 node01 node02 ,用来区分容器。
-d                 后台方式运行。
-it                使用交互方式运行,进入容器查看内容。
-p                 指定容器的端口 -p 8080:8080
    -p ip:主机端口:容器端口
    -p 主机端口:容器端口 (常用)
    -p 容器端口
    容器端口
-P                 随机指定端口

# 测试,启动并运行
[root@localhost ~]# docker run -it centos /bin/bash
[root@e280966bfbf4 /]# ls -alh
total 0
drwxr-xr-x   1 root root   6 Jan 19 15:20 .
drwxr-xr-x   1 root root   6 Jan 19 15:20 ..
-rwxr-xr-x   1 root root   0 Jan 19 15:20 .dockerenv
lrwxrwxrwx   1 root root   7 Nov  3 15:22 bin -> usr/bin
drwxr-xr-x   5 root root 360 Jan 19 15:20 dev
drwxr-xr-x   1 root root  66 Jan 19 15:20 etc
drwxr-xr-x   2 root root   6 Nov  3 15:22 home
lrwxrwxrwx   1 root root   7 Nov  3 15:22 lib -> usr/lib
lrwxrwxrwx   1 root root   9 Nov  3 15:22 lib64 -> usr/lib64
drwx------   2 root root   6 Dec  4 17:37 lost+found
drwxr-xr-x   2 root root   6 Nov  3 15:22 media
drwxr-xr-x   2 root root   6 Nov  3 15:22 mnt
drwxr-xr-x   2 root root   6 Nov  3 15:22 opt
dr-xr-xr-x 130 root root   0 Jan 19 15:20 proc
dr-xr-x---   2 root root 162 Dec  4 17:37 root
drwxr-xr-x  11 root root 163 Dec  4 17:37 run
lrwxrwxrwx   1 root root   8 Nov  3 15:22 sbin -> usr/sbin
drwxr-xr-x   2 root root   6 Nov  3 15:22 srv
dr-xr-xr-x  13 root root   0 Jan 19 15:20 sys
drwxrwxrwt   7 root root 145 Dec  4 17:37 tmp
drwxr-xr-x  12 root root 144 Dec  4 17:37 usr
drwxr-xr-x  20 root root 262 Dec  4 17:37 var
[root@e280966bfbf4 /]# exit
exit
[root@localhost ~]# 

ps 查看所有运行中的容器

# docker ps 命令
     # 查看所有运行中的容器。
-a   # 查看所有运行中的容器+历史运行过的容器。
-n=? # 显示最近创建的容器
-q   # 只显示容器的编号

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
46c4eb213ce8   centos    "/bin/bash"   58 seconds ago   Up 57 seconds             vigorous_aryabhata

退出容器

  • exit # 直接容器停止并退出。
  • Ctrl+P+Q # 容器不停止退出。

删除容器

[root@localhost ~]# docker rm 容器id                      # 删除指定的容器,不能删除正在运行中的容器,如果要强制删除 rm -f。
[root@localhost ~]# docker rm -f $(docker ps -aq)        # 删除所有的容器。
[root@localhost ~]# docker ps -aq | xargs docker rm      # 删除所有的容器。

启动和停止容器的操作

[root@localhost ~]# docker start 容器id       # 启动容器
[root@localhost ~]# docker stop 容器id        # 重启容器
[root@localhost ~]# docker restart 容器id     # 停止当前正在运行的容器
[root@localhost ~]# docker kill 容器id        # 强制停止当前容器

常用其他命令

后台启动容器

[root@localhost ~]# docker run -d cento

# 问题docker ps,发现 centos停止了

# 常见的坑: docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止。
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了。

log 查看日志

[root@localhost ~]# docker logs -f -t --tail 容器id
# 显示日志
    -tf             # 显示日志。
    --tail number   # 要显示日志条数。
[root@localhost ~]# docker logs -tf --tail 10 容器id

ps 查看容器中进程信息

[root@localhost ~]# docker top 容器id

inspect 查看镜像的元数据

[root@localhost ~]# docker inspect 容器id

exec 进入容器后开启一个新程序

# 通常容器都是使用后台方式运行的,需要进入容器,修改一些配置。
# 命令
[root@localhost ~]# docker exec -it 容器id bashShell

attach 进入容器正在使用的程序

[root@localhost ~]# docker attach 容器id

cp 拷贝文件

[root@localhost ~]# docker cp 容器id:容器内路径 目的的主机路径

附件