当前位置:   article > 正文

Docker容器的基本操作_docker 容器 up

docker 容器 up

一、Docker 镜像操作

1、搜索镜像

格式:docker search 关键字
docker search nginx
  • 1
  • 2

在这里插入图片描述

2、获取镜像(创建镜像)

格式:docker pull 镜像:标签
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
docker pull nginx
  • 1
  • 2
  • 3

在这里插入图片描述

3、镜像加速下载

  • 浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://y33hqxx2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

4、查看镜像信息

镜像下载后存放在 /var/lib/docker 
  • 1

在这里插入图片描述

5、查看下载的镜像文件信息

cat /var/lib/docker/image/overlay2/repositories.json
  • 1

在这里插入图片描述

6、查看下载到本地的所有镜像

docker images

REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    ae2feff98a0c   9 days ago   133MB
--------------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
--------------------------------------------------------------------------------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

7、根据镜像的唯一标识 ID 号,获取镜像详细信息

很重要,镜像排错的第一步

格式:docker inspect 镜像ID号
docker inspect 08b152afcfae
  • 1
  • 2

在这里插入图片描述

8、为本地的镜像添加新的标签

格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest nginx:web

docker images | grep nginx
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

9、上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:latest nginx:web		#添加新的标签
docker login								#登录公共仓库
Username:
password:
docker push wangdahcu/nginx:web					#上传镜像
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

先注册一个docker账号

docker注册https://hub.docker.com/choose-plan?ref=signup

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

10、导出镜像:将镜像保存成为本地文件

格式:docker save -o /目录/文件名 存储的镜像:版本
docker save -o nginx nginx:latest			#存出镜像命名为nginx存在当前目录下
ls -lh
  • 1
  • 2
  • 3

在这里插入图片描述

11、导入镜像:将镜像文件导入到镜像库中

格式:
docker load < 存出的文件
或者
docker load -i 存出的文件
或者
docker load --input nginx

docker load < nginx
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

12、删除镜像

格式:
docker rmi 仓库名称:标签				#当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号						#会彻底删除该镜像(加-f强制删除)

#删除所有镜像,但该镜像创建的容器不能处于up状态
docker rmi `docker images -qa`

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
先通过docker-compose down 停止服务;后再次执行删除;

docker rmi nginx:web
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

二、Docker 容器操作

1、容器创建:就是将镜像加载到容器的过程

  • 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。
格式:docker create [选项] 镜像
常用选项:
-i:让容器的输入保持打开
-t:让 Docker 分配一个伪终端

docker create -it nginx:latest /bin/bash
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、运行容器

docker run -it nginx:latest /bin/bash
docker run -itd nginx:latest /bin/bash

-i:表示标准输入
-t:指定一个伪终端(环境)
-d:开启守护进程(后台运行)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、退出容器

#退出并停止容器
exit

#退出但不停止容器
crtl +p +q
  • 1
  • 2
  • 3
  • 4
  • 5

4、进入容器

  • 需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。
格式:docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。

#进入正在运行的容器
docker attach 容器ID

docker ps                        #获取正在运行的容器ID
docker start 2592d3fad0fb		 #进入容器前,确保容器正在运行
docker exec -it 2592d3fad0fb /bin/bash
ls
exit			               	#退出容器后,容器仍在运行
docker ps -a

docker run -it centos:7 bash        #不加-d选项会创建容器后直接进入容器,但是退出容器,容器也会停止
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

5、查看容器的运行状态

#查看正在运行的容器
docker ps

#查看所有容器
docker ps -a			#-a 选项可以显示所有的容器
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS    PORTS     NAMES
8b0a7be0ff58   nginx:latest   "/docker-entrypoint.…"   57 seconds ago   Created             inspiring_swanson
容器的ID号	   加载的镜像     运行的程序                  创建时间        当前的状态   端口映射  名称

#查看所有容器的ID
docker ps -aq
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

①、查看运行中的容器

docker container ls

CONTAINER ID :运行中容器的唯一号码(自动生成)

