从零开始学Docker(二):启动第一个Docker容器

chatgpt/2023/9/24 3:05:41

宿主机环境:RockyLinux 9

这个章节不小心搞成命令学习了,后面在整理成原理吧

Docker生命周期

拉取并启动Nginx容器

# 查找镜像 例如:nginx
[root@192 ~]# docker search nginx

我们可以看到,第一个时官方认证构建的nginx 

# 拉取下载镜像 docker pull nignx,这个和git很像,git pull xxx
[root@192 ~]# docker pull nginx

如下,这里我们使用的是简单的pull操作,默认下载的是最新版本 latest

 拉取镜像后查看镜像列表 

运行该nginx镜像,创建一个具体的容器,然后在这个容器中,就跑着一个nginx服务了

# 运行镜像的命令,格式:docker run 参数 镜像的名字/ID
# -d:后台运行容器,-p:端口映射,宿主机端口:容器内端口,
# 当我们访问宿主机端口时,也就时访问容器内的端口
[root@192 ~]#  docker run -d -p 80:80 nginx#在我们运行完容器后,会返回一个容器ID
[root@192 ~]# docker run -d -p 80:80 nginx
870be1725361eb35588a55641b9637f6b395741ad642e6afeeeda2edbd23c5c3

 执行命令 docker ps 我们可以查看到当前的容器列表,此时能看到容器80端口已经映射到宿主机上面了 

 在浏览器访问宿主机的80端口,就能看到容器内80端口运行的是什么

 查看宿主机的网络配置,能够看到80端口,这里显示进程名称的并不是nginx,而是docker-proxy,这是docker启动的代理程序,将宿主机的80端口,代理到容器内的80端口

停止容器,docker stop 容器ID,停止容器后再去docker ps查看容器,之前的nginx已经没有了

 进入正在运行的容器内,查看容器的运行系统,执行命令:docker exec -it 容器ID bash

 Docker命令学习

# 默认的docker仓库是dockerhub,有大量优质的镜像,以及用户自己上传的镜像[root@192 ~]# docker search 镜像名:tag,tag就是具体的标签版本# 查看当前docker版本:
[root@192 ~]# docker version#查看当前docker镜像文件:
[root@192 ~]# docker images 或 docker image ls# 查看当前docker运行中的容器:
[root@192 ~]# docker ps# 下载docker镜像:
docker pull 镜像名, # 默认的是 latest,
# 还可以指定版本
[root@192 ~]# docker pull 镜像名:版本号# 查看docker服务信息
[root@192 ~]# docker info# 查看docker的数据目录
[root@192 etc]# docker info | grep RootDocker Root Dir: /var/lib/docker[root@192 ~]# ls /var/lib/docker
buildkit  containers  engine-id  image  network  overlay2  plugins  runtimes  swarm  tmp  volumes# 存放docker镜像文件的目录
[root@192 sha256]# ll /var/lib/docker/image/overlay2/imagedb/content/sha256
total 8
-rw------- 1 root root 8149 Jul 29 08:50 89da1fb6dcb964dd35c3f41b7b93ffc35eaf20bc61f2e1335fea710a18424287
[root@192 sha256]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    89da1fb6dcb9   24 hours ago   187MB# 当我们查看镜像文件时,可以看到是JSON数据类型的文件,其作用是记录 镜像和容器的配置关系
[root@192 sha256]# cat 89da1fb6dcb964dd35c3f41b7b93ffc35eaf20bc61f2e1335fea710a18424287 #-it:开启一个交互式的终端, --rm 容器退出时删除该容器
[root@192 sha256]# docker run -it --rm --name nginx01 nginx bash# 查看镜像列表
[root@192 sha256]# docker images# 查看某个镜像信息
[root@192 sha256]# docker images nginx# 查看某个镜像信息,具体到某个tag
[root@192 sha256]# docker images nginx:tag名# 格式化显示镜像列表,--format后跟docker的模板语言
[root@192 sha256]# docker images --format "{{.ID}}--{{.Repository}}"# 以表格形式显示镜像信息
[root@192 sha256]# docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"# 下载镜像
[root@192 sha256]# docker run hello-world# 查看当前镜像信息
[root@192 sha256]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    89da1fb6dcb9   24 hours ago   187MB
hello-world   latest    9c7a54a9a43c   2 months ago   13.3kB# 删除镜像:名称、ID
[root@192 sha256]# docker rmi hello-world
[root@192 sha256]# docker rmi 9c7a54a9a43c# 导出镜像,并重定向至/opt目录
[root@192 sha256]# docker image save nginx > /opt/nginx001.taz
[root@192 sha256]# ls /opt/
containerd  nginx001.taz# 导入镜像
[root@192 opt]# docker images 
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@192 opt]# docker image load -i /opt/nginx001.taz 
c6e34807c2d5: Loading layer [==================================================>]  77.81MB/77.81MB
24ee1d7d6a62: Loading layer [==================================================>]  113.2MB/113.2MB
4deafab383fa: Loading layer [==================================================>]  3.584kB/3.584kB
8aedfcd777c7: Loading layer [==================================================>]  4.608kB/4.608kB
c88d3a8ff009: Loading layer [==================================================>]   2.56kB/2.56kB
abc3beec4b30: Loading layer [==================================================>]   5.12kB/5.12kB
922d16116201: Loading layer [==================================================>]  7.168kB/7.168kB
Loaded image: nginx:latest
[root@192 opt]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    89da1fb6dcb9   25 hours ago   187MB# 查看docker镜像详细信息 
[root@192 opt]# docker image inspect 镜像ID

