0%

Docker常用命令

这里将高频使用的docker命令记录说明下,备忘

docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看所有容器(包含未启动的)
$ docker ps -a

# 创建一个容器,-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

# 创建镜像,可以-o指定输出位置
$ docker build -t toolkit:v1 .

# 查看日志,比如没有正常启动,可以这样去查看
$ docker logs containerId --timestamps

# 输出镜像文件为tar包,镜像ID,镜像名称/TAG都可
$ docker save <imageId> -o <filename>.tar

docker-compose

官网:https://docs.docker.com/compose/reference/

1
2
3
4
5
# 启动编排服务,(default: docker-compose.yml), 注意-f如果有设置,一定放在前头,不要调换参数顺序
$ docker-compose -f marvel-docker-compose.yml up -d

# 重新创建容器 --force-recreate
$ docker-compose up -d --force-recreate

常见问题说明

-p参数

端口映射写完整,比如-p 8888:80,不要用简写方式

端口格式为宿主端口:容器端口即HOST:CONTAINER

对于docker-compose中各个container的port配置也遵照上述格式

build支持URL

有时build镜像是发到私有仓库,这时build及push时需要加上网址,比如 docker build github.com/creack/docker-firefox

停止删除目标容器

1
docker ps -q --filter "name=hellonginx" | grep -q . && docker stop hellonginx && docker rm -fv hellonginx

Error: Permission denied

比如docker启动nginx后进行读且时报权限问题,原因是docker挂载的磁盘权限不足,解决办法是

1
chmod -R 777 volume/

为什么会出现权限不足,因为docker在运行时,对于外部的系统用户是docker而不是root,因此存在权限不足的可能性,具体可以查看对应磁盘目录的权限情况。

写在最后

以上命令可能改变或失效,最终以官方CLI为准,点击这里