NAMES :容器的名字(默认自动生成,可手工指定,不可重复)
    手工指定:在开启容器时指定 docker container run -it --name="ljm" 9f266d35e02c

IMAGE :镜像的ID

STATUS :运行状态 (up为运行中,exited为关闭掉的容器。可使用 docker container ls -a 查看所有状态)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

②、查看所有容器信息

docker container ls -a
或
docker ps -a
  • 1
  • 2
  • 3

③、只查看容器的运行ID

docker container ls -a -q
或
docker ps -a -q
  • 1
  • 2
  • 3

④、查看容器详细信息

docker container inspect 容器名或者运行号码
  • 1

⑤、可查看容器内进程信息

docker container top 容器的ID
  • 1

⑥、查看容器的日志信息

docker container logs [-ft] 容器的ID
-f 为持续监控,-t 为更加详细显示
  • 1
  • 2

6、启动容器

格式:docker start 容器的ID/名称
docker start 8b0a7be0ff58
docker ps -a
  • 1
  • 2
  • 3

7、创建并启动容器

可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。
  • 1

注意:容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出。

  • docker容器默认会把容器内部第一个进程,也就是pid=1的程序作为docker容器是否正在运行的依据,如果docker容器中
  • pid=1的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。

当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的 IP 地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。

docker run centos:7 /usr/bin/bash -c ls /
docker ps -a			#会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了
  • 1
  • 2

8、在后台持续运行 docker run 创建的容器

  • 需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

docker ps -a					#可以看出容器始终处于 UP,运行状态
CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS         PORTS     NAMES
2592d3fad0fb   centos:7   "/usr/bin/bash -c 'w…"   2 seconds ago    Up 2 seconds             peaceful_chatelet

docker run -itd --name test1 centos:7 /bin/bash
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

9、终止容器运行

格式:docker stop 容器的ID/名称
docker stop 2592d3fad0fb

docker ps -a
  • 1
  • 2
  • 3
  • 4

10、复制到容器中

echo abc123 > ~/test.txt
docker cp ~/test.txt 2592d3fad0fb:/opt/
  • 1
  • 2

11、从容器复制文件到主机

docker cp 2592d3fad0fb:/opt/test.txt ~/abc123.txt
  • 1

12、容器的导出与导入

  • 用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。
#导出格式:docker export 容器ID/名称 > 文件名
docker export 2592d3fad0fb > centos7tar

#导入格式:cat 文件名 | docker import – 镜像名称:标签
cat centos7tar | docker import - centos7:test			#导入后会生成镜像,但不会创建容器
  • 1
  • 2
  • 3
  • 4
  • 5

13、暴露端口

docker run -d -p 500:80 nginx:latest
docker run -d -P 500:80 nginx:latest

#-p(小写):暴露指定端口
#-P(大写):暴露随机端口
  • 1
  • 2
  • 3
  • 4
  • 5
#######
docker run -p(小写)
后面的参数有四种格式,列举如下:
docker run -p container_port                    #将容器的某个端口映射到宿主机的所有接口的(接口可以认为是IP地址)一个随机端口上。
docker run -p host_port:container_port          #将容器的某个端口映射到宿主机的所有接口的一个具体端口上。
docker run -p host_ip:host_port:container_port  #将容器的某个端口映射到宿主机的一个具体IP地址的具体端口上。
docker run -p host_ip::container_port           #将容器的某个端口映射到宿主机的一个具体IP地址的一个随机端口上。
#可以通过命令docker port 容器名字或者ID查看映射后的端口信息,能够看到容器的端口与宿主机的哪一个端口建立了映射关系。

#######
docker run -P(大写)
不需要额外的参数,其作用是将容器内部暴露所有的端口分别映射到宿主机的所有接口的一个随机端口上。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

14、链接容器

--link

:
docker pull centos:7
docker run -itd -P --name web1 centos:7 /bin/bash
docker run -itd -P --name web2 --link web1 centos:7 /bin/bash

docker ps

docker attach web1镜像id
yum -y install net-tools
#获取IP地址
ifconfig
ctrl +p +q
docker ps
docker attach web2镜像id
ping web1IP地址
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

