【Docker】Docker常用命令
帮助命令
1.docker version : 显示 Docker 版本信息。
songguojundeMBP:local songguojun$ docker version Client: Docker Engine - Community Version: 19.03.1 API version: 1.40 Go version: go1.12.5 Git commit: 74b1e89 Built: Thu Jul 25 21:18:17 2019 OS/Arch: darwin/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.1 API version: 1.40 (minimum version 1.12) Go version: go1.12.5 Git commit: 74b1e89 Built: Thu Jul 25 21:17:52 2019 OS/Arch: linux/amd64 Experimental: true containerd: Version: v1.2.6 GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb runc: Version: 1.0.0-rc8 GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f docker-init: Version: 0.18.0 GitCommit: fec3683
2.docker info : 显示 Docker 系统信息,包括镜像和容器数等,比docker version 信息更全面。
songguojundeMBP:local songguojun$ docker info Client: Debug Mode: false Server: Containers: 17 #容器的数量 Running: 0 Paused: 0 Stopped: 17 Images: 25 #镜像的数量 Server Version: 19.03.1 Storage Driver: overlay2 #存储的驱动 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
.......
3.docker --help : 查看帮助命令。
镜像操作命令
1.docker images:列出本地所有镜像,这个命令会列出5列,以下是各个列选项说明
1)REPOSITORY:仓库的镜像源。
2)TAG:镜像的标签。同一个仓库源会可能有多个TAG,我们使用REPOSITORY:TAG来定义不同的镜像,一般默认是latest。
3)IMAGE ID :镜像id。
4)CREATED:镜像创建的时间。
5)SIZE:镜像的大小。
常用参数选项:
1)-a:列出本地所有镜像(包含中间映像层,因为镜像是分层的)。
2)-q:只显示镜像ID。
3)--digests:显示镜像的摘要信息。
4)--no-trunc:显示完整的镜像信息。
songguojundeMBP:local songguojun$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7.26 e9c354083de7 7 months ago 373MB mysql 8.0.16 de764ad211de 7 months ago 443MB ghost_nginx latest 013d44036fcd 8 months ago 109MB ghost_ghost-app latest 274b8a6b028c 8 months ago 364MB ghost latest f3b796dbbc45 8 months ago 364MB redis 5.0 598a6f110d01 8 months ago 118MB redis 5.0.5 598a6f110d01 8 months ago 118MB
2.docker search:从hub.docker.com上搜索搜索docker镜像。
命令:docker search 镜像名
NAME:镜像的名字 DESCRIPTION:描述 STARS:镜像个数
OFFICIAL:是否官方镜像 AUTOMATED:自动构建
C:\Users\songgq>docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 8388 [OK]
mariadb MariaDB is a community-developed fork of MyS… 2884 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 624
docker search的搜索和从hub.docker.com网站上的搜索效果一致。
3.拉取或更新镜像
命令:docker pull 镜像名 下载对应的最新版本的镜像 版本号。
docker pull nignx 等驾驭 docker pull nginx:latest
docker pull -a 镜像名 下载对所有版本的镜像
docker pull --disable-content-trust 镜像名[:版本号] 下载镜像,忽略镜像的校验,默认开启的
C:\Users\songgq>docker pull mysql:5.7.26
5.7.26: Pulling from library/mysql
Digest: sha256:c3594c6528b31c6222ba426d836600abd45f554d078ef661d3c882604c70ad0a
Status: Downloaded newer image for mysql:5.7.26
4.docker rmi :删除镜像。
常用参数选项:
1)-f:强制删除镜像,一般删除镜像前要先停止使用该镜像正在运行的容器,使用f参数就可以强制删除。
常用操作:
1)删除多个镜像:
docker rmi 镜像名 镜像名 ...
运行实例
2)删除全部镜像,这是一个组合命令
docker rmi $(docker images -qa)
容器操作相关命令
1. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:运行一个容器。
常用参数选项:
1) -d:以后台守护方法运行容器,并返回一个随机生成的容器ID。
2)-i:以交互的模式运行容器,通常于参数-t同时使用。
3)-t:为容器分配一个可以命令交互的伪终端。
4)-P:随机端口映射。
5)-p:指定端口映射,一般有4种格式,ip:hostPort:containerPort,ip:containerPort,hostPort:containerPort,containerPort。
6)--name="容器名称":为容器指定一个名称。
实例
1)使用centos docker镜像来运行一个容器
songguojundeMBP:local songguojun$ docker images #查看centos镜像的ID(标红的) REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 470671670cac 7 weeks ago 237MB songguojundeMBP:local songguojun$ docker run -it 470671670cac #运行centos容器并进入
容器内提示符和容器ID是一致的。
下图是docker run的工作机制
我本地是没有centos7-ansible这个镜像的,当运行时候发现没有docker自己会去镜像仓库自己去拉一份然后运行。
2. docker start/stop/restart
容器启动
songguojundeMBP:local songguojun$ docker ps -n 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES af8b5dfbe419 470671670cac "/bin/bash" 46 minutes ago Exited (127) 19 minutes ago zealous_wilson 6b2c05149a3c 470671670cac "-it" 46 minutes ago Created musing_ride songguojundeMBP:local songguojun$ docker start af8b5dfbe419 #启动上面已经被关闭的容器 af8b5dfbe419 songguojundeMBP:local songguojun$ docker ps -n 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES af8b5dfbe419 470671670cac "/bin/bash" 46 minutes ago Up 2 seconds zealous_wilson #状态位up 说明已经被启动 6b2c05149a3c 470671670cac "-it" 46 minutes ago Created musing_ride
容器退出两种方式:
1)容器内部输入exit。这是容器停止并退出。
2)ctrl + P + Q,这是容器退出但不停止。
3. docker kill:强制关闭容器。
4. docker ps:列出容器
常用参数选项:-n :列出最近创建的n个容器。
实例
5. docker pause/unpause
6. docker create
7. docker exec:进入容器。
进入容器有两个命令 docker attach
命令或 docker exec
命令,一般使用docker exec
命令。
docker exec
后边可以跟多个参数,这里主要说明 -i
-t
参数。
只用 -i
参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。
当 -i
-t
参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
songguojundeMBP:opt songguojun$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 778a9a0171ab 470671670cac "/bin/bash" About a minute ago Up 4 seconds docker_centos songguojundeMBP:opt songguojun$ docker exec -it 778a9a0171ab /bin/bash [root@778a9a0171ab /]#
8. docker rm :删除已经停止的容器。
1)一次性删除多个容器:docker rm -f $(docker ps -a -q)