1:运行容器
docker run [options] 镜像名称 [command]
- [options]指定容器的相关参数(下面只列举常用)
- --name 为容器指定名称,如: --name=nginx 或 --name nginx
- -d 后台运行
- -p 指定端口映射,宿主机端口:容器端口,如:-p=8080:8080 或 -p 8080:8080
- --restart=always 是否自动重启容器,当重启 docker 时不用手动启动容器,有这个参数后会自动重启
2:容器生命周期
docker restart/start/stop 容器名称/容器id
3:删除容器和镜像
docker rm 容器名称/容器id
# 当容器正在运行时,上面命令删除不掉,可以使用 -f 强制删除容器
docker rm -f 容器名称/容器id
# 指定删除指定前缀的容器
docker rm -f $(docker ps -a | grep "k8s*" | awk '{print $1}')
# 清除未被使用的镜像, -f 或--force 强制执行清理操作而不会询问确认
docker image prune -f
# 删除所有镜像,$(docker images -q)会生成一个包含所有镜像 ID 的列表,并将其传递给 docker rmi 命令
docker rmi $(docker images -q)
4:进入容器
# -i 以交互模式运行容器,-t 为容器分配一个伪输入终端
# 单独使用 -i 执行的命令和结果混淆不容易区分,单独使用 -t 输入命令不会有响应(因为不会交互)
docker exec -it 容器名称/容器id /bin/bash(或/bin/sh)
5:构建镜像
docker build [options] path
- [options]:镜像的可选参数,如:
- docker build -t test:v1 指定要创建的目标镜像名
- docker build -f /usr/local/Dockerfile 指定 Dockerfile 文件路径
- path: 构建镜像的上下文路径, docker build 会将这个路径下所有的文件都打包上传给 Docker 引擎,引擎内将这些内容展开后,就能获取到所有指定上下文中的文件了,比如说 dockerfile 中的 COPY ./package.json /project,其实拷贝的并不是本机目录下的 package.json 文件,而是 docker 引擎中展开的构建上下文中的文件,所以如果拷贝的文件超出了构建上下文的范围,Docker 引擎是找不到那些文件的
6:查看容器启动命令
docker exec 容器名称 ps
7:查询某个镜像是否存在
如果命令返回一个非空的镜像 id,则表示该镜像存在。如果返回空,则表示没有与该名称相符的镜像存在
docker images -q image-name
-q
: 只会返回容器的 id 而不是完整的容器信息- 常用 shell 判断镜像是否存在如下:
#!/bin/bash
result=$(docker images -q sonatype/nexus3:latest)
# 判断命令执行结果是否不为空
if [ -n "$result" ]; then
echo "exist image: $result"
else
echo "not exist image"
fi
8:查询某个容器是否存在
如果命令返回一个非空的容器 id,则表示该容器存在。如果返回空,则表示没有与该名称相符的容器存在
docker ps -a -q -f name=container-name
-a
: 表示查询的是所有容器,不带-a
则表示查询正在运动的容器-q
: 只会返回容器的 id 而不是完整的容器信息-f name=your-container-name
: 用于过滤出与指定名称相符的容器- 常用 shell 判断容器是否存在如下:
#!/bin/bash
result=$(docker ps -a -q -f name=nexus)
# 判断命令执行结果是否不为空
if [ -n "$result" ]; then
echo "exist container: $result"
else
echo "not exist container"
fi
9:宿主机文件拷贝到容器中
docker cp /path/to/host/file.txt <container_id>:/path/in/container/file.txt
/path/to/host/file.txt
是宿主机上的文件路径。<container_id>
是 Docker 容器的 ID 或者名称。/path/in/container/file.txt
是将文件复制到 Docker 容器中的路径