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
- 拉取镜像
docker pull nginx:1.23.3
- 可以备份镜像,这样下次就不用在从网络下载
docker save nginx:latest -o nginx.tar
- 导入镜像
docker load -i nginx.tar
- 运行镜像
docker run -itd --name nginx -p 80:80 nginx:latest
- 进入容器
docker exec -it nginx /bin/bash
- 查看nginx配置
cd /etc/nginx
然后可以根据需要修改配置
Docker安装Mysql
- 拉取镜像
docker pull mysql:5.7.31
- 运行镜像
docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin mysql:5.7.31
- 进入容器验证
docker exec -it mysql /bin/bash
- 登录mysql
mysql -uroot -p
回车后,输入密码:admin。登录成功
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 2 天,点击查看活动详情