1、docker常用操作

docker常用操作

  • 1、启动docker
  • 2.容器
    • 2.1创建容器
    • 2.2查看容器
    • 2.3启动容器
  • 3、镜像
    • 3.1查看镜像
    • 3.2创建镜像
  • 4、在宿主机和容器之间交换⽂件
  • 5、docker 容器之间通信
    • 5.1查看网络
    • 5.2创建网络
    • 5.3容器连接到网络
    • 5.4网络端口映射
    • 5.5Docker的跨主机网络访问

1、启动docker

参考:https://zhuanlan.zhihu.com/p/544310970
sudo systemctl status docker

sudo service docker status
启动(start)、停止(stop)、重启(restart)、查看状态(status)等。

2.容器

2.1创建容器

创建并运行
sudo docker run -it ubuntu:latest /bin/bash

创建不运行
sudo docker run -it -d alpine:latest

运行容器
sudo docker attach d74f2ceb5f3a

docker exec -it 容器id /bin/bash
docker exec -it mycontainer /bin/bash
docker exec 相当于进入容器并开启一个新的终端,可以在里面操作。
如果使用exit退出,容器也不会停止。
docker attach 进入容器正在执行的终端,不会启动新的进程。
如果使用exit退出,容器会停止运行!

创建并命名
sudo docker run -it -d --name ostechnix_alpine alpine:latest
sudo docker run -it --name name ubuntu:latest /bin/bash

docker exec 命令用于在正在运行的 Docker 容器中运行指定的命令。
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
其中,OPTIONS 可以省略,常用的选项如下:
-i:保持标准输入打开,使得可以与容器交互。
-t:分配一个伪终端,使得可以与容器交互。
CONTAINER 是要操作的容器的名称或 ID。
COMMAND 是要在容器内运行的命令。
ARG… 是命令的参数。
在名为 mycontainer 的容器中执行命令 /bin/bash 并分配一个伪终端:
docker exec -it mycontainer /bin/bash
在名为 mycontainer 的容器中执行命令 ls -l:
docker exec mycontainer ls -l

# 常用的参数
docker run -d -p  宿主机端口:容器端口 --name 容器名称 镜像的标识|镜像名称[tag]
# -d: 代表后台运行容器
# -p: 宿主机端口:容器端口: 为了映射当前Linux的端口和容器的端口
# --name 容器名称: 指定容器的名称

2.2查看容器

#查看运行
sudo docker ps
#列出所有可用的容器(运行或者停止)
sudo docker ps -a

2.3启动容器

启动start、重启restart、暂停pause 和终止容器stop
#名称或ID
sudo docker start modest_cray
sudo docker start 10615254bb45

容器脱离(不要退出)回到主机系统的 shell。不要终止或者关闭容器。使用 CTRL+P 然后 CTRL+Q 从容器中脱离,这样不会关闭容器。

删除容器
sudo docker rm 377e6d77ebb5

3、镜像

3.1查看镜像

sudo docker images
sudo docker search ubuntu
sudo docker pull ubuntu

3.2创建镜像

创建
sudo docker commit 377e6d77ebb5 ostechnix/ubuntu_apache
移除
sudo docker rmi ce5aa74a48f1

4、在宿主机和容器之间交换⽂件

在宿主机和容器之间相互COPY⽂件 cp的⽤法如下# 容器中 复制到 宿主机
docker cp [OPTIONS] CONTAINER:PATH LOCALPATH 
eg:docker cp  tomcat-8081:/usr/local/tomcat/webapps/ROOT/index.jsp /root/# 宿主机 复制到 容器中
docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH
eg:docker cp /root/index.html tomcat-8081:/usr/local/tomcat/webapps/ROOT/复制文件
将当前目录tpch文件夹复制到mysql容器相应的位置:
docker cp tpch mysql56:/var/lib/mysql #mysql56为容器名
容器文件拷贝到宿主机:
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径

Docker数据卷
通过镜像创建一个容器。容器一旦被销毁,则容器内的数据将一并被删除。但有些情况下,通过服务器上传的图片出会丢失。容器中的数据不是持久化状态的。这个时候可以通过数据卷来解决这个问题。https://zhuanlan.zhihu.com/p/430652941

5、docker 容器之间通信

