镜像命令
docker images [options]
查看本地主机的所有镜像
kpsmile@kpsmile-PC:~/Desktop$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 10 months ago 13.3kB
参数描述:
# 解释:
1.REPOSITORY 镜像的仓库源
2.TAG 镜像的标签
3.IMAGE ID 镜像的id
4.CREATED 镜像的创建时间
5.SIZE 镜像的大小
# OPTIONS可选参数
-a/--all 列出所有镜像
-q/--quiet 只显示镜像的id
docker search [options] 镜像名
搜索镜像
参数描述:
#可选参数
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
#搜索收藏数大于3000的镜像
$ docker search mysql --filter=STARS=3000
#搜索前5个镜像
$ docker search mysql --limit 5 redis
docker pull 镜像名[:tag]
下载镜像
参数描述
#没有tag就是获取最新版本
$ docker pull redis
#等价于
$ docker pull redis:latest
docker rmi [options]
删除镜像
参数描述
#1.删除指定的镜像id
$ docker rmi -f 镜像id
#2.删除多个镜像id
$ docker rmi -f 镜像id 镜像id 镜像id
#3.删除全部的镜像id
$ docker rmi -f $(docker images -aq)
#4.删除指定的镜像名
$ docker rmi -f 镜像名
#5.删除指定版本号的镜像名
$ docker rmi -f 镜像名:tag
docker system df
查看镜像/容器/数据卷所占的空间
容器命令
运行容器 docker run
docker run [options] image [command] [args]
options参数
- —name=”continerName” 指定容器名字
- -d 后台运行容器,并返回容器id
- -i 以交互模式运行容器,通常与 -t 同时使用
- -t 为容器重新分配一个伪终端,通常与 -i 同时使用
- -p 指定容器的端口
- -p ip:主机端口:容器端口 配置主机端口映射到容器端口
- -p 主机端口:容器端口
- -p 容器端口
- -P 随机指定端口(大写的P)
docker run —name=”redis02” -p 6381:6379 -d 7614ae9453d1
docker run -it —name=”ubuntu01” ba6acccedd29 /bin/bash
退出容器 Ctrl+P+Q
#exit 停止并退出容器(后台方式运行则仅退出)
#Ctrl+P+Q 不停止容器退出
列出容器 docker ps
#docker ps
# 列出当前正在运行的容器
-a # 列出所有容器的运行记录
-n=? # 显示最近创建的n个容器 (default -1)
-q # 只显示容器的编号
-s # 显示总文件大小
删除容器 docker rm
# 选项:
-f # 移除正在运行的容器(使用SIGKILL)
-l # 移除容器间的网络连接,而非容器本身
-v # 删除与容器关联的卷
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 logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
-f # 跟踪日志输出 (相当于 tail -f XXXX)
--since # 显示某个开始时间的所有日志
-t # 显示时间戳
-n # 仅列出最新N条容器日志(默认为“全部”)
常用:
docker logs -tf 容器id
docker logs --tail number 容器id #num为要显示的日志条数
docker logs -n number 容器id #num为要显示的日志条数
#docker容器后台运行,必须要有一个前台的进程,否则会自动停止
#编写shell脚本循环执行,使得centos容器保持运行状态
$ docker run -d ubuntu /bin/sh -c "while true;do echo hi;sleep 5;done"
f51f3cbb27511b49d85c98fa62691a1a19397d4a272a8cc7d4769d3d6ec41f2a
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d57e2b89c979 ubuntu "/bin/sh -c 'while t…" 10 seconds ago Up 9 seconds busy_ride
kpsmile@kpsmile-PC:~/Desktop$ docker logs -tf --tail 10 d57e2b89c979
2022-08-07T15:43:57.343609834Z hi
2022-08-07T15:44:02.345601162Z hi
2022-08-07T15:44:07.349546909Z hi
2022-08-07T15:44:12.352118827Z hi
2022-08-07T15:44:17.354935652Z hi
2022-08-07T15:44:22.357180030Z hi
2022-08-07T15:44:27.362205405Z hi
2022-08-07T15:44:32.367300518Z hi
2022-08-07T15:44:37.369158150Z hi
2022-08-07T15:44:42.373163230Z hi
2022-08-07T15:44:47.377194459Z hi
2022-08-07T15:44:52.379655128Z hi
查看容器中进程信息
# 命令 docker top 容器id
kpsmile@kpsmile-PC:~/Desktop$ docker top d57e2b89c979
UID PID PPID C STIME TTY TIME CMD
root 3987 3968 0 23:42 ? 00:00:00 /bin/sh -c while true;do echo hi;sleep 5;done
root 4350 3987 0 23:46 ? 00:00:00 sleep 5
查看镜像的元数据
$ docker inspect 容器id
#docker inspect : 获取容器/镜像的元数据。
#语法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
#OPTIONS说明:
-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
进入当前正在运行的容器
# 方式一
# 语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
#OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
# 我们通常容器使用后台方式运行的, 需要进入容器,修改一些配置
# 命令
docker exec -it 容器id /bin/bash
# 测试
$ docker exec -it df358bc06b17 /bin/bash
[root@df358bc06b17 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@df358bc06b17 /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Aug11 pts/0 00:00:00 /bin/bash
root 29 0 0 01:06 pts/1 00:00:00 /bin/bash
root 43 29 0 01:06 pts/1 00:00:00 ps -ef
# 方式二
docker attach 容器id
# docker exec # 进入容器后开启一个新的终端,可以在里面操作
# docker attach # 进入容器正在执行的终端,不会启动新的进程
拷贝容器文件到主机
docker cp 容器id:容器内路径 目的主机路径
#进入容器中
$ docker cp 8b84603c410a:/home/test.java /home
$ ls
alex arod hello.java neos test.java
#拷贝只是一个手动功能,未来我们使用 -v 卷的技术,可以实现自动同步
提交容器为镜像
docker commit -a=”作者” -m=“提交的描述信息” 容器id 要创作的目标镜像名:[标签名]
kpsmile@kpsmile-PC:~$ docker commit -a="wm" -m="Ubuntu with net-tools" 2dc0cfc8ac74 wm/ubuntu:1.0
sha256:40e576052d3f930498b858ba55c76a0386e29932fa306ffef81413005ac65b7c
kpsmile@kpsmile-PC:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wm/ubuntu 1.0 40e576052d3f 4 seconds ago 111MB
redis latest 7614ae9453d1 7 months ago 113MB
registry latest b8604a3fe854 8 months ago 26.2MB
ubuntu latest ba6acccedd29 9 months ago 72.8MB
导出容器 docker export
export 导出容器的内容留作为一个tar归档文件[对应import命令]
docker export 容器ID > 文件名.tar
kpsmile@kpsmile-machine:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96a2f98fd3d4 ubuntu "bash" About a minute ago Up About a minute ubuntu03
b9e620363c0c redis "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6382->6379/tcp, :::6382->6379/tcp redis02
kpsmile@kpsmile-machine:~$ docker export 96a2f98fd3d4 > ubuntu03.tar.gz
kpsmile@kpsmile-machine:~$ ls
Desktop Documents Downloads Music myregistry Pictures Public snap Templates ubuntu03.tar.gz Videos
导入容器 docker import
import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
kpsmile@kpsmile-machine:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.1.29:5000/wm/ubuntu 1.1 c0cad9d8bfb3 22 hours ago 111MB
redis latest 7614ae9453d1 7 months ago 113MB
mysql latest 3218b38490ce 7 months ago 516MB
registry latest b8604a3fe854 8 months ago 26.2MB
ubuntu latest ba6acccedd29 9 months ago 72.8MB
hello-world latest feb5d9fea6a5 10 months ago 13.3kB
centos latest 5d0da3dc9764 10 months ago 231MB
kpsmile@kpsmile-machine:~$ cat ubuntu03.tar.gz | docker import - wm/ubuntu-ifconfig:1.0
sha256:9e8154d445c37eb546037c8094ec8723e9d1c6fb5353b96e57aa88a9401ef64d
kpsmile@kpsmile-machine:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wm/ubuntu-ifconfig 1.0 9e8154d445c3 6 seconds ago 111MB
192.168.1.29:5000/wm/ubuntu 1.1 c0cad9d8bfb3 22 hours ago 111MB
redis latest 7614ae9453d1 7 months ago 113MB
mysql latest 3218b38490ce 7 months ago 516MB
registry latest b8604a3fe854 8 months ago 26.2MB
ubuntu latest ba6acccedd29 9 months ago 72.8MB
hello-world latest feb5d9fea6a5 10 months ago 13.3kB
centos latest 5d0da3dc9764 10 months ago 231MB