Docker常用命令
帮助命令
docker verison # 显示docker版本信息docker info # 显示docker系统信息docker 命令 --help # 帮助命令
镜像命令
查看主机上的镜像
#[root@izuf65mhum14tjzqrobqrsz ~]# docker images / docker image listREPOSITORY TAG IMAGE ID CREATED SIZEhello-world latest d1165f221234 2 months ago 13.3kB# 可选项-a, --all # 列出所有镜像-q, --quiet # 只列出镜像id
列表中的镜像体积总和并非是所有镜像实际硬盘消耗。由于 Docker 镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。
你可以通过以下命令来便捷的查看镜像、容器、数据卷所占用的空间。
$ docker system dfTYPE TOTAL ACTIVE SIZE RECLAIMABLEImages 11 1 1.14GB 1.112GB (97%)Containers 2 0 2.228kB 2.228kB (100%)Local Volumes 0 0 0B 0BBuild Cache 578 0 12.6GB 12.6GB
搜索容器
[root@izuf65mhum14tjzqrobqrsz ~]# docker search mysqlNAME DESCRIPTION STARS OFFICIAL AUTOMATEDmysql MySQL is a widely used, open-source relation… 10842 [OK]mariadb MariaDB Server is a high performing open sou… 4091 [OK]mysql/mysql-server Optimized MySQL Server Docker images. Create… 800 [OK]# 可选项,通过搜索过滤--filter=STARS=3000 #START大于3000的
下载镜像
# 下载镜像 docker pull 镜像名 [:tag] docker pull [选项] [Docker Registry 地址[:端口]/]仓库名[:标签][root@izuf65mhum14tjzqrobqrsz ~]# docker pull mysqlUsing default tag: latest # 不写tag默认latestlatest: Pulling from library/mysqlf7ec5a41d630: Pull complete # 分层下载,docker image的核心,联合文件系统9444bb562699: Pull complete6a4207b96940: Pull complete181cefd361ce: Pull complete8a2090759d8a: Pull complete15f235e0d7ee: Pull completed870539cd9db: Pull complete493aaa84617a: Pull completebfc0e534fc78: Pull completefae20d253f9d: Pull complete9350664305b3: Pull completee47da95a5aab: Pull completeDigest: sha256:04ee7141256e83797ea4a84a4d31b1f1bc10111c8d1bc1879d52729ccd19e20aStatus: Downloaded newer image for mysql:latestdocker.io/library/mysql:latest # 真实地址
删除镜像
docker rmi -f 镜像id ... # 删除制定的镜像docker rmi -f $(docker images -aq) # 删除全部的镜像
修改镜像标签
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
# docker tag ubuntu:15.10 runoob/ubuntu:v3
容器命令
说明:我们有了镜像才可以创建容器`docker pull centos
新建容器并启动
docker run [可选参数] image# 参数--name="Name" # 容器名字-d # 后台方式运行-it # 使用交互方式运行,进入容器查看内容 i交互式操作 t终端-p # 指定容器的端口 -p 8080:8080-p ip:主机端口:容器端口-p 主机端口:容器端口 (常用)-p 容器端口[root@izuf65mhum14tjzqrobqrsz ~]# docker run -it centos /bin/bash bash是交互式的shell[root@6b215ff1a432 /]# lsbin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var# 退出exitCtrl + P + Q # 容器不停止退出
当利用docker run来创建容器时,Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
后台运行
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加-d参数来实现。下面举两个例子来说明一下。
如果不使用-d参数运行容器。
容器会把输出的结果 (STDOUT) 打印到宿主机上面。如果使用了$ docker run ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" hello world hello world hello world hello world-d参数运行容器。
此时容器会在后台运行并不会把输出的结果 (STDOUT) 打印到宿主机上面(输出结果可以用 docker logs 查看)。$ docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1; done" 77b2dc01fe0f3f1265df143181e7b9af5e05279a884f4776ee75350ea9d8017a注: 容器是否会长久运行,是和 docker run 指定的命令有关,和 -d 参数无关。
使用-d参数启动后会返回一个唯一的 id,也可以通过docker container ls命令来查看容器信息。
$ docker container ls \ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77b2dc01fe0f ubuntu:16.04 /bin/sh -c 'while tr 2 minutes ago Up 1 minute agitated_wright
要获取容器的输出信息,可以通过 docker container logs 命令。
$ docker container logs [container ID or NAMES]
hello world
hello world
hello world
. . .
列出所有的运行容器
docker ps # 列出当前正在运行的容器
docker ps -a # 列出当前正在运行的容器,带出历史运行过的容器
docker ps -n=? # 显示最近创建的容器
docker ps -q # 只显示容器编号
删除容器
docker rm 容器id # 删除指定容器
docker rm -f $(docker ps -aq) # 删除所有容器,包括正在进行的
docker container prune # 删除所有已经停止的容器
启动和停止容器
docker start 容器id # 启动容器
docker stop 容器id # 停止当前运行容器
docker restart 容器id # 重启容器
docker kill 容器id # 强制停止
常用其他命令
后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos
发现centos停止
docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有就会停止
查看日志
[root@ ~]# docker run -d centos /bin/sh -c "while true; do echo helloWorld; sleep 1; done"
d8df7e2b197acf010c1e76b1f13c82a4b73f8411a510221678476ae58368331e
[root@ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8df7e2b197a centos "/bin/sh -c 'while t…" 6 seconds ago Up 6 seconds condescending_dirac
docker logs -t -f d8df7e2b197a
2021-05-09T15:16:56.213965958Z helloWorld
2021-05-09T15:16:57.217005415Z helloWorld
2021-05-09T15:16:58.220298597Z helloWorld
2021-05-09T15:16:59.223080338Z helloWorld
2021-05-09T15:17:00.225780271Z helloWorld
2021-05-09T15:17:01.228778258Z helloWorld
2021-05-09T15:17:02.232387663Z helloWorld
...
查看容器中的进程信息
# docker top 容器id
查看镜像的元素数据
# docker inspect 容器id
进入正在运行的容器
# 我们通常容器在后台方式运行,需要进入容器,修改一些配置
方式一:进入容器开始一个新的终端,可以在里面操作
# docker exec -it 容器id bashShell
docker exec -it dc48sdjlwq /bin/bash
方式二:进入容器正在执行的终端,不会启动新的进程
# docker attach 容器id
从容器上拷贝到主机上
docker cp 61d070035384:/home/hello.java /home/hqw/Documents/Java/
