基本命令

安装

apt install docker.io
apt install docker-compose

docker pull

docker pull ubuntu:20.04
拉取ubuntu版本为20.04。如果没有写版本会默认下载最新版本ubuntu:latest
docker pull -q ubuntu
-q:静默,不输出下载的镜像信息(不打印日志)
docker pull --platform=arm64 ubuntu:20.04
下载arm平台的ubuntu:20.04,用于将这个镜像放到arm开发板下。

docker images

docker images 用来查看当前已有的镜像
-a, --all: 显示所有镜像(包括中间层镜像)。
--digests: 显示镜像的摘要信息。显示sha256信息
-f, --filter: 过滤输出,基于提供的条件。
--format: 使用 Go 模板格式化输出。
--no-trunc: 显示完整的镜像 ID。
-q, --quiet: 只显示镜像 ID。
docker images unbuntu 查看名称是ubuntu的镜像
docker search ubuntu 查找名为ubuntu的镜像

docker rmi

docker rmi ubuntu 移除ubuntu镜像
docker rmi adb238 移除adb238开头的镜像ID对应的镜像。

docker run

docker run hello-world 启动hello-world容器,并且随机给一个名字。会默认使用latest版本。如果没有会去拉取
docker run hello-world:1.0.0 启动hello-world:1.0.0容器
docker run --name hello-wd hello-world:1.0.0 启动一个名为hello-wd容器

*注意,这个命令会启动一个新的容器,如果--name hello-wd 同一个名称会启动不了

//启动一个名为hello-wd 的容器,并且进入这个容器中。
docker run --name hello-wd -it hello-world /bin/bash

在这个容器中命令行exit 会退出这个容器。

**启动tomcat 配置暴露端口号**

**docker run --name mytomcat -it -p 8081:8080 tomcat:8.5.49**

-P 大P的话会随机分配端口号

退出容器并且保持容器状态:**ctrl+p+q**


后台方式启动

docker run --name mytomcat2 -p 8082:8080 -d tomcat:8.5.49

删除某种镜像的全部容器

docker rm -f ${docker ps ubuntu}

docker exec

  • 进入容器

docker exec -it mytomcat /bin/bash

docker exec -w /root -it mytomcat /bin/bash

  • 进入容器

docker attach 跟exec用法一致。但是这个使用exit会把容器也停掉。如果使用exec 不会停容器

docker ps

docker logs

docker logs -f -n 1000 tomcat 查看tomcat中1000行日志。并且跟踪。

docker rm ; docker rmi

docker删除容器,删除镜像

# 删除所有由 nginx:latest 创建的容器
docker rm $(docker ps -a -q -f "ancestor=nginx:latest")
  • docker ps -a -q-q 参数只输出容器ID,非常简洁。
  • -f "ancestor=nginx:latest"--filter 过滤器,ancestor= 表示筛选出所有由指定镜像创建的容器。

docker start 、stop 、kill 、restart

docker的启停命令。

docker cp

用于将宿主机的文件复制到容器内部、或将容器内部文件复制到宿主机。

docker cp ./test_dir mytomcat:/root 将宿主机当前目录下的文件夹复制到容器内部
docker cp ./test.txt mytomcat:/root 将宿主机当前目录下的文件复制到容器内部
docker cp ./test.txt mytomcat:/root/t.txt 将宿主机当前目录下的文件复制到容器内部并命名为t.txt

docker cp mytomcat:/root/test_dir ./ 将容器内的文件夹复制到宿主机当前目录
docker cp mytomcat:/root/test.txt ./ 将容器内的文件复制到宿主机当前目录
docker cp mytomcat:/root/test.txt ./t.txt 将容器内的文件复制到宿主机当前目录并命名为t.txt

容器之间文件交互(不支持)
docker cp mytomcat1:/root/test.txt mytomcat2:/root

docker commit

注意:容器挂载目录中的文件不会被打包

主要作用是将配置好的一些容器生成新的镜像,可以得到复用(再次使用不需要再配置)。

docker commit -a "wyl" -m "注释信息" mytomcat tomcat8:1.0

-a 指定作者

-m 注释这个镜像信息 可以用docker inspect contain_name 查看信息

mytomcat 将哪个容器打包

tomcat8:1.0 打包出来的镜像名称和tag

docker export、import 不使用

主要用来制作基础镜像

会丢弃历史记录和元数据。启动export与import命令导出导入的镜像必须加/bin/bash或者其他/bin/sh,否则会报错。

将mytomcat容器打包成tomcat-export:v1镜像
docker export -o tomcat-export.tar mytomcat:latest 
docker export mytomcat:latest > tomcat-export.tar

导入镜像并指定镜像的名称和tag (必须指定)
docker import mytom.tar tom8:export
这里会生成一个新的镜像,可以执行多次指定镜像的名称不同即可

docker save、load 只用这个

将指定 镜像 保存成tar文件,不会丢弃历史记录和元数据,并可以回滚版本

结合commit命令。将容器打包成镜像。再将这个镜像打包成tar文件。进行数据迁移。

将tomcat:8.5.49镜像打包成tar包
docker save -o mytom.tar tomcat:8.5.49 或者docker save -o mytom.tar [imageId]

load加载mytom.tar包成镜像
docker load -i mytom.tar

**注意 加载 的镜像与原镜打包前的镜像完全一样。包括了镜像ID。所以必须 删除 之前的镜像才能 加载 

docker tag

重命名,注意不会修改原来的镜像,只会新增一个镜像

docker tag nginx:1.27.0 nginx:latest
docker tag [imageId] nginx:latest

docker system

docker system df 查看镜像、容器、挂载卷的数量、硬盘占用、活动状态等
docker system events 跟踪容器的状态。启停等,会打印到终端
docker system info 显示当前一些系统信息
docker system prune 移除没有在使用的镜像

docker create

创建不启动

除了-d命令不能用,其他命令都与docker run 一致

使用docker start 启动命令