Docker常用命令
·
2 min read
这里将高频使用的docker命令记录说明下,备忘
docker
# 如果是登录自定义源,增加域名的registry地址
docker login [x.xxx.com]
# 查看docker版本,状态,代理等信息
docker ino
# Linux下查询docker服务状态
service docker status
# Linux下启动docker服务
service docker start
# 查看所有容器(包含未启动的)
docker ps -a
# 删除有容器
docker rm -f $(docker ps -aq)
# 创建一个容器,-P表示Docker随机映射一个端口到内部容器开放的端口,-p 8888:80 表示指定端口映射容器80
docker run -p 8888:80 -d --name "hellonginx" nginx:latest
# 进入docker容器bash
docker exec -it containerId bash
# 停止容器
docker stop containerId
# 删除容器
docker rm contaierId
# 查看所有镜像
docker images
# 删除所有镜像
docker rmi -f $(docker images -aq)
# 创建镜像,可以-o指定输出位置,注意可以指定多个tag,比如-t t1 -t t2
docker build -t toolkit:v1 .
# 推送镜像,支持包含仓库地址,比如私有源地址
docker push toolkit:v1
# 查看日志,比如没有正常启动,可以这样去查看
docker logs containerId --timestamps
# 输出镜像文件为tar包,镜像ID,镜像名称/TAG都可
docker save <imageId> -o <filename>.tar
docker-compose
官网:https://docs.docker.com/compose/reference/
# 启动编排服务,(default: docker-compose.yml), 注意-f如果有设置,一定放在前头,不要调换参数顺序
docker-compose -f marvel-docker-compose.yml up -d
# 重新创建容器 --force-recreate
docker-compose up -d --force-recreate [service]
常见问题说明
-p参数
端口映射写完整,比如-p 8888:80
,不要用简写方式
端口格式为宿主端口:容器端口即HOST:CONTAINER
对于docker-compose中各个container的port配置也遵照上述格式
build支持URL
有时build镜像是发到私有仓库,这时build及push时需要加上网址,比如 docker build github.com/creack/docker-firefox
停止删除目标容器
docker ps -q --filter "name=hellonginx" | grep -q . && docker stop hellonginx && docker rm -fv hellonginx
Error: Permission denied
比如docker启动nginx后进行读且时报权限问题,原因是docker挂载的磁盘权限不足,解决办法是
chmod -R 777 volume/
为什么会出现权限不足,因为docker在运行时,对于外部的系统用户是docker而不是root,因此存在权限不足的可能性,具体可以查看对应磁盘目录的权限情况。
容器内访问宿主机服务
直接访问127.0.0.1是不可以的,需要配置网络才可以正常访问
docker-compose
进行如下配置,同时使用host.docker.internal代替本地IP地址进行访问
extra_hosts:
- "host.docker.internal:host-gateway"
.dockerignore/拷贝黑名单
不想拷贝进镜像文件,可以通过.dockerignore配置黑名单来解决
https://docs.docker.com/engine/reference/builder/#dockerignore-file
写在最后
以上命令可能改变或失效,最终以官方CLI为准,点击这里