Docker常用命令
整理了一些 Docker 常用的基础命令。
搜索镜像
使用 search 命令可以搜索存放在 docker hub 上的镜像。
命令格式如下:
% docker search --help
Usage: docker search [OPTIONS] TERM
Search the Docker Hub for images
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
例如:
% docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10712 [OK]
mariadb MariaDB Server is a high performing open sou… 4029 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 785 [OK]
percona Percona Server is a fork of the MySQL relati… 529 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 87
mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 80
centurylink/mysql Image containing mysql. Optimized to be link… 59 [OK]
bitnami/mysql Bitnami MySQL Docker Image 50 [OK]
下载镜像
使用 docker pull 可以从 docker registry( docker 注册中心)中下载镜像。
命令格式如下:
% docker pull --help
Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Pull an image or a repository from a registry
Options:
-a, --all-tags Download all tagged images in the repository
--disable-content-trust Skip image verification (default true)
--platform string Set platform if server is multi-platform capable
-q, --quiet Suppress verbose output
例如:
% docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a076a628af6f: Already exists
0732ab25fa22: Pull complete
d7f36f6fe38f: Pull complete
f72584a26f32: Pull complete
7125e4df9063: Pull complete
Digest: sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
列出镜像
使用 docker images 可以查看已经下载到本地的镜像。
命令如下:
% docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show image IDs
例如:
docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest c8562eaf9d81 2 months ago 546MB
redis latest 621ceef7494a 2 months ago 104MB
nginx latest f6d0b4767a6c 2 months ago 133MB
删除本地的镜像
使用 docker rmi 命令即可删除本地镜像。
% docker rmi --help
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
Options:
-f, --force Force removal of the image
--no-prune Do not delete untagged parents
例如:
docker rmi nginx
Untagged: nginx:latest
Untagged: nginx@sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
Deleted: sha256:f6d0b4767a6c466c178bf718f99bea0d3742b26679081e52dbf8e0c7c4c42d74
Deleted: sha256:4dfe71c4470c5920135f00af483556b09911b72547113512d36dc29bfc5f7445
Deleted: sha256:3c90a0917c79b758d74b7040f62d17a7680cd14077f734330b1994a2985283b8
Deleted: sha256:a1c538085c6f891424160d8db120ea093d4dda393e94cd4713e3fff3c82299b5
Deleted: sha256:a3ee2510dcf02c980d7aff635909612006fd1662084d6225e52e769b984abeb5
docker images --all
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest c8562eaf9d81 2 months ago 546MB
redis latest 621ceef7494a 2 months ago 104MB
创建并运行容器
使用 docker run 命令可以创建并运行一个容器。
docker run --name nginx-test -p 8088:80 -d nginx
e9e3294f533923438a1bae551b2013d90916488f9e0cc0953282a593d06bf03b
--name:给容器命名
-p:进行端口映射 8088 为映射后的物理机的端口号,80 为 docker 容器的端口
-d:是后台容器
用浏览器访问本地的 8088 端口,可以看到 nginx 的默认页。
查看容器
可以通过 docker ps 查看运行中的容器。
命令如下:
% docker ps --help
Usage: docker ps [OPTIONS]
List containers
Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display container IDs
-s, --size Display total file sizes
例如:
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9e3294f5339 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:8088->80/tcp nginx-test
停止容器
可以使用 docker stop 来停止运行中的容器。
命令如下:
% docker stop --help
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
Stop one or more running containers
Options:
-t, --time int Seconds to wait for stop before killing it (default 10)
命令如下:
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9e3294f5339 nginx "/docker-entrypoint.…" 8 minutes ago Up 35 seconds 0.0.0.0:8088->80/tcp nginx-test
% docker stop e9e3294f5339
e9e3294f5339
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
强制停止docker容器
使用 docker kill 来停止 docker 的容器。
命令如下:
% docker kill --help
Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...]
Kill one or more running containers
Options:
-s, --signal string Signal to send to the container (default "KILL")
例如:
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9e3294f5339 nginx "/docker-entrypoint.…" 11 minutes ago Up 3 seconds 0.0.0.0:8088->80/tcp nginx-test
% docker kill e9e3294f5339
e9e3294f5339
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
启动停止的容器
可以使用 docker start 来启动被 stop 或 kill 的容器。
% docker start --help
Usage: docker start [OPTIONS] CONTAINER [CONTAINER...]
Start one or more stopped containers
Options:
-a, --attach Attach STDOUT/STDERR and forward signals
--detach-keys string Override the key sequence for detaching a container
-i, --interactive Attach container's STDIN
例如:
% docker start e9e3294f5339
e9e3294f5339
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9e3294f5339 nginx "/docker-entrypoint.…" 14 minutes ago Up 5 seconds 0.0.0.0:8088->80/tcp nginx-test
重启容器
可以使用 docker restart 来完成 docker stop 和 docker start 两个命令的工作
命令如下:
% docker restart --help
Usage: docker restart [OPTIONS] CONTAINER [CONTAINER...]
Restart one or more containers
Options:
-t, --time int Seconds to wait for stop before killing the container (default 10)
例如:
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9e3294f5339 nginx "/docker-entrypoint.…" 16 minutes ago Up 2 minutes 0.0.0.0:8088->80/tcp nginx-test
% docker restart e9e3294f5339
e9e3294f5339
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9e3294f5339 nginx "/docker-entrypoint.…" 17 minutes ago Up 3 seconds 0.0.0.0:8088->80/tcp nginx-test
是否进行了重启,可以查看status字段。
进入容器
可以使用 docker exec 进入容器进行管理。
命令如下:
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9e3294f5339 nginx "/docker-entrypoint.…" 38 minutes ago Up 14 minutes 0.0.0.0:8088->80/tcp nginx-test
% docker exec -it e9e3294f5339 /bin/bash
root@e9e3294f5339:/# uname -r
4.19.121-linuxkit
删除容器
可以使用 docker rm 来删除容器。
命令如下:
% docker rm --help
Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...]
Remove one or more containers
Options:
-f, --force Force the removal of a running container (uses SIGKILL)
-l, --link Remove the specified link
-v, --volumes Remove anonymous volumes associated with the container
例如:
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9e3294f5339 nginx "/docker-entrypoint.…" 56 minutes ago Up 33 minutes 0.0.0.0:8088->80/tcp nginx-test
% docker stop e9e3294f5339
e9e3294f5339
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
% docker ps -all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5669d0d7c177 mysql "docker-entrypoint.s…" 7 days ago Exited (0) 5 days ago mysql-new
总结
上面的命令,基本上就把常用的对于镜像和容器的命令进行了整理。希望对你有帮助。