去sudo执行
sudo groupadd docker // 添加docker任务组 sudo gpasswd -a $USER docker // 将登陆用户加入到docker用户组中 newgrp docker // 更新用户组 docker ps -a // 测试docker命令正常使用
版本信息
docker // 查看docker所有命令 docker version // 查看docker版本 docker info // 查看docker容器信息
镜像操作
docker images // 查看所有下载的镜像 docker images -q // 显示镜像id docker search ubuntu // 镜像搜索。显示所有ubuntu镜像 docker search mysql // 显示mysql的所有镜像 docker pull ubuntu // 将ubuntu基本镜像下载到本地 docker pull redis // 下载最新镜像 docker pull -a redis // 下载仓库所有redis镜像 docker pull image_Name // 选择需要的镜像 docker rmi redis // 单个镜像删除 docker rmi -f redis // 强制删除 docker rmi -f redis tomcat // 删除多个镜像,空格分隔
镜像导入: docker import image_name.tar // 导入镜像 docker import image_name.tar repository_name:tag // 导入并命名 docker load -i image_name.tar // 从文件载入镜像 docker load < image_name.tar // 从标准输入载入镜像 镜像导出: docker export -o image_name.tar image_name:tag docker save -o image_name.tar image_name:tag // 单个镜像导出 docker save -o image_name.tar image1 image2 image3
import 和 load的区别:
import是导入容器镜像快照,load是导入包含元数据和历史信息的镜像,体积更大export 和save的区别:
export是导出一个container,save是导出一个image,体积更大docker导入和导出:
save和load对应,export和import对应
#镜像tag添加/修改 docker tag image_id new_image_name:new_image_tag
docker inspect imageId // 查看镜像配置信息 docker history imageId // 显示镜像的创建过程(Dockerfile的执行过程) # 反向工程存储镜像构建历史 docker history --no-trunc=true imageId > image_dockerfile
容器查看
docker ps -a // 查看有哪些docker容器,正在运行+历史运行 docker ps // 查看正在运行的容器 docker ps -n 3 // 显示最近创建的3个容器 docker inspect containerId // 查看容器的详细信息
容器的停止与删除
docker start containerId // 重新启动容器 docker stop containerId // 停止容器 docker kill containerId // 杀掉一个正在运行的容器 docker rm containerId // 删除一个已停止的容器 docker rm -f containerId // 删除一个正在运行的容器,否则会占内存 -f强制 docker rm -f $(docker ps -a -q) // 删除所有容器
容器创建与退出
docker exec -it containerId /bin/bash // 常用。进入容器,退出容器终端不会导致容器停止 docker run -it ubuntu:18.04 /bin/bash // 用18.04镜像为基础来启动容器 docker run -it --name myubuntu /bin/bash // 指定容器名字 docker create ubuntu:18.04 docker run -itd -p 6800:6800 image_name // 启动容器 -i 交互式操作 -t 终端 -d 后台启动容器,终端关闭仍运行 -p 指定端口号 /bin/bash 放在镜像名后的是命令,表示shell交互 exit // 关闭容器并退出 // 容器创建 docker run -i -t ubuntu /bin/bash // 基于ubuntu镜像创建容器 docker run -i -t --name myContainer ubuntu /bin/bash // 基于ubuntu镜像创建交互型容器 (docker run -i -t --name=container_name image_directory /bin/bash) (docker run -i -t --name=container_name image_directory:tag /bin/bash) docker run --name myContainer -d ubuntu /bin/bash // -d创建后台型容器;通过docker ps查看
docker create 和 docker run的区别
create只是创建,容器处于停止状态;
run不止创建,而且启动了容器
日志log
docker logs containerId // 显示容器日志 docker logs -f -t --tail=20 containerId // 跟踪显示带时间戳的最新20条日志
数据拷贝
# 文件和文件夹拷贝都是cp,不用家加-r,不同于scp docker cp containerId:file_path/file local_path // docker到host docker cp local_path containerId:file_path // host到docker
镜像创建:手动
# -m添加评注,-a作者,image仓库:版本 docker commit -m "your comment" -a "author" containerId image_directory:tag
镜像创建:自动,Dockerfile
# .表示当前目录,代表从本目录的Dockerfile执行;也可以写成绝对路径 docker build -t imageName:Tag .
挂载本地目录
docker run -it --name=myContainer -v /local/path:/container/path image_repotory /bin/bash
参数使用:- -net和- -gpus
使用- -net设置网络模式
- -net=host,容器使用宿主机host的网络空间
- -net=none,容器放到隔离的网络栈中,不进行网络配置。用户可自行配置
- -net=container,和指定容器共享网络环境,除了网络其他均是隔离的
- -net=bridge,默认模式。主机先和虚拟网桥docker0建立连接,然后新建容器和docker0建立虚拟网络对veth pair。主机和容器可通信,网桥连接的容器间也可以通信,容器可以访问外部网络,但其他物理主机访问容器需要通过NAT进行设置。
docker run -it --net=host --name=container_name image_name /bin/bash
docker中使用GPU须使用打开- -gpus,且docker要求在19.0版本以上
# 使用所有的GPU docker run -it --gpus all --name=container_name image_name /bin/bash # 使用2个GPU docker run -it --gpus 2 --name=container_name image_name /bin/bash # 使用指定的GPU docker run -it --gpus '"device=1,2"' --name=container_name image_name /bin/bash
参考文章:
docker常用命令 (推荐)
docker使用
- -net设置网络模式
docker使用GPU
created by shuaixio, 2021.11.18