菜鸟:https://www.runoob.com/docker/docker-container-connection.html
https://www.cnblogs.com/makalochen/p/14242125.html#%E7%AE%80%E4%BB%8B
我们安装Docker后,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host。
host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
None:该模式关闭了容器的网络功能,相当于一个回环网络。
Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个叫docker0的虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
以哪种方式让服务器内部的容器与公网进行通信。
1、假如使用的是默认的桥接网络模式,启动容器的时候需要使用参数-p 宿主机端口:容器端口设置端口的映射。
2、假如使用的是host主机模式,因为使用的是宿主机的ip与端口,那就直接可以与公网通信。

查看IP:
ip安装apt-get update & apt-get install -y iproute2
ip addr 或 ip a
或用ifconfig

5.1查看网络

docker network ls
docker network inspect NETWORKID

5.2创建网络

链接:https://blog.csdn.net/longjuanfengzc/article/details/89340391
https://blog.csdn.net/u013355826/article/details/84987233
1.默认创建容器时默认连接的是bridge,其实可以创建容器时可以指定使用的网络,可以指定host、none甚至可以自己建一个bridge
docker network create -d bridge my-bridge

2.通过link,使用link相当于使用DNS记录(不推荐)
通过busybox创建一个容器名为test1
docker run -d --name test1 busybox /bin/sh -c “while true; do sleep 3600; done”
再用busybox创建一个容器名为test2,创建test2时使用了link链接了test1
docker run -d --name test2 --link test1 busybox /bin/sh -c “while true; do sleep 3600; done”

5.3容器连接到网络

将容器连接到网络
docker run --net= …
或者将已存在容器加入新的网络
docker network connect

创建时指定网络
docker network create -d bridge my-bridge

启动容器并指定模式
默认是Bridge
在容器启动命令时用参数–net=host指定当前容器网络模式
如: docker run -itd --net=host centos:7 /bin/bash

5.4网络端口映射

参考:https://cloud.tencent.com/developer/article/1831540
外网如何访问容器?
端口映射,-p指定对应端口
外网访问容器用到了docker-proxy和iptables DNAT

  • 宿主机访问本机容器使用的是iptables DNAT
  • 外部主机访问容器或容器之间的访问是docker-proxy实现

可以通过 -P 或 -p 参数来指定端口映射。
当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。
-p (小写的)可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。
docker run -d -P training/webapp python app.py
使用 hostPort:containerPort 格式本地的 5000 端口映射到容器的 5000 端口,可以执行
docker run -d -p 5000:5000 training/webapp python app.py

5.5Docker的跨主机网络访问

跨主机网络解决方案
docker原生的overlay和macvlan
第三方的flannel、weave、calico

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/627375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 修改文件名称的三种方法

修改文件名称是 Linux 系统中常见的操作之一。有三种方法可以修改文件名称: 1. 使用 mv 命令 mv 命令是用于移动或重命名文件的命令。要使用 mv 命令重命名文件,请使用以下语法: mv old_file_name new_file_name 例如,要将文件…

阿里国际站运营每天具体做什么工作?附运营方法!

相信很多刚接触阿里国际站的运营人员都会迷茫,没有思路还容易产生焦虑,主要就是担心运营没效果!今天大白就带着大家一起揭秘阿里国际站运营每天必做的事情都有哪些,带你更好地了解阿里国际站应该如何运营! 阿里国际站运…

5.【CPP】内存管理(text段data段bss段||nwedelete底层实现||源码)

一.内存管理 1.如图 2.heap下面的空间 应用程序加载到内存中由操作系统完成对bss,data,text,stack加载,并在内存分配空间。在编译阶段已经确定分配了多少空间,属于静态分配。 而malloc等在程序运行时在堆上开辟空间则属于动态分配,需要手动f…

k8s---配置资源管理

内容预知 目录 内容预知 secret资源配置 secert的几种模式 pod如何来引用secret 陈述式创建secret 声明式base64编码配置secret 将secret用vlumes的方式挂载到pod中 传参的方式将环境变量导入pod 如何通过secret加密方式获取仓库密码 configmap的资源配置 陈述式创建…

ubuntu 22 搭建git服务

第一步,安装git: sudo apt-get install git 创建用户信息 git config --global user.name soft 第二步,创建一个git用户,用来运行git服务: sudo adduser git 创建git仓库的存储目录、更改文件目录属主为代码仓库…

2.3数据链路层02

2.3 数据链路层 2.3.5 以太网 1、以太网概念 以太网是一种计算机局域网技术。IEEE(电气与电子工程师协会:Institute of Electrical and Electronics Engineers)组织的IEEE802.3标准制定了以太网的技术标准,它规定了包括物理层的…

Gartner发布CPS安全2024年预测:安全形势动荡的四大向量