Docker容器管理

# docker run 镜像名,如果镜像不存在本地,则会在线区下载镜像
# 容器内的进程必须处于前台运行状态,否则容器就会直接退出# 运行容器,切进入容器内
[root@192 ~]# docker run -it nginx bash# 查看docker容器的运行日志
[root@192 ~]# docker logs 容器ID
# -f 实时打印日期
[root@192 ~]# docker logs -f 容器ID
# 使用管道符,查看最新的5条日志
[root@192 ~]# docker logs  容器ID| tail  -5# 进入到正在运行的容器内
[root@192 ~]# docker exec -it 容器ID bash# 查看容器的详细信息
[root@192 ~]# docker container inspect 容器ID# 后台运行docker容器,容器名称为nginx001,且端口映射宿主机的85端口,访问到容器内的80端口
[root@192 ~]# docker run -d -p 85:80 --name nginx001 nginx 
6627aa9383d993ed1be7031841daf7cecaefadea8cf1ea678fd3b8121aed2c15
[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
6627aa9383d9   nginx     "/docker-entrypoint.…"   8 seconds ago   Up 8 seconds   0.0.0.0:85->80/tcp, :::85->80/tcp   nginx001
[root@192 ~]# docker port 6627aa9383d9
80/tcp -> 0.0.0.0:85
80/tcp -> [::]:85# docker 容器提交
[root@192 ~]# docker commit 6627aa9383d9 nginx_hunter
sha256:53807fe50cade428944877195e5db131a0868052770f0b393d424f14fbe3ba03
[root@192 ~]# docker images 
REPOSITORY     TAG       IMAGE ID       CREATED         SIZE
nginx_hunter   latest    53807fe50cad   5 seconds ago   187MB
nginx          latest    89da1fb6dcb9   25 hours ago    187MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5313232.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试员怎么提升自己的职业竞争力?

目录 管理方向 技术方向 初级测试人员 中级测试人员 高级测试人员 首先分析下软件测试岗位的发展方向:软件测试岗位可以向两个方向发展,一个管理方向,一个技术方向。现在很多做测试的人感到很迷茫,自己整天做着重复的事情&am…

linux 故障定位

linux 故障定位 1. cpu1.1 说明1.2 分析工具1.3 使用方式 2. 内存2.1 说明2.2 分析工具2.3 使用方式 3. I/O3.1 说明3.2 分析工具3.3 使用方式 4. 网络4.1 说明4.2 分析工具4.3 使用方式 5. 系统负载5.1 说明5.2 分析工具5.3 使用方式 6. 火焰图6.1 说明6.2 安装依赖库6.3 安装…

【JS】JavaScript中的this关键字

目录 this是什么? this的指向 ①全局环境 ②构造函数 ③对象的方法 this的四类调用方式 ①作为对象方法调用 ②纯粹的函数调用 ③作为构造函数调用 ④使用apply、call、bind调用 举例说明 this是什么? JavaScript this 关键词指的是它所属的对…

redis基础总结(数据类型)

Redis十大数据类型 String String 是redis最基本数据类型,一个key对应一个value. String类型是二进制安全的,意思是Redis的string类型可以包含任何数据,比如jpg图片或者序列化的对象; String类型是最基本的数据类型,一个redis中字符串value最多是512M; String类型在redis底层…

RISC-V公测平台发布 · 第一个WEB Server “Hello RISC-V world!”

RISC-V公测平台Web Server地址:http://175.8.161.253:8081 一、前言 Web Server是互联网应用的基础设施,无论是用户访问网站,还是后端服务提供商和开发者构建各种应用程序,Web Server都在其中扮演着至关重要的角色。 显而易见…

Linux6.22 ansible playbook role——LNMP

文章目录 计算机系统5G云计算第一章 LINUX ansible playbook 延申一、用ansible playbook完成yum式安装集中式LNMP二、用 ansible playbook的role 角色完成 LNMP 的部署1.nginx2.mysql3.php计算机系统 5G云计算 第一章 LINUX ansible playbook 延申 一、用ansible playbook完…

服务器 Docker Alist挂载到本地磁盘(Mac版)夸克网盘

1.服务器下载alist 默认有docker环境 docker pull xhofe/alist2.生成容器 -v /home/alist:/opt/alist/data 这段意思是alist中的数据映射到docker 主机的文件夹,/home/alist就是我主机的文件夹,这个文件夹必须先创建 docker run -d --restartalways…

playwright自动化项目搭建

具备功能 关键技术: pylaywright测试库pytest单元测试框架pytest-playwright插件 非关键技术: pytest-html插件pytest-rerunfailures插件seldom 测试框架 实现功能: 元素定位与操作分离失败自动截图并保存到HTML报告失败重跑可配置不同…
推荐文章