15、删除容器

格式:docker rm [-f] 容器ID/名称
docker stop 容器ID

#删除已经终止状态的容器
docker rm 2592d3fad0fb				

#强制删除正在运行的容器
docker rm -f 2592d3fad0fb

#删除非up状态的所有容器
docker rm $(docker ps -qa)

#强制删除所有容器
docker rm -f `docker ps -qa`			

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash			#批量停止容器
docker ps- a | awk 'NR>=2{print $1}' | xargs docker stop

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash				#批量删除所有容器
docker ps -a | awk 'NR>=2{print $1}' | xargs docker rm

docker images | awk 'NR>=2{print "docker rmi "$3}' | bash			#批量删除镜像
docker images | grep none | awk ' {print $3}' | xargs docker rmi    #删除none镜像
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

16、数据卷和数据容器

  • 两者的区别:
    • 数据卷是宿主机和容器之间的共享
    • 数据卷容器是容器和容器之间的共享
例如:数据卷
docker run -it -v /root/aaa:/bbb centos:7 /bin/bash

例如:数据卷容器
docker run -it -v /aaa -v /bbb --name wdc centos:7 /bin/bash
docker run -it --volumes-from wdc --name katalina centos:7 /bin/bash
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

三、Docker 仓库操作

1、搭建本地私有仓库

#首先下载registry 镜像
docker pull registry

#在daemon.json文件中添加私有镜像仓库地址
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.80.10:5000"],   #添加,注意用逗号结尾
"registry-mirrors": ["https://6ijb8ube.mirror.aliyuncs.com"]
}

systemctl restart docker.service

#运行registry 容器
docker run -itd -v /data/registry:/var/lib/registry -p 5000: 5000 --restart=always --name registry registry:latest
-------------------------------------------------
-itd: 在容器中打开一个伪终端进行交互操作,并在后台运行
-v: 把宿主机的/data/registry目录绑定到容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了
--restart=always: 这是重启的策略,在容器退出时总是重启容器
--name registry: 创建容器命名为registry
registry:latest:这个是刚才pull下来的镜像
---------------------------------------------------
Docker容器的重启策略如下:
no:默认策略,在容器退出时不重启容器
on-failure:在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3 :在容器非正常退出时重启容器,最多重启3次
always:在容器退出时总是重启容器
unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

#为镜像打标签
docker tag centos:7 192.168.80.10:5000/centos:v1

#上传到私有仓库
docker push 192.168.80.10:5000/centos:v1

#列出私有仓库的所有镜像
curl http://192.168.80.10:5000/v2/_catalog

#出私有仓库的centos 镜像有哪些tag
curl http://192.168.80.10:5000/v2/centos/tags/list

