查看本地镜像
查看本地: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
!