常用操作
一、基本命令
1.1、显示docker系统信息,包括镜像和容器数
[root@localhost docker]# docker infoClient: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc., v0.9.1-beta3) buildx: Docker Buildx (Docker Inc., v0.8.2-docker) scan: Docker Scan (Docker Inc., v0.17.0)Server:ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?errors pretty printing info[root@localhost docker]# [root@localhost docker]#
1.2、查看docker版本
[root@localhost docker]# docker version
Client: Docker Engine - Community
Version: 20.10.15
API version: 1.41
Go version: go1.17.9
Git commit: fd82621
Built: Thu May 5 13:16:58 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@localhost docker]#
1.3、启动docker
systectl start docker
1.4查看帮助
[root@localhost docker]# docker help
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
二、查看镜像
2.1显示本地所有镜像
[root@localhost ~]# docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest 76152be68449 2 days ago 524MB
#注解
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的id
CREATED 镜像的创建时间
SIZE 镜像大小
# 可选参数
-a, --all #列出所有镜像
-q, --quiet #只显示镜像id
2.2搜素镜像
docker search 搜索镜像
[root@localhost docker]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 12562 [OK]
mariadb MariaDB Server is a high performing open sou… 4830 [OK]
# 可选项
-f 针对条件进行过滤
docker search -f=STARS=3000 mysql #过滤STARS大于3000的mysql镜像
2.3下载镜像
[root@localhost docker]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
2.4删除镜像
docker rmi 删除镜像
[root@localhost docker]# docker rmi -f 镜像id
[root@localhost docker]# docker rmi -f 镜像id 容器id
[root@docker-01 ~]# docker rmi -f $(docker images -aq) #删除所有镜像
三、容器操作
3.1创建并运行容器
docker run [可选参数] image # 命令格式
#常用参数说明
-- name 容器名字
-d 后台运行
-it 使用交互运行 直接进入容器
-p 指定容器端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口
-p 容器端口
-P 随机指定端口
3.2列出运行的容器
docker ps [可选参数]
可选参数:
-a, --all #列出所有容器
-n, --last x #列出最近创建的x个容器
-q #只显示容器id
3.3删除容器
docker rm [可选参数] 容器1 容器2
可选参数:
-f #强制删除
# 删除所有容器
[root@docker-01 ~]# docker ps -aq |xargs docker rm -f
[root@docker-01 ~]# docker rm -f $(docker ps -aq)
3.4退出容器
exit 直接退出容器并停止
Ctrl+P+Q 退出但不停止容器
3.5容器停止后启动
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止容器
docker kill 容器id #强制停止当前容器
3.6容器的其他常用命令
3.6.1后台运行
[root@docker-01 ~]# docker run -d centos:7
# 问题docker ps 发现 容器并没有运行
#常见的坑:docker 容器使用了后台运行 ,就必须要有一个前台进程,docker发现没有要运行的应用就自动停止了。
#容器启动后,发现自己没有提供服务,就会停止,就是没有程序了
3.6.2查看日志
docker logs [可选参数] 容器
可选参数:
-f, --follow #实时监控日志
-t, --timestamps #显示时间戳
-n,--tail number #指定要显示日志的条数
3.6.3查看容器中的进程
docker top
# UUID 用户id
# PID进程id
# PPID是父进程
3.6.4查看容器元数据
docker inspect 容器id
3.6.5进入容器
docker exec [可选项] 容器id bashshell
可选项:
-i :即使没有附加也保持STDIN 打开 (可交互)
-d :分离模式: 在后台运行
-t :分配一个伪终端
docker attach [可选项] 容器id
# attach使用exit退出容器时容器也会关闭 可以使用Ctrl+P+Q退
出容器
两者的区别:
docker exec: 进入容器后分配一个新的终端(常用)
docker attach: 进入容器后不会启用新的终端,可以多人同时连接共享屏幕
3.6.6容器和主机之前拷贝文件
docker cp [可选项] 容器id:文件路径 宿主机目标路径
docker cp [可选项] 宿主机文件路径 目标容器路径
可参数
-L :保持源目标中的链接
#进入容器 touch一个文件
[root@docker-01 ~]# docker attach 3c365d251d2c
[root@3c365d251d2c /]# touch qinziteng.txt
#退出容器 将在容器上创建的文件copy到宿主机
[root@docker-01 ~]# docker cp 3c365d251d2c:/qinziteng.txt .
[root@docker-01 ~]# ls anaconda-ks.cfg qinziteng.txt
#演示宿主机向容器copy文件
[root@docker-01 ~]# touch shenming.txt
[root@docker-01 ~]# docker cp shenming.txt test1:/home/
[root@docker-01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
3c365d251d2c centos:7 "/bin/bash" 22 minutes
ago Up 22 minutes test2
[root@docker-01 ~]# docker cp shenming.txt 3c365d251d2c:/home/
[root@docker-01 ~]# docker attach 3c365d251d2c
[root@3c365d251d2c /]# ls /home/shenming.txt