Docker基本使用

news/2024/12/22 11:27:01/

查看本地镜像

查看本地:docker imagesPull镜像:docker pull nginx:latest登录镜像:docker login hub.docker.com -u **** -p ****制作镜像:docker build -t xxxx:v1push:docker push xxx:v1删除镜像:docker rmi #imagesName#

容器操作

运行容器
docker run --name   mynginx-test -it(进入shell) --rm(停止后删除) -p 9080:80 (容器80) test/mynginx:v1
docker run -d  name:v1进入docker容器
docker exec -it mynginx-test bash查看容器
docker ps删除容器
docker rm #ContainerName#
docker rm # ContainerId#

——————————————————————————————————————

实际操作

使用镜像步骤

(1)没有容器的情况下,先pull拉取镜像,通过docker images查看是否拉取到。docker pull  testdocker images(2) 使用任意命令启动容器:docker run --name   test -it(进入shell) --rm(停止后删除) -p 9080:80 (容器80) --privileged(ROOT)  containerName查看容器状态docker ps -adocker run -d -t --name hello-world -p 8762:8762 -v /home/app/hello.jar:/home/app/hello.jar java8 java -jar /home/app/hello.jar --spring.profiles.active=dev-d 表示在后台启动-p 8762:8762 表示将容器的端口 映射成宿主主机的端口,否则8762端口访问不到-v /home/app/hello.jar:/home/app/hello.jar 表示将宿主主机的jar文件,映射到容器中(分号前为宿主主机的路径,分号后为容器中的路径)
--name hello-world表示为该容器取一个全局唯一的名称,这里我取的名称为hello-world(3)使用exec命令进入容器,进行操作。docker exec -it (进入shell)  containerName /bin/bash
例如下:
拉取容器:sudo docker pull gggmt/cuda101_yolov5sudo docker run --name test(自己创建的本地容器名) -it --rm -p 9080:80 my_torch(镜像名)查看容器内容:sudo docker image sudo docker ps -a (容器名)sudo docker ps -al (容器)

此时我们可以观察一下当前的容器(docker ps -al)与之前的镜像(docker images),可以看到容器与镜像同时独立存在,并且可以看到在容器中正在运行的项目(交互shell,即/bin/bash)。

进入容器命令行:sudo docker run -i -t gggmt/cuda101_yolov5:v1 /bin/bash(v1要指定版本号,默认下载latest)

拷贝数据

1、从主机往容器中拷贝
eg:将主机/tmp目录拷贝到容器b的/test目录下。

docker cp /tmp b:/test/

2、将容器中文件拷往主机
eg:将容器b的/test目录拷贝到主机的/tmp目录中。

docker cp  b:/test /tmp/

eg:将主机/tmp目录拷贝到容器b中,目录重命名为test02。

docker cp /tmp b:/test02

原文:https://www.runoob.com/docker/docker-cp-command.html

如何提交自己的镜像

假设我们在容器里安装了新的软件包并且跑通了自己的项目,现在打算把容器提交成镜像分享。

(1)首先查看容器的ID

docker ps -al

这里假设id为:c93dbf2aa0f4

(2)将容器提交到镜像中,同时我们给它指定新的名字