随着威胁形势、自动化和人工智能采用的步伐以及供应商形势不断快速发展,我们为安全和风险管理领导者提供了四项预测,以规划 2024 年及以后 CPS 安全的未来发展方向。 主要发现 随着人工智能的采用加速增加网络物理系统( CPS)的“智…

openssl3.2 - 官方demo学习 - cms - cms_comp.c

文章目录 openssl3.2 - 官方demo学习 - cms - cms_comp.c概述笔记END openssl3.2 - 官方demo学习 - cms - cms_comp.c 概述 CMS is Cryptographic Message Syntax (CMS) standard 用CMS操作, 将明文压缩 默认编译出来的openssl3.2没有zlib库, 需要添加zlib特性[openssl3.2 - …

JAVA基础---内部类详解

文章目录 1. 内部类概念2. 内部类的分类2.1 内部类2.1.1 实例内部类2.1.2 静态内部类2.2 局部内部类2.3 匿名内部类 1. 内部类概念 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务&#xff0c…

MPLS基础架构

目录 一、MPLS多协议标签交换概述 1、MPLS是什么 2、MPLS-VPN 3、MPLS起源 (1)、MPLS解决的问题 MPLS解决了三层转发短板问题。 (2)、交换机转发流程 (3)、路由器转发流程 (4)、交换…

【程序员的自我修养11】栈与函数调用过程

绪论 大家好,欢迎来到【程序员的自我修养】专栏。正如其专栏名,本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度,我会尽自己最大的努力,争…

gradle版本中-bin与-all区别

打开android studio下载的gradle文件,发现-all比-bin多了一个docs文件夹和一个src文件夹。-bin是编译后的二进制发布版,-all还包含了源码和文档,比-bin大了几十兆,两者其余没有区别。 android开发只关注gradle功能不关注实现的情况…

android studio报错:Connect to maven.google.com:443 [mavaen.google.com/

报错很干脆,办法也很干脆。 直接替换 将【https://maven.google.com】替换 为:【http://maven.aliyun.com/nexus/content/groups/public】 或者替换 为:【https://dl.google.com/dl/android/maven2/】

基于K-Means聚类与RFM模型分析顾客消费情况【500010102】

项目说明 本数据集是生成式模拟数据,本项目通过可视化分析对数据进行初步探索,再通过时间序列针对店铺的销售额进行分析,对时序图进行分解,发现数据存在季节性,并且通过auto_arima自动选择参数建立了SARIMA模型&#…

coco标签处理

抽取coco格式训练集中的一部分作为子训练集,用快速测试算法 from pycocotools.coco import COCO import random import copy import json# 原始的 COCO 标注文件路径 original_annotations_path /workspace/datasets/soccer6/yolo/annotations/train.json# 新的 C…

IOS-高德地图路径绘制-Swift

本文展示的是在IOS开发中调用高德地图进行驾车路径绘制,开发语言是Swift。 IOS高德地图集成请看:IOS集成高德地图Api 使用路径规划功能需要集成高德地图的搜索功能。 pod AMapSearch定义AMapSearchAPI 定义主搜索对象 AMapSearchAPI ,并继承…

AI对决:ChatGPT与文心一言的深度比较

. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 引言ChatGPT与文心一言的比较Chatgpt的看法文心一言的看法Copilot的观点chatgpt4.0的回答 模型的自我评价自我评价 ChatGPT的优势在这里插入图片描述 文…

Linux下的HTTP代理服务器Squid的配置和使用

Squid是一个流行的Linux下的HTTP代理服务器软件。通过Squid,你可以在Linux服务器上设置一个代理服务器,以便为客户端提供安全的网络连接和数据传输。以下是Squid的配置和使用指南。 1. 安装Squid 首先,你需要确保你的Linux系统上已经安装了…

国标GB28181安防视频监控平台EasyCVR视频分享页增加精简模式

智慧安防平台EasyCVR能在复杂的网络环境中(专网、局域网、广域网、VPN、公网等)将前端海量的设备进行统一集中接入与视频汇聚管理,平台支持设备通过4G、5G、WIFI、有线等方式进行视频流的快捷传输,可以兼容各品牌的IPC、NVR、移动…

寒假学习打字:提前实现弯道超车

寒假对于学生来说,通常是一个宝贵的时间段,可以用来放松、充实自己,或者提高一项重要的技能——打字。在这个数字时代,打字技能变得比以往任何时候都更加重要。无论是在学校的论文写作,还是在工作中处理电子邮件&#…