docker镜像,ip,端口映射,持久化

2024-08-25 07:04

本文主要是介绍docker镜像,ip,端口映射,持久化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

docker

镜像的迁移:导出和导入镜像

查看镜像:

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB

打包

将镜像打包,找到save,可以将镜像保存为一个tar包,可以将tar发送给其他用户,也可以作为备份
[root@docker ~]# docker save -o centos.tar centos:latest 
[root@docker ~]# ls
anaconda-ks.cfg  centos.tar  RHEL7-extras.iso  RHEL7OSP-10.iso
[root@docker ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker ps -all
CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS                      PORTS     NAMES
b9d46da21fe3   centos:latest   "/bin/bash"   20 hours ago   Exited (0) 10 minutes ago             c0

删除镜像:

删除镜像时,如果有这个镜像生成的容器正在使用(exited时也不能删除),那么就无法使用rmi移除镜像

[root@docker ~]# docker rmi centos:latest 
Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container b9d46da21fe3 is using its referenced image 5d0da3dc9764
删除容器,退出容器up状态

docker stop c0

[root@docker ~]# docker rm c0
c0

使用docker ps -all 确定没有镜像

[root@docker ~]# docker ps -all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker rmi centos:latest 
Untagged: centos:latest
Untagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6
Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

加载

从tar中引入镜像:将tar文件加载到镜像中

docker  --help

docker load --help
[root@docker ~]# ls
anaconda-ks.cfg  centos.tar  RHEL7-extras.iso  RHEL7OSP-10.iso
[root@docker ~]# docker load -i centos.tar 
74ddd0ec08fa: Loading layer  238.6MB/238.6MB
Loaded image: centos:latest
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB

创建镜像

1.从容器导出tar包

查看帮助文档

     docker --help

     docker export --help

使用指令

     docker  export -o centos_yum.tar  c0

查看新生成的tar包

2.从tar包导入镜像

查看帮助文档

     docker --help

     docker  import --help 

使用导入

     Usage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
     docker  import -m 说明内容  centos_yum.tar  centos:yum

查看镜像,这个镜像不需要我们配置yum

创建容器c0,在c0容器中配置了阿里云镜像和epel-release,ctrl+p+q在后台运行容器

容器打包:

[root@docker ~]# docker export -o centos_yum.tar c0
[root@docker ~]# ls
anaconda-ks.cfg  centos_yum.tar    RHEL7OSP-10.iso
centos.tar       RHEL7-extras.iso

引入镜像:
[root@docker ~]# docker import -m yum centos_yum.tar centos:yum
sha256:c03efa37a8dc3ab41a31a56f9a12c80374c8ccb321d57a617bd2b53a07d4f71e

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       yum       c03efa37a8dc   22 seconds ago   260MB
centos       latest    5d0da3dc9764   2 years ago      231MB

验证:

[root@docker ~]# docker stop c0
c0
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                     PORTS     NAMES
882870618b17   centos:latest   "/bin/bash"   15 minutes ago   Exited (0) 6 seconds ago             c0
[root@docker ~]# docker rm c0
c0
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker run -it --name c0 centos:yum /bin/bash
[root@860c52d03ab9 /]# ls /etc/yum.repos.d
CentOS-Base.repo   epel-playground.repo       epel-testing.repo
epel-modular.repo  epel-testing-modular.repo  epel.repo


ip网络:查看ip

1.交互式:进入到容器,使用指令

docker start c0

docker attach c0

yum -y install net-tools或者iproute

ifconfig或ip a  s 来查看地址

2.使用docker指令inspect

[root@docker ~]# docker inspect c100

3.在外部调用指令:exec

前提是在容器上下载相关的工具或者

docker exec c100 yum -y install net-tools

[root@docker ~]# docker exec c100 ip a s

[root@docker ~]# docker exec c100 ifconfig

使用exec指令touch一个文件

[root@docker ~]# docker exec c100 touch /opt/test.txt
[root@docker ~]# docker exec c100 ls /opt
test.txt
 

启动容器并端口映射

不做端口映射的话,在物理机上无法查看docker容器发布的服务

1.指定端口映射

将容器中的80端口映射到宿主机(docker主机)80端口

docker run -it --name c0 -p80(宿主机):80(容器)  centos:httpd /bin/bash

2.随机端口映射

随机的为容器指定映射端口,映射端口>=32768

docker run -it --name c1 -p80(容器) centos:httpd /bin/bash

crtl+p+q

docker  ps

3.指定其他ip的端口映射

通过其他的ip地址的端口映射容器的端口

通过ifconfig添加一个ip

docker run -it --name c0 -pIP地址::80 centos:httpd /bin/bash

[root@docker ~]# ifconfig ens33:0 192.168.118.56 broadcast 192.168.118.56 netmask 255.255.255.255 up
[root@docker ~]# docker run -it --name c0 -p192.168.118.56::80 centos:httpd /bin/bash
[root@91b858d59851 /]# httpd -k start
[root@91b858d59851 /]# curl localhost
i am httpd
[root@91b858d59851 /]# [root@docker ~]# 
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS                          NAMES
91b858d59851   centos:httpd   "/bin/bash"   50 seconds ago   Up 50 seconds   192.168.118.56:32768->80/tcp   c0
 

[root@docker ~]# curl 192.168.118.56:32768
i am httpd

持久化:共享卷,挂载

将宿主机上的source目录与容器中的data目录共享:
[root@docker ~]# ls /
bin   dev  home  lib64  mnt  proc  run   source  sys  usr
boot  etc  lib   media  opt  root  sbin  srv     tmp  var
[root@docker ~]# docker run -it --name c0 -v /source:/data centos:httpd /bin/bash
[root@805a80743684 /]# ls
bin   dev  home  lib64         media  opt   root    sbin  sys  usr
data  etc  lib     lost+found  mnt    proc  run    srv   tmp  var
[root@805a80743684 /]# [root@docker ~]# 
[root@docker ~]# touch /source/abc.txt
[root@docker ~]# ls /source
abc.txt
[root@docker ~]# docker exec c0 ls /data
abc.txt
[root@docker ~]# docker exec c0 touch /data/def.txt
[root@docker ~]# ls /source
abc.txt  def.txt
 

这篇关于docker镜像,ip,端口映射,持久化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104874

相关文章

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P