Docker镜像容器数据卷

本文介绍了Docker的基础知识,包括镜像、仓库、常用命令,如查看镜像、下载镜像、管理容器等。重点讲解了容器与宿主机的关系、数据卷的使用,以及如何解决容器网络问题和限制容器的资源。此外,还讨论了数据持久化的方法,如通过数据卷实现容器数据的保存和共享。

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

镜像概念

image,镜像是打包好的软件(程序代码、基础系统、依赖关系的软件包、系统库、工具),是Docker容器的源代码,Docker镜像用于创建容器。使用build命令创建镜像

仓库概念

集中存放镜像的地方,别人制作出来,上传上去的

基本命令

汇总

1、docker version #查看docker版本
2、docker images #查看你的docker里有那些镜像
      dockers rmi #删除镜像
3、docker search nginx #查看nginx在hub里面的镜像
4、docker pull nginx #下载镜像,可以指定版本
		docker pull docker.io/library/nginx:1.17
5、docker ps#查看启动的docker容器
6、docker network inspect bridge #查看bridge桥接网络的详细信息
7、docer network ls
		查看本机docker里的网络类型
8、docker  run
      去创建容器,然后去启动容器,相当于:dockers run=dockers create+docker start
9、docker stop 
			停止
10、docker  start
			启动
11、docker rm 
		   删除容器
12、docker exec -it sc_nginx2 /bin/bash

		--interactive , -i
			交互式方式进入容器
		--tty , -t
			开启一个终端
		sc_nginx2
			容器名字
		 /bin/bash
			进入容器执行的程序
		exit
			退出容器
13、docker container inspect sc_mysql1
		查看容器的详细信息
14、docker service create
         创建docker服务
15 docker node ls
16、docker  logs
	查看容器启动的过程中的日志
	排错使用

容器

运行镜像的地方,背后就是起到一个进程来运行这个镜像,包括应用程序及其所有依赖项,作为操作系统的独立进程运行

容器与宿主机的关系:

请添加图片描述

容器的状态

up created exited

创建一个容器

docker run -it  --name ubuntu-1 -d  ubuntu

进入容器

docker exec -it ubuntu-1 /bin/bash

注意1

连接不到容器,先关闭防火墙,在重启一下docker,防止挂起状态,在重启服务,(重启docker会到iptables里面添加相关规则)

如何导出镜像,导入镜像?

1、导出镜像 o 导出成tar文件

docker save -o 1-ubuntu.tar ubuntu

传递到另外一台服务器上

scp 1-ubuntu.tar root@192.168.0.17:/root
#scp传递到另外一台服务器上
#传送到192XXX这台主机里面的/root路径下

在另外一台服务器上导入镜像

 docker load -i 1-ubuntu.tar

还有另外一个导出方式(动态的:正在运行的容器,容器若修改了内容,导入的也会修改)导出正在运行的容器里的文件系统成一个归档文件动态的(Export a container’s filesystem as a tar archive)
docker export -o my_nginx.tar my_nginx
导入:

docker import  sc-ubuntu2.tar   sc-ubuntu:2.0
#为导入的的镜像起一个REPOSITORY和tag,否则默认是none

导出镜像:
静态:存放的镜像: docker save —》docker load(导入)
动态:运行在容器里的镜像:docker export --》docker import(导入)

删除镜像

docker rmi

注意2

下载linux系统镜像创建的容器可能无法运行,需要加一个it

docker run -it -d --name  luojiajun  centos:7 /bin/bash
# -p 做端口映射的时候,其实背后就是在iptables里添加DNAT和SNAT策略(不接虽然没太大关系,可以 ping别人,但是别人无法访问)

容器上不了网的问题的解决方法:

1、开启路由功能
临时开启:

echo 1 >/proc/sys/net/ipv4/ip_forward

2、 重启docker

service docker  restart

永久:

[root@docker ~]# vim /etc/sysctl.conf
 net.ipv4.ip_forward = 1
 #加上一条语句
 #查看是否修改成功 1为开启,0为关闭
[root@docker ~]# sysctl  -p
net.ipv4.ip_forward = 1

控制一个容器的内存资源和cpu

docker run -it --cpu-shares 30 -m 100000000 -d --name centos1 centos:7
# --cpu-shares 限制cpu
# -m限制内存100M  byte为单位
#其他的具体参数请使用 docker run help查看

cpu的计算资源(不管你有多少个核心,都是看做一个整体来计算): 1 -----------》分成1000份 --》分30份
如何限制一个进程可以使用多少cpu和多少内存?
创建一个容器,让这个进程在容器里run,这样可以限制容器所使用的cpu和内存,从而可以达到限制这个进程的cpu和内存的使用。

容器的数据持久化-共享化volumevolumes 数据卷

概念

容器的数据保存问题-数据持久化 data persistence
容器背后是一个个的进程,进程在内存运行,所以我们设计到一个问题数据持久化

volumes 数据卷 --》存放数据的地方在这里插入图片描述
Mount 挂载,映射,绑定,map
图解:
宿主机:安装了docker的主机
在这里插入图片描述

数据卷作用

实现容器和宿主机之间共享数据的
方便备份恢复
一台机器上的容器和宿主机之间的数据共享
如果是多台机器,背后需要使用nfs、NAS、SAN、云存储等网络存储解决
	

创建数据卷

  docker volume create my_volume

查看数据卷

docker volume ls

查看卷的路径

 docker volume inspect my_volume

注意
inspect 是一个查看详细信息的命令,不仅仅可以查看volume的详细路径,还可以查看容器的详细信息,比如说容器的ip

使用卷: 容器去使用卷

使用三种不同的语法去使卷
1、 --mount

docker run -d \
  --name nginx-1 \
  --mount source=my_volume,target=/usr/share/nginx/html  \
  -p 7790:80 \
  nginx:latest

2、-v

docker run -d   --name nginx-2   --mount -v source=my_volume,target=/usr/share/nginx/html -p 7790:80   nginx:latest

3、-v使用路径

docker run -d \
  --name xuzz-3 \
  -v my_volume:/usr/share/nginx/html \
  nginx:latest

问题

1、正常运行的容器,数据会丢失吗?

不会,会保存 到/var/lib/docker/volumes/(volume默认的位置)

2.如何将容器里的数据保存到宿主机?

3.如何在容器和宿主机之间传输数据?
4、docker容器运行后是否可以挂载数据卷?

不可以
数据卷的挂载是在启动容器的时候完成
你可以进入容器内容去修改数据

5、修改了容器对应的配置文件如何让配置文件生效?
重启容器 docker restart 容器名
[root@docker conf.d]# pwd
/mysql2/conf.d
[root@docker conf.d]# cat mysql.cnf
[mysql]
auto-rehash
prompt=\u@\d \R:\m mysqlsc>
[mysqld]
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 128M
[root@docker conf.d]#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值