Docker命令分类

55 阅读6分钟

Docker镜像命令

Docker镜像下载

可以先进入Docker官方网站进行镜像搜索

搜索到之后就可以进行镜像下载:

1. pull命令

下载镜像的命令。镜像从远程仓库中拉取。通过下载过程可以看到一个镜像一般是由多个层组成,这样的话不同的镜像中有相同的层就不用重复下载。

示例:

#下载最新版本的
docker pull tomcat

#下载指定版本的
docker pull tomcat:8.5.85-jre8-temurin-focal

2. images命令

查看本机已有的镜像

docker images

各个选项说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

3. save命令

将镜像保存到磁盘本地

docker save tomcat:latest -o /data/tomat9.tar

将多个镜像保存到磁盘本地

docker save \
ubuntu:20.04 \
alpine:3.12.1 \
debian:10.6-slim \
centos:7.8.2003 \
-o linux.tar

4. load命令

将压缩包导入成镜像

docker load -i tomcat9.tar

5. search命令

查找镜像

docker search tomcat

6. inspect命令

获取镜像的详细信息

docker inspect tomcat:latest

只看某一个属性

docker inspect -f {{".Size"}} tomcat:latest

7. tag命令

打tag

docker tag tomcat:latest lagou/tomcat:9

8. rmi命令

删除镜像

#或者根据Image的id删除
docker rmi lagou/tomcat:9

常用参数:

-f 强制删除

Docker容器

容器是镜像的运行时实例。正如从虚拟机模板上启动 VM 一样,用户也同样可以从单个镜像上启动一个或多个容器。虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核。下图为使用单个 Docker镜像启动多个容器的示意图。

Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。 容器是镜像的一个运行实例。 可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。 可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间 等)以及运行在其中的应用程序打包而成的盒子。 容器是基于镜像启动起来的,容器中可以运行一个或多个进程。镜像是Docker生命周期中的构建或打包阶段,而容器则是启动或执行阶段。

容器相关命令

1、 新建并启动容器

docker run -it --rm -p 8080:8080 tomcat:latest

常用参数:

  • -d :后台运行容器,并返回容器ID
  • -i:以交互模式运行容器,通常与-t同时使用
  • -P:随机端口映射,容器内部端口随机映射到主机的端口
  • -p:指定端口映射,格式为:主机(宿主)端口:容器端口
  • -t:为容器分片一个伪输入终端,通常与-i同时使用
  • --name="nginx-lb":为容器指定一个名称
  • -h:指定容器的hostname
  • -e:设置环境变量,容器中可以使用该环境变量
  • --net:指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
  • --link=[]: 添加链接到另一个容器;不推荐各位小伙伴使用该参数
  • -v:绑定一个卷
  • --privileged=false: 指定容器是否为特权容器,特权容器拥有所有的capabilities
  • --restart=no:指定容器停止后的重启策略 no:容器退出时不重启 on-failure:容器故障退出(返回值非零)时重启 always:容器退出时总是重启,推荐各位小伙伴们使用
  • --rm=false:指定容器停止后自动删除容器,不能以docker run -d启动的容器

2、容器日志

docker logs:获取容器的日志

docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine
docker logs -f tomcat9

常用参数:

  • -f:跟踪日志输出
  • --tail:仅列出最新N条容器日志

3、停止容器

docker stop tomcat9

根据name或者容器id来停止

4、删除容器

docker rm:删除一个或多个容器。docker rm命令只能删除处于终止或退出状态的容器,并不能删除 还处于运行状态的容器

#按照容器名称删除
docker rm tomcat9

#按照容器ID删除
docker rm 8dd95a95e687

常用参数:

  • -f:通过SIGKILL信号强制删除一个运行中的容器
  • -l:移除容器间的网络连接,而非容器本身
  • -v:删除与容器关联的卷

5、列出容器

# 查看运行中的容器
docker ps tomcat9

#查看所有容器
docker ps -a

常用参数:

  • -a:显示所有的容器
  • -q:只显示容器编号

6、创建容器

docker create :创建一个新的容器但不启动它。用法同 docker run命令

示例:

docker create -it --name tomcat9 -p 8080:8080 9.0.20-jre8-alpine

7、启动、重启、终止容器

docker start :启动一个或多个已经被停止的容器 docker stop :停止一个运行中的容器 docker restart :重启容器

docker start tomcat9
docker stop tomcat9
docker restart tomcat9

==实用技巧==:

#停止所有运行容器
docker stop $(docker ps -qa)

#删除所有的容器
docker rm $(docker ps -aq)
docker rm $(docker stop $(docker ps -q))

#删除所有的镜像
docker rmi $(docker images -q)

8、进入容器

docker exec :在运行的容器中执行命令。早期有attach命令,对于阻塞命令会等待,所以不方便。在Docker 1.3.0后提供了exec 可以在容器内直接执行任意命令.

执行命令

#有bash命令的linux系统:例如centos
docker run -it --name tomcat9.1 -p 8080:8080 tomcat:9.0.20-jre8-slim
docker exec -it tomcat9.1 /bin/bash

#没有bash命令的linux系统:例如alpine系统
docker run -it --name tomcat9.2 -p 8081:8080 tomcat:9.0.20-jre8-alpine
docker exec -it tomcat9.2 sh

9、查看容器

docker inspect:获取容器/镜像的元数据

示例:

docker inspect tomcat9

10、更新容器

docker update :可以动态地更新容器配置。可以更新一个或多个容器配置。多个容器名称或ID之间使用空格分隔。但update命令不是很成熟,有很多配置项不能动态更新。推荐大家还是rm容器后,再重新run一个新的镜像.

更新容器restart策略
docker update --restart always tomcat9

11、杀掉容器

docker kill :杀掉一个运行中的容器

docker kill tomcat9

常用参数:

-s:向容器发送一个信号

Docker实战

Docker安装nginx

docker 官网地址:hub.docker.com/_/nginx

  1. 拉取镜像
docker pull nginx:1.23.3
  1. 可以备份镜像,这样下次就不用在从网络下载
docker save nginx:latest -o nginx.tar
  1. 导入镜像
docker load -i nginx.tar
  1. 运行镜像
docker run -itd --name nginx -p 80:80 nginx:latest
  1. 进入容器
docker exec -it nginx /bin/bash
  1. 查看nginx配置
cd /etc/nginx        

然后可以根据需要修改配置

Docker安装Mysql

  1. 拉取镜像
docker pull mysql:5.7.31
  1. 运行镜像
docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin mysql:5.7.31  
  1. 进入容器验证
docker exec -it mysql /bin/bash
  1. 登录mysql
mysql -uroot -p

回车后,输入密码:admin。登录成功

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情