官方文档:https://docs.docker.com/engine/reference/commandline/docker/
菜鸟教程:https://www.runoob.com/docker/docker-command-manual.html
Docker的操作命令和可用参数非常多,经常不用容易生疏,做个文档记录一下做个备忘,持续补充…
容器操作
create
docker create
创建容器,但是不启动
常用命令
运行容器:docker create -it --name mycontainer busybox:latest bash
run
docker run
用于创建并启动容器
常用命令
指定名称:docker run -d --name=web_server nginx:latest
暴露端口:docker run -d -p 8088:80 nginx:latest
共享目录:docker run -d -v /var/www:/var/www nginx:latest
,若想只读可以加上--read-only
root授权:docker run -t -i --privileged ubuntu bash
打标签:docker run -d -l my-label nginx:latest
详细解析:https://www.cnblogs.com/yfalcon/p/9044246.html
start/stop/restart
启动容器并attach连接容器:docker start -a -i CONTAINER
启动容器并后台运行:docker start CONTAINER
停止容器:docker stop CONTAINER
重启容器:docker restart CONTAINER
kill
docker kill CONTAINER
杀死容器,可以使用--signal
指定发送的退出信号,默认信号是SIGKILL
rm
docker rm CONTAINER
删除停止的容器,使用-f
参数强制删除
常用命令
删除容器以及数据卷:docker rm -v CONTAINER
删除所有退出状态的容器:docker rm $(docker ps -a -q --filter status=exited)
pause/unpause
暂停容器进程:docker pause CONTAINER
恢复容器进程:docker unpause CONTAINER
列出被暂停的容器:docker ps --filter status=paused
exec
docker exec
在容器中执行命令
常用命令
进入容器shell:docker exec -it CONTAINER sh
后台运行命令:docker exec -d CONTAINER sleep 10
直接执行命令并输出:docker exec -i CONTAINER ps -ef
attach
docker attach
可以连接到一个当前运行的容器,默认是会传递退出信号,使用ctrl+c
是会把容器进程终止,从而退出容器。
有文档说使用--sig-proxy=false
来避免退出,但是我测试是无效的(我执行的CMD是ping,其它没测试过),另一种方法我测试是可行的:当使用docker attach
连接到容器后,使用ctrl+p+q
可以跳出,并且容器程序不会断开。效果如下:
cp
docker cp
容器和宿主机之间复制文件,不支持从容器复制到容器
从宿主机复制到容器:docker cp ./test.html CONTAINER:/usr/share/nginx/html/
从容器复制到宿主机:docker cp CONTAINER:/usr/share/nginx/html/index.html ./
wait
docker wait
等待容器执行完成,输出状态码。对于一个进行中的容器,会阻塞直到容器执行退出
export/import
docker export
导出容器的文件系统,相当于是一个文件系统的快照
docker import
导入使用docker export
导出的归档文件,作为一个镜像
export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。快照文件将丢弃所有的历史记录和元数据信息。
常用命令
导出到一个tar文件:docker export --output="latest.tar" CONTAINER
从tar文件导入:docker import my_busybox.tar freeze/busybox:1.0
rename
docker rename OLD_NAME NEW_NAME
修改容器名称,修改镜像名使用tag命令。