【学习k8s时的无忧无虑的日子1.3

本文详细介绍了Docker的基本操作,包括如何查看和获取镜像,使用Dockerfile构建镜像,启动和管理容器,访问容器内的服务,推送镜像到本地仓库,并配置Docker daemon以允许推送至不安全的仓库。此外,还展示了如何通过curl命令检查服务状态和使用标签管理镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看镜像列表
$ docker images

如何获取镜像
从远程仓库拉取
$ docker pull nginx:alpine
$ docker images

使用tag命令
$ docker tag nginx:alpine 192.168.80.5:5000/nginx:alpine
$ docker images

本地构建
$ docker build . -t my-nginx:ubuntu -f Dockerfile

如何通过镜像启动容器
$ docker run --name my-nginx-alpine -d nginx:alpine

如何知道容器内部运行了什么程序?

#进入容器内部,分配一个tty终端
$ docker exec -ti my-nginx-alpine /bin/sh
#ps aux

##docker怎么知道容器启动后该执行什么命令?
通过docker build来模拟构建一个nginx的镜像,

1)创建Dockerfile

#告诉docker使用哪个基础镜像作为模板,后续命令都以这个镜像为基础
FROM ubuntu

#RUN命令会在上面指定的镜像里执行命令
RUN apt-get update && apt install -y nginx

#告诉docker,启动容器时执行如下命令
CMD ["/usr/sbin/nginx", “-g”,“daemon off;”]

构建本地镜像
$ docker build . -t my-nginx:ubuntu -f Dockerfile

2)使用新镜像启动容器
$ docker run --name my-nginx-ubuntu -d my-nginx:ubuntu

3)进入容器查看进程
$ docker exec -ti my-nginx-ubuntu /bin/sh

ps aux

如何访问容器内服务

#进入容器内部
$ docker exec -ti my-nginx-alpine /bin/sh
#ps aux|grep nginx
#curl localhost:80

宿主机中如何访问容器服务

#删掉旧服务,重新启动
$ docker rm -f my-nginx-alpine
$ docker run --name my-nginx-alpine -d -p 8080:80 nginx:alpine
$ curl 192.168.80.5:8080
docker client如何与daemon通信

/var/run/docker.sock

$ docker run --name portainer -d -p 9001:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portain

导出镜像到文件中
$ docker save -o nginx-alpine.tar nginx:alpine

从文件中加载镜像
$ docker load -i nginx-alpine.tar

##使用docker镜像启动镜像仓库服务
$ docker run -d -p 5000:5000 --restart always --name registry registry:2 #默认仓库不带认证

推送本地镜像到镜像仓库中
$ docker tag nginx:alpine localhost:5000/nginx:alpine
$ docker push localhost:5000/nginx:alpine

查看仓库内元数据

$ curl -X GET http://192.168.80.5:5000/v2/_catalog
$ curl -X GET http://192.168.80.5:5000/v2/nginx/tags/list

##镜像仓库给外部访问,不能通过localhost,尝试使用内网地址192.168.80.5:5000/nginx:alpine
$ docker tag nginx:alpine 192.168.80.5:5000/nginx:alpine
$ docker push 192.168.80.5:5000/nginx:alpine

##docker默认不允许向http的仓库地址推送
##我们没有可信证书机构颁发的证书和域名,自签名证书需要在每个节点中拷贝证书文件,比较麻烦,因此我们通过配置daemon的方式,来跳过证书的验证:
$ cat /etc/docker/daemon.json
{
“registry-mirrors”: [
“https://8xpk5wnt.mirror.aliyuncs.com”
],
“insecure-registries”: [
“192.168.80.5:5000”
]
}
$ systemctl restart docker
$ docker push 192.168.80.5:5000/nginx:alpine
$ docker images

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值