docker version # 显示docker版本信息 docker info # 查看docker信息 docker 命令 --help #万能命令
官方文档:https://docs.docker.com/engine/reference/commandline/docker/
docker images 查看本地所有镜像
[root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest d1165f221234 4 months ago 13.3kB # 解释 REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的ID CREATED 镜像的创建时间 SIZE 镜像的大小 # 可选项 -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 search 搜索镜像
[root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11138 [OK] mariadb MariaDB Server is a high performing open sou… 4221 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 829 [OK] # 可选项 -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 # 举例 [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker search mysql --filter=stars=3000 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11138 [OK] mariadb MariaDB Server is a high performing open sou… 4221 [OK]
docker pull 下载镜像
[root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker pull mysql Using default tag: latest # 如果不写 tag,默认是 latest latest: Pulling from library/mysql b4d181a07f80: Pull complete # 分层下载,docker image的核心 联合文件系统 a462b60610f5: Pull complete 578fafb77ab8: Pull complete 524046006037: Pull complete d0cbe54c8855: Pull complete aa18e05cc46d: Pull complete 32ca814c833f: Pull complete 9ecc8abdb7f5: Pull complete ad042b682e0f: Pull complete 71d327c6bb78: Pull complete 165d1d10a3fa: Pull complete 2f40c47d0626: Pull complete Digest: sha256:52b8406e4c32b8cf0557f1b74517e14c5393aff5cf0384eff62d9e81f4985d4b # 签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest # 真实地址 # 等价 docker pull mysql docker pull docker.io/library/mysql:latest # 指定版本下载 [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker pull mysql:5.7 5.7: Pulling from library/mysql b4d181a07f80: Already exists # 这部分和之前下载的可以共用,节省内存 a462b60610f5: Already exists 578fafb77ab8: Already exists 524046006037: Already exists d0cbe54c8855: Already exists aa18e05cc46d: Already exists 32ca814c833f: Already exists 52645b4af634: Pull complete bca6a5b14385: Pull complete 309f36297c75: Pull complete 7d75cacde0f8: Pull complete Digest: sha256:1a2f9cd257e75cc80e9118b303d1648366bc2049101449bf2c8d82b022ea86b7 Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7 # 可选项 -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 rmi 删除镜像
# 通过id删除hello-world镜像 [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker rmi -f d1165f221234 Untagged: hello-world:latest Untagged: hello-world@sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726 [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 5.7 09361feeb475 3 weeks ago 447MB mysql latest 5c62e459e087 3 weeks ago 556MB # 删除所有镜像 [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker rmi -f $(docker images -aq) Untagged: mysql:5.7 Untagged: mysql@sha256:1a2f9cd257e75cc80e9118b303d1648366bc2049101449bf2c8d82b022ea86b7 Deleted: sha256:09361feeb4753ac9da80ead4d46e2b21247712c13c9ee3f1e5d55630c64c544f Deleted: sha256:e454d1e47d2f346e0b2365c612cb6f12476ac4a3568ad5f62d96aa15bccf3e19 Deleted: sha256:e0457c6e331916c8ac6838ef4b22a6f62b21698facf4e143aa4b3863f08cf7d2 Deleted: sha256:ed73046ee2cd915c08ed37a545e1b89da70dc9bafeacfbd9fddff8f967373941 Deleted: sha256:419d7a76abf4ca51b81821da16a6c8ca6b59d02a0f95598a2605a1ed77c012eb Untagged: mysql:latest Untagged: mysql@sha256:52b8406e4c32b8cf0557f1b74517e14c5393aff5cf0384eff62d9e81f4985d4b Deleted: sha256:5c62e459e087e3bd3d963092b58e50ae2af881076b43c29e38e2b5db253e0287 Deleted: sha256:b92a81bddd621ceee73e48583ed5c4f0d34392a5c60adf37c0d7acc98177e414 Deleted: sha256:265829a9fa8318ae1224f46ab7bc0a10d12ebb90d5f65d71701567f014685a9e Deleted: sha256:2b9144b43d615572cb4a8fb486dfad0f78d1748241e49adab91f6072183644e9 Deleted: sha256:944ffc10a452573e587652116c3217cf571a32c45a031b79fed518524c21fd4f Deleted: sha256:b9108f19e3abf550470778a9d91959ce812731d3268d7224e328b0f7d8a73d26 Deleted: sha256:9aecb80117a5517daf84c1743af298351a08e48fa04b8e99dcb63c817326a748 Deleted: sha256:d8773288899b1230986eba7486009df11d5dd6c628b1d4fd0443e873c6b00f70 Deleted: sha256:45a0a6bb39a4d7b37a6c598ae6af47f8a36ef63eaa9ef92d565137156aa36f54 Deleted: sha256:341f6b75346e72e9fa503aeb5362d1fe4f00449e02d3320e5c68f3052b7c2c13 Deleted: sha256:023f47f19f876ffa0225502a85b30954a44e54dc8223329fec32b336315c75c3 Deleted: sha256:058c443dffe18a5d2aad04cd5451a8540c7272ce9f8515d27e815303b1c25b59 Deleted: sha256:764055ebc9a7a290b64d17cf9ea550f1099c202d83795aa967428ebdf335c9f7 [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker rmi -f $(docker images -aq) # 删除全部镜像 [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker rmi -f 镜像id # 删除一个镜像 [root@iZuf616vx1rni5mn9jvi9oZ rabbitmq]# docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
下载一个centos
镜像
[root@iZuf616vx1rni5mn9jvi9oZ ~]# docker pull centos
新建容器并启动镜像
docker run [可选参数] image # 参数说明 --name="Name" # 容器名字,用来区分容器 -d # 以后台方式运行 -it # 使用交互方式运行,进入容器查看内容 -p # 指定容器端口(小p) -p # ip:主机端口:容器端口 (常用) -p #容器端口 -P # 随机指定端口(大P) # 测试 [root@iZuf616vx1rni5mn9jvi9oZ ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 7 months ago 209MB [root@iZuf616vx1rni5mn9jvi9oZ ~]# docker run -it centos /bin/bash # 查看内部的centos 很多命令不完善 [root@cd195c8870c7 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var # 从容器退回主机 [root@cd195c8870c7 /]# exit exit
列出正在运行的容器
# docker ps 命令 # 列出正在运行的容器 -a # 列出正在运行的容器 + 历史运行过的容器 -n=? # 显示最近创建的容器 -q # 只显示容器的编号 [root@iZuf616vx1rni5mn9jvi9oZ /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@iZuf616vx1rni5mn9jvi9oZ /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cd195c8870c7 centos "/bin/bash" 3 minutes ago Exited (0) About a minute ago nostalgic_nobel 9e9b427792e2 d1165f221234 "/hello" 3 hours ago Exited (0) 3 hours ago romantic_cray [root@iZuf616vx1rni5mn9jvi9oZ /]# docker ps -a -n=1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cd195c8870c7 centos "/bin/bash" 6 minutes ago Exited (0) 4 minutes ago nostalgic_nobel
退出容器
exit # 容器停止并退出 Ctrl + P + Q # 容器不停止但退出
删除容器
docker rm 容器id # 删除指定容器,不能删除正在运行的容器,用 rm -f 可以强制删除 docker rm -f $(docker ps -aq) # 删除所有容器 docker ps -a -q|xargs docker rm # 删除所有容器
启动和停止容器操作
docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止当前正在运行的容器 docker kill 容器id # 强制停止当前容器
后台启动容器
# 命令:docker run -d 镜像名 [root@iZuf616vx1rni5mn9jvi9oZ /]# docker run -d centos # 问题:使用docker ps,发现centos停止 # docker使用后台运行,就必须要有一个前台进程,docker 发现没有应用,就会自动停止
查看日志
# 命令:docker logs -tf --tail number 容器 # -tf 显示全部 # --tail number 查看日志行数 Options: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes) -n, --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
查看容器进程信息
# 命令:docker top 容器id [root@iZuf616vx1rni5mn9jvi9oZ ~]# docker top 8492e483cfbd UID PID PPID C STIME TTY TIME CMD root 224214 224194 0 22:44 pts/0 00:00:00 /bin/bash
查看容器内部信息
# 命令:docker inspect 容器Id [root@iZuf616vx1rni5mn9jvi9oZ ~]# docker inspect 8492e483cfbd [ { "Id": "8492e483cfbd5494bdce220368c643316b1f6066008dbec0da51597421f7b583", "Created": "2021-07-18T14:44:38.186015752Z", "Path": "/bin/bash", "Args": [], ...
进入当前正在运行的容器
# 命令:docker exec -it 容器id bashShell [root@iZuf616vx1rni5mn9jvi9oZ ~]# docker exec -it 8492e483cfbd /bin/bash [root@8492e483cfbd /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@8492e483cfbd /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 14:44 pts/0 00:00:00 /bin/bash root 16 0 0 15:04 pts/1 00:00:00 /bin/bash root 31 16 0 15:04 pts/1 00:00:00 ps -ef [root@8492e483cfbd /]# # 方式二:docker attach 容器id # 进入后正在执行 [root@iZuf616vx1rni5mn9jvi9oZ ~]# docker attach 8492e483cfbd [root@8492e483cfbd /]# docker ps # docker exec 进入容器后开启一个新的终端,可以在里面操作 # docker attach 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机上
# docker cp 容器id:容器内路径 目的主机路径 [root@iZuf616vx1rni5mn9jvi9oZ ~]# docker cp 8492e483cfbd:/home/test.java /home