#先删除原有的 centos 的镜像,再测试私有仓库下载
docker rmi -f 8652b9f0cb4c
docker pull 192.168.80.10:5000/centos:v1 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/blog/article/detail/80455
推荐阅读
  • 我们都知道,jmeter可以做接口测试,也可以用于性测试,现在企业中性测试也大多使用jmeterdocker是最近这些年流行起来的容器部署工具,可以创建一个容器,然后把项目放到容器中,就可以构建出一个独立的运行环境。用docker创建... [详细]

  • docker_面试docker面试dockerDocker是什么?是实现容器技术的一种工具是一个开源的应用容器引擎使用C/S架构模式,通过远程API来管理(我们本机是C,docker引擎是S,实际的构建过程是在docker引擎下完成的)可以... [详细]

  • 与dockersave不同,dockerexport只导出容器的文件系统,不包含镜像的元数据信息和层。与dockerload不同,dockerimport命令会将文件作为一个新的镜像导入,而不是还原已有的镜像。dockerexport导出的... [详细]

  • 我们知道使用镜像创建一个容器,该镜像必须与Docker宿主机系统架构一致,例如Linuxx86_64架构系统中只能使用Linuxx86_64的镜像创建容器例如我们在Linuxx86_64中构建一个username/test镜像CMDech... [详细]

  • `dockerexec-it`:在运行的容器中执行命令。-`dockerbuild-t:`:构建一个镜像。-`dockerpush:`:将镜像推送到远程仓库。-`dockerstart`:启动一个已停止的容器。-`dockerstop`:停... [详细]

  • Docker是一种流行的开源软件平台,可简化创建、管理、运行和分发应用程序的过程。它使用容器来打包应用程序及其依赖项。Docker主导了市场。大多数顶级云和IT公司都采用Docker来简化其应用程序开发工作流程。对具有Docker经验的申请... [详细]

  • 1.Docker和虚拟机有啥不同?答:Docker是轻量级沙盒,在其中运行只是应用,虚拟机里面还有额外系统。查看twt论坛_关于docker面试题关于docker面试题1.Docker和虚拟机有啥不同?答:Docker是轻量级沙... [详细]

  • docker快速安装mysqldocker安装mysql1、创建宿主机挂载磁盘目录mkdir-p/home/huangliang/mysql/datamkdir-p/home/huangliang/mysql/config122、创建配置文... [详细]

  • 最近阿里面试官问我Docker是做什么用,我记得之前360和美团,京东都问过,但是一直没时间看,最近有时间了,系统学习了一下Docker,在此做一下记录,方便各位看官学习交流一、Docker概述:Docker:本意是码头工人,言外之... [详细]

  • Docker是一个开源应用容器引擎,让开发者可以打包他们应用以及依赖包到一个可移植容器中,然后发布到任何流行Linux机器或Windows机器上,也可以实现虚拟化。如果要删除正在运行容器,需要先停止容器,然后再删除容器。进入容器后... [详细]

  • 如何通过docker快速构建个人博客网站docker构建个人博客网站1、项目地址https://gitee.com/hhll/blog-hangliang.git2、打包docker镜像并上传docker hub【1】注册dock... [详细]

  • Arthas是一款强大的Java诊断和调试工具,它能够在生产环境中实时诊断Java应用,提供强大的调试功能,帮助开发者和运维人员解决各种Java应用的性能问题和调试挑战。本指南将介绍如何在Docker环境中使用Arthas进行实战。​​​​... [详细]

  • 配置持续部署工具(如Kubernetes、DockerSwarm、AWSECS等),监视Docker镜像仓库中的新镜像,并将其自动部署到生产环境中。当Dockerfile中的指令没有变化时,Docker会重用之前的构建缓存,而不是重新执行该... [详细]

  • docker安装minio对象存储docker安装minioMinIO是一款高性能、分布式的对象存储系统.它是一款软件产品,可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。MinIO与传统的存储和其他的对象存储... [详细]

  • 主要记录在centos当中安装MinIO_docker链接minio看看启动是否正常docker链接minio看看启动是否正常一、查看docker环境是否正常dockersearchminIO1  如果能查出来证明docker安装的没问题,... [详细]

  • 使我们在重启docker时,自动启动相关容器。配置MinIOWeb控制台端口地址。配置MiniIOApi接口端口地址。以守护式容器在后台运行。_docker安装miniodocker安装miniodocker安装Minio搜索可安装版本do... [详细]

  • Docker安装Minio_docker安装miniodocker安装minio1、检索和拉取Minio镜像#查看本地镜像dockerimages#检索minio镜像dockersearchminio#拉取minio镜像dockerpull... [详细]

  • Docker安装Minio_docker安装miniodocker安装minio文章目录一、查看Minio镜像二、下载镜像三、创建并启动Minio容器四、查看Minio容器五、登录Minio控制台六、创建桶七、创建分组八、创建MInio用户... [详细]

  • 使用docker-compose安装2023最新minio_docker-compose最新版本docker-compose最新版本上一篇使用了比较传统的方式安装minio并添加进systemctl管理,最近比较闲,把以前的一些服务改为d... [详细]

  • 1.拉取镜像dockersearchminio;//在dockerhub中查询;dockerpullminio/minio2.创建两个目录/data/config3.启动镜像容器dockerrun--nameminio-p9000:9000... [详细]

相关标签
  

闽ICP备14008679号