Docker 常用命令

启动

1. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

1
2
3
4
5
6
7
# 常用 OPTIONS 
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d: 后台运行容器,并返回容器ID;

# eg:
docker run -it ubuntu-git /bin/bash

2. docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

1
2
3
4
5
6
7
8
# 常用 OPTIONS 
-d : 分离模式: 在后台运行
-i : 即使没有附加也保持STDIN 打开
-t : 分配一个伪终端

# 首先需要启动一个容器,之后才能执行 exec
docker start 77a1
docker exec -it magical_jepsen /bin/bash

3. runexec区别

docker run :根据镜像创建一个容器并运行一个命令,操作的对象是 镜像

docker exec :必须在运行的容器中执行命令,操作的对象是 容器

删除

1. 删除镜像

删除镜像前需要先删除其所在的容器

1
2
3
4
5
6
7
8
9
10
# 查看所有运行中的容器
docker ps -a
# 删除容器
docker rm 容器id

# 查看所有镜像
docker images
docker image ls
# 删除镜像
docker rmi 镜像id

日志

1. 格式

1
2
3
4
5
6
7
8
$ docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since [STRING] 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail [STRING] 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until [STRING] 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

2. 例子

1
2
3
4
5
6
7
8
# 查看最近30分钟的日志:
$ docker logs --since 30m [CONTAINER_ID]

# 查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2020-08-19" --tail=100 [CONTAINER_ID]

# 查看某时间段日志:
$ docker logs -t --since="2020-08-19T13:23:37" --until "2020-08-19T12:23:37" [CONTAINER_ID]

保存对容器修改

1. 启动一个容器,获取容器id ,如下,容器id为 bf9685577d9c

1
2
docker exec -it my-nginx /bin/bash
[root@bf9685577d9c:/#]

2. 修改完后,退出exit容器,并把容器打包成镜像

1
2
# 后面自己起的容器名,用于辨识
docker commit bf9685577d9c ubuntu-git

3. 启动已保存的镜像

1
2
3
4
5
# 查看镜像
docker images | grep ubuntu-git

# 查看镜像的详细信息:
docker inspect ubuntu-git

配置国内镜像加速

1. 登录阿里云,并在左边栏选择“镜像加速”

2. 在docker desktop 的设置中添加加速站点

1
2
3
{
"registry-mirrors": ["https://0bxi21y8.mirror.aliyuncs.com"]
}

查看端口绑定

1
2
3
4
5
# 找到 container name
$ docker ps

# 产看端口绑定
$ docker port 容器名

拷贝文件到容器

docker cp 用于容器与主机之间的数据拷贝

1
2
3
4
5
# eg
# 将宿主机器中的 /opt/example/test.txt 拷贝到容器ID为xxxxxxxxx的容器里的 /root/example/ 里
$ docker cp /opt/example/test.txt xxxxxxxxxx:/root/example/
# 将容器ID为xxxxxxxx里 /root/example/test.txt 文件拷贝到宿主机器的 /opt/example 里
$ docker cp xxxxxxxxxx:/root/example/test.txt /opt/example

镜像重命名

1
$ docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)

Docker 命令大全

docker-command-manual