Docker命令
常用交互命令
docker ps
显示运行中的容器docker ps -a
显示所有的容器,包括未运行的docker ps -a --no-trunc
不缩略字段值docker exec -it docker-name
在运行的容器中执行命令docker exec -it docker-name /bin/bash
常用命令(有CMD进程守护时启动)docker rm -f docker-name
通过 SIGKILL 信号强制删除一个运行中的容器docker run -p 80:8181 --name node_test -dit docker-name
启动服务,母机端口80映射到容器服务所在端口8181docker run -p 80:8181 --name node_test -dit docker-name /bin/sh -c "npm run start"
启动服务及启动时运行脚本(无CMD)docker run --name node_test --rm --stop-timeout 100 -v /data/web/www.node.com:/data/web/www.node.com:ro -dit docker-name
100秒后自动停止,以只读的方式共享文件到容器内docker run -p 80:80 -v /data:/data -v /etc:/etc -d nginx:latest
挂载多个目录docker logs -f --since 30m --tail=100 CONTAINER_ID
查看最近30分钟,显示最后100行日志docker cp /data/web/test.com/index.js docker-name:/data/web/test.com/routes/
从宿主机拷贝文件到docker容器docker cp docker-name:/data/web/test.com/routes/index.js /data/web/test.com/
从docker容器拷贝文件到宿主机docker restart docker-name
拷贝完成后重启docker镜像
容器管理命令
docker network ls
显示所有网络模式(bridge-docker默认模式,host-利用宿主机ip和端口)docker network inspect bridge
针对bridge查找有哪些container在其中docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Ports}}"
指定显示模版systemctl enable docker
设置docker服务开机启动docker run --restart=always ...
设置开机启动docker update --restart=always xxx
更新为开机启动
镜像管理命令
docker images
查看镜像列表docker history dockerImage:tag
查看镜像Dockfiledocker build -t nginx_test .
构建镜像docker login --username=username xxxxx.com
登录镜像市场docker tag 镜像id 仓库:标签
重新命名镜像docker push dockerImage:tag
推送镜像docker logout
登出镜像市场docker rmi 镜像ID
删除镜像docker rmi -f runoob/ubuntu:v4
删除镜像docker image prune -a -f
删除无用的镜像(运行中或停止的容器对应的镜像不会删除)- 更多docker命令
RUN CMD ENTRYPOINT命令区别
RUN
指令通常用于安装应用和软件包。Dockerfile 中常常包含多个RUN
指令。CMD
如果想为容器设置默认的启动命令,可使用CMD
指令。用户可在docker run
命令行中替换此默认命令。- CMD [“executable”,“param1”,“param2”](exec形式,这是首选形式)
- CMD [“param1”,“param2”](作为ENTRYPOINT 的默认参数)
- CMD command param1 param2(shell形式)
- dockerfile文件中包含多个CMD时,只有最后一个被加载使用。
ENTRYPOINT
的 Exec 格式用于设置容器启动时要执行的命令及其参数,同时可通过CMD
命令或者命令行参数提供额外的参数。ENTRYPOINT
中的参数始终会被使用,这是与CMD
命令不同的一点。- ENTRYPOINT [“executable”, “param1”, “param2”]
- ENTRYPOINT command param1 param2
- 一个Dockerfile中可以有多条ENTRYPOINT指令,但只有最后一条ENTRYPOINT指令有效。
DOCKER报错定位
docker top docker-name
# 查看镜像中运行的进程docker inspect <container-id> --format='{{.State.ExitCode}}'
journalctl -n 3 -u docker.service -o json-pretty --no-pager
# docker日志输出查看docker run -it docker-name /bin/bash
# 交互式启动容器,进行报错定位(最有效的,一步到位)- 常见的错误码
退出码 | 含义 |
---|---|
0 | 一个归属的前台进程退出(通常是执行完成) |
1 | 由于应用程序错误导致的失败 |
137 | 表示容器接收到 SIGKILL 信号(人工干预或者 oom-killer [OUT-OF-MEMORY]) |
139 | 表示容器接收到 SIGSEGV 信号 |
143 | 表示容器接收到 SIGTERM 信号 |
NODE DOCKER tag
- tag list
- debian的发行版