镜像操作

Posted wanglun1101

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了镜像操作相关的知识,希望对你有一定的参考价值。

Docker提供两个版本,docker-ce(Community Edition: 社区版),ee(Enterprise Edition: 企业版),我使用的是社区版。

镜像的全名包括${registry}/${namespace}/${image_name}:${tag}

默认的镜像仓库是docker.io

  • 查看本地镜像docker images

技术图片

  • 查询镜像docker search tomcat, 一般情况下为了搜索比较详细的镜像信息,使用Dockerhub可以看到更多的细节

  • 登陆仓库docker login -u username -p password registrydomain

  • 拉取镜像docker pull alpine:3.6

  • 推送镜像docker push registry.fpi-inc.site/library/alpine:3.6

  • 制作镜像docker build -t registry.fpi-inc.site/library/test:test .,需要有Dockerfile,后面再讲

  • 修改镜像全名docker tag alpine:3.6 registry.fpi-inc.site/fpi/alpine:3.6

  • 保存镜像为物理文件docker save -o alpine-3.6.image alpine:3.6

  • 将物理镜像装载到本地docker load < alpine:3.6

  • 删除镜像docker rmi alpine:3.6

容器操作

镜像启动之后会生成一个容器,这个容器通过--network指定的网络进行网络通信(默认为docker0),一个启动的容器可以看作为很迷你的虚拟机,有一个ip、与主机端口不会冲突,可以挂载主机的文件系统到容器,可以拷贝...

  • 查看已启动的容器docker ps, -a 参数可以显示包括已停止的容器

技术图片

  • 启动一个镜像docker run
docker run -d -p 80:80 --name nginx --restart always --network test --network-alias test-nginx -v /public/:/public/ -e TZ="Asia/Shanghai" nginx:1.5 nginx -g "daemon off;"

-d 指明在后台启动容器,如果不加,则启动后直接进入容器环境
-p 指定端口映射,将容器的端口映射为主机的端口,可以映射端口范围或者多个端口
--name 指定容器名称
--restart always说明容器出错会一直重启
--network指定使用的网络,不说明的话使用默认的网络
--network-alias指定容器的别名(相当于内部DNS解析,其他在相同网络内的容器可以通过别名访问这个容器)
-v 挂载主机的文件系统到容器
-e 设置容器的环境变量
--rm 容器退出自动删除
nginx:1.5 为镜像
nginx -g "daemon off;"是启动容器的命令,替换掉镜像的CMD命令,不写默认为镜像的CMD命令,如果镜像的启动命令是entrypoint,则无法使用

还有其他的参数和用法,可以docker run --help查看帮助文档

    • 停止一个容器docker stop test-nginx

    • 启动一个容器docker start test-nginx

    • 重启一个容器docker restart test-nginx

    • 删除一个容器docker rm test-nginx,如果正在运行,需要加参数-f

    • 文件拷贝docker cp aaa.txt test-nginx:/tmpdocker cp test-nginx:/tmp/aaa.txt .

    • 进入容器环境docker exec -it test-nginx sh,退出执行exit

    • 查看容器日志docker logs test-nginx

以上是关于镜像操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)

代码片段 - Golang 实现集合操作

Docker删除报错:Error response from daemon: conflict: unable to delete 08b152afcfae (must be forced)(代码片段

Apollo Codegen 没有找到生成代码的操作或片段

操作栏标签片段中的片段?