文章目录
search
搜索镜像
docker search nginx
pull
拉取镜像,不添加tag的话,默认使用latest
docker pull nginx
rm
删除容器
docker rm ID/NAMES
#删除所有的container
docker rm $(docker ps -a -q)
rmi
删除镜像
docker rmi ID/NAMES
#删除所有的container
docker rmi $(docker images -q)
run
构建并运行新容器
docker run -itd -p 8888:8888 -v /d/tensorflow/:/tensorflow tensorflow/tensorflow:2.2.0-jupyter /bin/bash
#末尾加/bin/bash相当于,在容器启时执行/bin/bash命令
- -i 保持和docker容器内的交互。运行docker命令结束后,容器依然存活,没有退出。
- -t 分配一个伪TTY
- -d 后台运行并打印容器Id
- –rm 当容器退出时自动将其移除
eg:
- Mysql
docker run --name mysql -v /d/MySQL/conf:/etc/mysql/conf.d -v /d/MySQL/logs:/logs -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456-d mysql
- ES
docker run -itd --name elasticsearch -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms2g -Xmx2g" -e "discovery.type=single-node" elasticsearch:7.14.2
commit
#提交期间暂停容器
docker commit CONTAINER [REPOSITORY[:TAG]]
inspect
#查看镜像/容器信息
docker inspect ID/NAMES
#查看 容器ip 地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' ID/NAMES
docker exec -it ID/NAMES ip addr
#容器运行状态
docker inspect --format '{{.Name}} {{.State.Running}}' ID/NAMES
login
docker login -u 用户名 -p 密码
logout
docker logout
push
#往远程仓库push:需要和远程仓库名一致.可以使用tag命令重新创建镜像
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
#eg: docker tag centos1 1109065487/centos1:1.0
docker push [OPTIONS] NAME[:TAG]
#eg: docker push 1109065487/centos1:1.0
logs
docker logs -tf --tail 10 ID/NAMES
pause/unpause
#暂停容器
docker pause ID/NAMES
#取消暂停容器
docker unpause ID/NAMES
port
#查看docker完整命令
docker ps -a --no-trunc
ps
#查看docker完整命令
docker ps -a --no-trunc
- -a 显示所有容器 (默认运行中)
- -f 过滤
- –format 格式化输出(使用Go模板)
- -n 显示最近创建的n个容器
- -l 显示最近创建的1个容器
- –no-trunc 不截断输出
- -q 只展示容器Id
- -s 容器大小(还有镜像大小)
export/import
导出/导入容器(只能一个)
docker export -o xx [OPTIONS] CONTAINER
#eg: docker export 11 centos2
# 导入容器以生成镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
#eg: docker import 11 centos:import2
save/load
保存/加载镜像(可多个)
# -o 指定输出文件(tar格式存档)代替输出到 STDOUT
docker save -o xx IMAGE [IMAGE...]
# -i 从tar存档文件代替 STDIN 读取
docker load -i xx
- docker save 保存的是镜像(image),docker export 保存的是容器(container);
- docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;
- docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。
export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。容器的快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。
start/stop
#启动容器
docker start ID/NAMES
#停止容器
docker stop ID/NAMES
top
#查看容器中进程信息
docker top ID/NAMES
其它:
#查看镜像的依赖镜像
docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=f9efa309632c)
#停止所有容器
docker ps -a | grep "Exited" | awk '{print $1}' | xargs docker stop
#删除所有容器
docker ps -a | grep "Exited" | awk '{print $1}' | xargs docker rm
正常退出但不关闭容器 Ctrl+P+Q