(docker commit [ID] [NEW_name]

(3)提交完成后我们再查看本机存在的镜像

 docker images

(4)可以选择两种方式:
第一种:将镜像上传到阿里云镜像仓库中

https://zhuanlan.zhihu.com/p/31772428

第二种:除了上传云镜像库,我们也可以直接将镜像打包成一个独立文件,拷贝分享给别人使用。

(1)docker images 
(2)docker save -o  test(name).tar  test(name)

参考:

https://zhuanlan.zhihu.com/p/31772428

删除镜像和容器

这里注意的是,要删除镜像的话,必须先删除容器。另外,需要先停止容器,再删除。
删除镜像的最佳做法是:先停止容器,再删除容器,最后删除镜像。
 删除容器的最佳做法是:先停止容器,再删除容器。

删除容器

(1)查看Docker中的容器,例如:test,容器ID为23f(前三个字符),并删除容器docker ps -a(2)删除容器docker rm 23f(3)容器还在运行,不能删除,先停止运行再删除,或直接强制删除停止容器:docker stop 23fdocker ps -a

删除镜像

1、查看Docker要删除的镜像,如目标版本为stable-perl的test,镜像ID(IMAGE ID)为 66f4565。docker images2、使用命令“docker rmi 镜像ID”删除test(stable-perl)的镜像,只取“IMAGE ID”的前3个字符即可。docker rmi 66f如果没有删除容器,会出现错误:意思是镜像(66f)存在使用中的容器(23f),不能强制删除镜像。官方的意思是要先停止容器运行,再进行镜像的删除操作吗?3、查看Docker运行中的容器,如容器 test:stable-perl ,容器ID为 23f。docker ps4、先停止容器(23f),再删除镜像(66f)docker stop 23fdocker rm 23fdocker rmi 66f5、最后检查是否删除docker ps -a

遇到的问题(已经有了容器的相关操作)

如何进入已经退出的容器呢?

docker ps -a 查看<container-name/ID>

启动已停止的现有容器

docker start <container-name/ID>

停止正在运行的容器

docker stop <container-name/ID>

然后登录到容器的交互式shell。

docker exec -it <container-name/ID> bash

参考:

https://blog.csdn.net/u014282578/article/details/127866389?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169138088916800226548821%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169138088916800226548821&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogtop_positive~default-1-127866389-null-null.268v1control&utm_term=docker%E5%88%A0%E9%99%A4%E9%95%9C%E5%83%8F&spm=1018.2226.3001.4450&ydreferer=aHR0cHM6Ly9zby5jc2RuLm5ldC9zby9zZWFyY2g%2Fc3BtPTEwMDEuMjEwMS4zMDAxLjQ0OTgmcT1kb2NrZXIlRTUlODglQTAlRTklOTklQTQlRTklOTUlOUMlRTUlODMlOEYmdD1ibG9nJnU9#t1

附docker常用命令:

重启docker服务  sudo service docker restart关闭docker服务  docker service docker stop开启docker服务  docker service docker start查看当前运行的容器:docker ps查询存在的容器:docker ps -a删除容器:docker -rm  CONTAINERID 强制删除容器:docker -rm -f  CONTAINERID 不能够删除一个正在运行的容器,会报错。需要先停止容器。查看镜像:docker images删除镜像:docker -rmi  IMAGEID  强制删除镜像:docker -rmi -f  IMAGEID  利用镜像创建容器:docker run --name centos -itd centos:latest 
进入后台运行的容器:docker exec -it containname /bin/bash启动容器:docker start containername停止容器:docker stop containername停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q)如果想要删除所有container的话再加一个指令: docker rm $(docker ps -a -q)注:-a标志列出所有容器,-q标志只列出容器的ID,然后传递给rm命令删除全部image的:  docker rmi $(docker images -q)重命名一个容器:docker rename old_name new_name要获取所有容器名称及其IP地址:
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

附:https://blog.csdn.net/ithaibiantingsong/article/details/81353168

在这里插入图片描述
!在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/1015454.html

相关文章

MyCat管理及监控——zookeeper及MyCat-web安装

1.MyCat管理 2.MyCat-eye 3.zookeeper安装 第一步&#xff1a;解压 第二部&#xff1a; 切换目录&#xff0c;创建data文件夹 第三步&#xff1a;修改zookeeper配置文件 这样zookeeper安装及配置就完成了 4.MyCat-web安装 注意mycat-web要与zookeeper关联&#xff0c;…

篇六:适配器模式:让不兼容变兼容

篇六&#xff1a;“适配器模式&#xff1a;让不兼容变兼容” 开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/ 另外有2本不错的关于设计模式的资料&#xff0c…

Parquet存储的数据模型以及文件格式

文章目录 数据模型Parquet 的原子类型Parquet 的逻辑类型嵌套编码 Parquet文件格式 本文主要参考文献&#xff1a;Tom White. Hadoop权威指南. 第4版. 清华大学出版社, 2017.pages 363. Aapche Parquet是一种能有效存储嵌套数据的列式存储格式&#xff0c;在Spark中应用较多。 …

H. HEX-A-GONE Trails 2023“钉耙编程”中国大学生算法设计超级联赛(7)hdu7354

Problem - 7354 题目大意&#xff1a;有一棵n个点的树&#xff0c;A和B分别从点x&#xff0c;y开始&#xff0c;每轮可以移动到一个相邻节点&#xff0c;但如果某个节点有人访问过&#xff0c;则两人都不能访问那个节点&#xff0c;先没有点可走的人输&#xff0c;问A有没有必…

JS中DOM及增删改查

1.使用DOM获取元素 1.getElementById(id) 通过元素id名获取元素 例&#xff1a;获取id名为box的元素 document.getElementById(“box”); 2.getElementsByTagName 通过标签名获取元素列表&#xff08;数组&#xff09; 例&#xff1a;获取所有的li标签 document.getElement…

算法练习--leetcode 链表

文章目录 合并两个有序链表删除排序链表中的重复元素 1删除排序链表中的重复元素 2环形链表1环形链表2相交链表反转链表 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&…

02_ansible配置文件中属性介绍

3.Ansible的配置文件 转自&#xff1a;https://ansible-tran.readthedocs.io/en/latest/docs/intro_configuration.html#accelerate-connect-timeout 3.1.Ansible的配置文件 Ansible的一些的设置可以通过配置文件完成.在大多数场景下默认的配置就能满足大多数用户的需求,在一…

生态系统服务(InVEST模型)供给与需求、价值核算技术及人类活动、重大工程项目、自然保护区、碳中和等领域中实际案例分析

对接工作实际项目及论文写作&#xff0c;解决参会者关注的重点及实际项目过程问题&#xff0c;采取逐步延伸的逻辑&#xff0c;不论您是小白亦或是已经能够成功运行InVEST模型生成结果&#xff0c;您可以自由选择课程内容&#xff0c;如果您是小白老师手把手教您&#xff0c;如…