docker

使用Docker发布C# .NETCore WebApi容器至服务器 运行容器:docker run -d -p 8888:5050 --name wenapi lwpoor/mywebapi。完成后可以看到自己的docker hub 存储库地址,点击 发布,发布的时候必须要先运行本地 docker,不然会报错。选择 docker hub 将应用程序作为docker映像发布到docker hub。如果没有勾选或者使用VS019创建的项目,可以在项目右键 添加 docker支持。接下来开始发布程序,右键点击项目 发布。 阅读详情

一、概述

Docker就是用来解决开发环境问题的,把开发环境打包,这样就可以在不同的服务器上进行移植。

但docker的作用不仅用作移植,可以更方便的部署项目。Docker compose常用来部署spring cloud。

关于使用docker的意义,这篇文章总结的很好。http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发 Docker 镜像。客户端和服务器可以运行在同一个 Host 上,当启动docker服务之后,就同时启动了client和server。如果client/server在不同机器上,客户端可以通过 Socket 或 REST API 与远程的服务器通信。

docker的架构图:(Client向Docker daemon发送命令,Docker daemon到Registry拉取镜像,在Docker daemon上建立容器)


Docker 的核心组件包括:
Docker Client:docker客户端发送命令到docker daemon,docker daemon根据相关的命令对容器执行运行、构建等操作。
Docker Daemon:相当于docker服务器,根据client的命令来创建、运行、监控容器,构建、存储镜像。默认配置下,Docker Daemon 只能响应来自本地(127.0.0.1) 主机的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开 TCP 监听。
Docker Registry:存储 Docker Image 的仓库,运行 docker pull 时,实际上是client将命令发送给daemon,daemon负责到docker registry拉取镜像。可以搭建registry私服储存自己的镜像。

看下面的流程图:

Docker Image:镜像
Docker Container:容器,容器是根据镜像创建的。

关于image和container:从docker registry上拉取镜像到本地,在本地运行镜像时就是一个容器。image类似安装包一样,拉取image之后,保存在了本地(保存目录/var/docker/lib),运行image之后,开始占用内存,消耗资源,也就变成一个container。

二、安装

yum install docker    #yum安装
systemctl start docker    #启动服务

tip:docker基于c/s模式,上面的服务启动命令同时启动了client和daemon,并且默认daemon只接收本机client的命令。

修改镜像源地址

既然docker daemon需要到Registry拉取镜像,那么就需要添加国内镜像源了。

使用网易的镜像源,修改/etc/docker/daemon.json:

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]  
}

修改完成后重启服务。

docker info命令可以查看当前docker daemon的信息,包括镜像数、容器数和主机信息等。如下可以看到配置的镜像:

docker-daemon接收远程命令

之前提到,默认情况下docker daemon只接收本机命令,即docker daemon使用Unix socket(/var/run/docker.sock)进行与本地client的通信,并且未监听任何端口。

如果要允许docker daemon接收远程命令,在/usr/lib/systemd/system/docker.service,ExecStart部分中添加:

# 注意换行符
-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 \

-H 用来配置docker daemon的socket,接受三种形式:unix,tcp,fd,默认情况下只使用docker.sock通信,也就是本地通信,上面的配置在docker.sock的基础上添加了对2375端口的监听。

来稍微看下docker.service的内容:

上面的配置中,EnvironmentFile下是docker的一些配置文件,/etc/sysconfig/docker是基本配置文件,docker-storage是关于储存的,docker-network是关于网络的。

在老版本的docker中,如果要允许docker daemon接收远程通信,还可以修改/etc/default/docker,添加DOCKER_OPTS参数,修改后即可生效。但是在新版本的docker中,配置文件发生了改变,已经变成了上面的样子。上面可以看到EnvironmentFiles中是没有/etc/default/docker的,所以还要手动添加此文件,才能让docker daemon接受远程通信。

修改docker.service之后,执行以下命令:

systemctl daemon-relead    #重新读取服务配置文件
systemctl restart docker    #重启服务
netstat -at | grep 2375    #查看2375是否被监听

可以看到2375端口被监听。

三、使用

部分docker命令,更多命令docker --help查看。

docker search image_name #在hub中查询镜像
docker pull image_name    #拉取镜像
docker images    #查看所有已安装镜像
docker run image_name    #运行镜像
docker container ls    #显示正在运行的容器
docker ps    #同上
docker ps -a    #查看所有容器,包括未运行的
docker start container_name/container_id    #启动/重启/停止容器
docker restart container_name/container_id
docker stop container_name/container_id 
docker rm container_name/container_id    #删除容器

-hello-world镜像

docker pull library/hello-world    #拉取镜像
docker images    #查看镜像
docker run hello-world    #运行hello-world镜像

运行结果:

内容中有docker运行的流程,可以一看。

docker采用的是c/s模式,docker pull是客户端向docker-daemon发送的拉取命令,docker-daemon会在当前主机中寻找此镜像,如果没有则会到docker-hub中远程下载镜像,镜像保存目录为/var/lib/docker。docker run 运行命令,根据拉取的镜像创建一个容器。

-拉取nginx

docker pull nginx    #拉取镜像
docker run --name nginx_test -d -p 8080:80 nginx    
#-d后台运行,-p本地的8080端口映射到容器的80端口 --name容器名

tip:docker run命令中的'nginx'是指镜像名,如果镜像名中有tag,在命令中也记得加上。

进入容器内部,修改nginx配置文件。

docker exec -it nginx_test bash    #进入容器内部

进入之后相当于一个新的系统,可以找到nginx进行配置。要退出镜像,输入exit命令即可。

问题:进入容器之后发现没办法修改啊,因为没有vi,无法直接配置,所以需要将配置文件等挂载出来。

nginx容器中的配置文件挂载到宿主机,可以直接在宿主机中修改配置文件。

在挂载之前,需要将容器中的文件复制到宿主机内。

nginx文件位置:

默认html位置:/usr/share/nginx/html

配置文件位置:/etc/nginx/nginx.conf--------------nginx.conf引用了/etc/nginx/conf.d/*.conf

log位置:/var/log/nginx

拷贝容器内的文件到宿主机:

docker cp nginx_test:/usr/share/nginx/html /var/docker/nginx/    #直接复制文件夹
docker cp nginx_test:/etc/nginx/conf.d /var/docker/nginx/etc    #复制conf.d
docker cp nginx_test:/etc/nginx/nginx.conf /var/docker/nginx/etc     #复制nginx.conf
docker cp nginx_test:/var/log/nginx /var/docker/nginx/    #复制log

将上述文件挂载,具体命令:

docker -p 8080:80 -d --name nginx_test --privileged=true \
-v /var/docker/nginx/html:/usr/share/nginx/html \
-v /var/docker/nginx/log:/var/log/nginx \
-v /var/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /var/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
nginx

这里有一个小坑:

如果在启动时不加--privileged=true参数,启动nginx容器会秒退,查看日志,报错为[permisson denied],宿主机权限不够:

-Oracle 11g

docker安装配置oracle

# 拉取oralce_11g镜像

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g 

# 运行镜像

docker run -d -p 1521:1521 --name oracle_11g docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

#查看运行的镜像

docker ps 

# 运行容器

docker start oracle_11g

# 进入oracle_11g容器

docker exec -it oracle_11g bash

# 切换root用户,密码helowin

su root

# 修改环境变量,编辑/etc/profile

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH 
# 切换oracle用户

su oracle

sqlplus /nolog #不知道啥意思

sqlplus /as sysdba 不知道啥意思

# 修改system/sys用户密码为system/sys

alter user system identified by system

alter user sys identified by sys

# 以下不知道啥意思

alter profile default limit password_life_time unlimited
 

客户端连接oracle数据库

 

 

-Dockerfile

dockerfile是对镜像的描述文件,用来自定义镜像,通常是继承已有镜像,利用dockerfile来构建自己的镜像,运行镜像即可得到容器。

Dockerfile还是比较复杂,需要再开博文去系统总结,这里只以JDK8镜像作简单说明。

下面是JDK8的Dockerfile:

#基础镜像
FROM java:8

#维护者信息
MAINTAINER cui

#构建镜像时执行的命令
RUN echo "haha"

#运行容器时执行的命令
CMD java -version

构建镜像命令:

docker build dockerfile所在目录

 执行流程:

q

-打包docker镜像

以nginx为例,修改Nginx之后,可以将Nginx打包为新的镜像 ,再将新的镜像上传到docker cloud。

docker commit nginx_test nginx:v1.1    #打包修改的nginx容器为新的镜像

docker images查看镜像:

首先在docker hub注册:https://hub.docker.com/

docker login 登录:

docker tag为镜像重命名:

docker tag nginx cjoda1218/study:v1.1    #nginx为镜像名 用户名/仓库名:版本

上传:

docker push cjoda1218/study:v1.1

Docker学习记录(一):Windows7下Docker的安装 本文主要记录Docker在Windows7系统下的安装过程,分享出来和大家一起学习,不足之处请批评指正。一、Docker在Windows10系统下的安装首先简单介绍一下Docker在Windows10系统下的安装方法,比较简单,直接下载DOCKER CE FOR WINDOWS,双击安装就行。(1)DOCKER CE FOR WINDOWS下载DOCKER CE FOR WINDOWS是Docke... 阅读详情

相关推荐

Ubuntu16.04下离线安装docker和使用docker

安装docker dpkg指定安装路径 安装好docker以后,需要切换一些源 docker常用命令 删除/停止等命令 创建Docker用户组,避免使用sudo 查看DOCKER的一些信息 一个例子 docker搭建爬虫环境 网上直接pull下一个Images 自己做的image 安装docker 自己的电脑安装官网的安装没有安装成功,可能是没法上外网的原因,如果你...

TiramisuForever 1万+

docker基础知识

一.简介 1.概念 容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。 开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。 2.与虚拟机的区别 容器在 Host 操作系统的用户空间中运行,与操作系统的其他进程隔离。这一点显著区别于的虚拟机。 传统的虚拟化技术,比如 VMWare, KVM, Xe...

weixin_43667990的博客 285

docker ,nvidia-docker,docker-compose和nvidia-docker-compose的安装配置

预先安装:Ubuntu14.04,SSH,GIT,CUDA-8.0一、安装docker安装最新版// 1. 安装必要的一些系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common // 2. 安装GPG证书 curl -f...

大白机器人的博客 2840

安装Docker详细步骤总结

一、安装Docker ♦️ 1.下载关于Docker的依赖环境 在Xterm中输入以下代码安装依赖环境 回车 yum -y install yum-utils device-mapper-persistent-datalvm2 使用yum工具下载 yum是软件包管理工具 通过 执行 man yum 可以查看yum的帮助信息 ♦️2.设置一下下载Docker的镜像源 依赖环境下载完毕以后,设置下载的镜像源,如果不设置,会默认去Docker的官方下载,但是官方的服务器在国外,下载会比较缓慢,设置下载国内的镜

哈哈 13万+

【Docker】使用 Docker Compose 部署 Docker Registry

在内网环境中,我们期望能够在本地共享镜像。registry服务就是我们镜像仓库的服务,web服务会给我们提供一个可视化的web页面,方便我们查看镜像,web服务中配置的环境变量就是我们仓库服务registry的ip和端口。通过使用 Docker Compose,我们可以轻松地在本地部署 Docker Registry,并开始使用自己的私有镜像存储。如果我们想把镜像推送到公网,那么我们就可以使用阿里云容器镜像,虽然个人容器镜像托管服务是限额使用的,但额度对于我们个人使用的话已经足够了。

wjianwei666的专栏 883

RNA-Seq数据分析实战:从FastQC到STAR比对的完整流程(附避坑指南)

本文提供了RNA-Seq数据分析从FastQC质控到STAR比对的完整实战流程与避坑指南。详细解读了FastQC/MultiQC报告的关键指标,并重点阐述了STAR比对工具的核心参数设置、索引构建及性能优化策略,旨在帮助用户获得准确可靠的比对结果,为下游基因表达分析奠定坚实基础。

weixin_29290259的博客 92

Docker的体系架构3

docker架构

weixin_52807554的博客 721

从临床试验到互联网AB测试:边缘结构模型(MSM)如何解决‘时依性混杂’这个老大难问题

本文探讨边缘结构模型(MSM)如何解决时依性混杂问题,适用于临床试验和互联网AB测试。通过逆概率加权(IPTW)等方法,MSM能有效剥离混杂效应,准确评估长期干预效果。文章结合跨领域案例,详细解析MSM的核心原理、实施步骤及在推荐算法效果评估中的实战应用,帮助读者掌握这一先进因果推断工具。

weixin_28725949的博客 207

Docker入门学习教程

Docker入门学习,适合新手小白,从安装到代码实践。

Kint的博客 3454

HFSS 3D Layout一键导入PCB,高效搞定微带线损耗仿真

在高速PCB设计中,信号完整性与电磁仿真是确保链路质量的关键环节。传统的HFSS手动建模流程繁琐且极易出错,尤其面对微带线、带状线等高频结构时,叠层参数、铜箔粗糙度等细节难以精准还原,导致仿真结果与实测偏差较大。HFSS 3D Layout模块提供了从EDA工具直接导入PCB文件的能力,完整保留走线、过孔、叠层及材料属性,结合精确的介质损耗模型与端口设置,大幅缩短建模时间并提升仿真精度。该技术广泛应用于DDR、SerDes等高速数字链路的设计验证,以及SI/PI工程师对PCB损耗性能的快速评估。本文从导入操

weixin_29191081的博客 256

嵌入式面试|MCU+RTOS技术栈——面试八股文整理3:STM32

stm32

weixin_44800059的博客 1901

【docker】linux系统docker的安装及使用

然后,只要一个命令,就能同时启动/关闭这些容器。阿里云:http:**//mirrors.aliyun.com/docker-ce/linux/centos/**docker-ce.repo 清华大学源:https:**//mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/**docker-ce.repo。注:所有docker容器的卷,没有指定目录情况下(具名挂载和匿名挂载),都在 /var/lib/docker/volumes/ 下。

Best_lgx的博客 8756

Android 12 HAL开发避坑实录:手把手教你用AIDL在Native层实现一个可开机自启动的Service

本文详细介绍了在Android 12 HAL开发中,如何通过AIDL在Native层实现一个可开机自启动的Service。从环境准备、AIDL接口定义、服务实现到VINTF集成与SELinux策略配置,提供了完整的实战指南,帮助开发者避开常见陷阱,提升开发效率。

weixin_28314575的博客 321

Linux docker及docker-compose安装教程

本文介绍了Linux系统中Docker和Docker-Compose的安装方法。在x86架构下,提供了联网和离线两种安装方式:对于Ubuntu系统可使用阿里云源在线安装,CentOS/AnolisOS系统可通过官方仓库或阿里镜像源安装;离线安装则需下载对应版本的安装包进行手动配置。同时详细说明了Docker服务配置、权限设置和开机自启等步骤。对于Docker-Compose的安装,给出了在线下载最新版本的命令。文中包含完整的代码示例,涵盖从安装到验证的全部流程,适用于不同Linux发行版的Docker环境部

qq_35861227的博客 4075

C++语言程序设计教程第4版杨进才沈显君课后习题答案解析

为了更好地学习这门课程,我尝试在网上寻找一些学习资料和参考书籍,但效果并不是很理想。因此,我希望能有一些学长学姐或者是有经验的程序员能够分享一些学习经验和方法,让我更好地掌握这门课程。学习过程中,我发现这本书的内容非常丰富,讲解也非常详细,对于像我这样编程基础薄弱的学生来说,是一本非常实用的教材。同时,我也希望有经验的程序员能够推荐一些适合初学者的C++语言学习资料和工具,以便我能更好地学习和掌握这门课程。总之,希望能得到大家的帮助和支持,让我更好地学习和掌握C++语言程序设计。主 编: 杨进才,沈显君。

weixin_58833001的博客 1334

UI渲染顺序:合批为何被拆碎?

在 Hierarchy 中,避免出现:Image(列表1) → Text(列表1) → 特效 → Image(列表2) → Text(列表2)…若可行,在逻辑上把布局组织成“同类元素集中”:例如:列表行中,Image 集中、Text 集中;或者接受 Text 本身就拆出一批,关键是不要在 Text 中间再插入别的材质。现实中不一定能做到完美的“所有 Image 连在一起”,但你会有一个意识:同一 Canvas 内,如果你把不同材质的元素交错穿插,

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 85

Java技术栈 —— Docker入门

docker的本意是码头工人。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。[1]一、参考文章或视频链接[1]《Docker》- 百度百科[2]Docker - 官方。

键盘国治理专家的博客 2106

ATE FT ChangeKit学习总结-20250630

半导体封装测试中的ChangeKit是Handler测试机的关键配套治具,主要用于适配不同芯片封装尺寸的FT测试。其主要特点包括:1)适应性,可快速切换不同测试设置;2)精准性,确保器件测试安全;3)高效性,减少停机时间。主要组件含Shuttle传送机构、HotPlate预热盘、DockPlate连接件和Contactor压头。设计需考虑Handler型号、芯片规格及PCB匹配(如140mm标准孔位),特别在低温测试时需注意吹气块布局。ChangeKit实现了测试设备的灵活配置,提升了半导体测试效率。

歌颂苦难的行为是无耻的; 1754

docker in docker使用方式

挂载主机docker文件 方式1:挂载主机上的docker.sock以及docker二进制文件 docker run -it \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ centos docker version 方式2:挂载主机docker.sock并在容器中安装docker客户端 docker run -it \ -v /var/run/docker.sock

IT 4284

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Docker in docker 实现

Docker in docker 文章目录Docker in docker原理实现(centos7)常见问题参考 在docker容器内运行docker一般是不被倡导的。但有些场景和业务上,需要在容器内使用docker对组件进行编译构建,不同的组件所需的依赖有不一致,不同自建相互之间的依赖很可能相互干扰(比如需要同一个组件的不同版本),因此docker-in-docker的解决方案被提出来了, 一般被用于CI或集成测试。 原理 通过将主机上的docker.sock挂载至容器内,实现共享主机的docker.so

SinkRain 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

docker in docker 在CI中应用解析

docker里嵌套运行docker,本文讲解其在jenkins和gitlab-runner 种的调用流程。

专注于输出大概有用的软硬件技术! 1598

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

此docker compose非彼docker-compose

维度docker-composedocker compose安装方式独立可执行文件(standalone)Docker 插件(plugin)对应版本Compose V1Compose V2命令格式短横线连接(docker-compose)空格分隔(docker compose)集成度独立工具,需单独安装集成在 Docker CLI 中推荐程度旧版,逐步淘汰官方推荐 ✅依赖独立二进制文件依赖 docker-compose-plugin。兼容性:docker-compose 在旧版本中更稳定,适合遗留系统。

爱码少年 00fly.online 的博客 2万+

dind(docker in docker)学习

docker in docker 说白了,就是在docker容器内启动一个docker daemon,对外提供服务。 优点在于: 镜像和容器都在一个隔离的环境,保持操作者的干净环境。 想到了再补充 :) 一:低版本启动及访问 启动1.12.6-dind docker run --privileged -d --name mydocker docker:1.12.6-dind 在其他容器访问 d...

IT老吴的博客 1万+

Docker API(Registry API、Docker Hub API、Docker Remote API)

一、Docker API简介 在Docker生态系统中一共有3种API: Registry API:提供了与来存储Docker镜像的Docker Registry继承的功能 Docker Hub API:提供了与Docker Hub继承的功能 Docker Remote API:提供与Docker守护进程集成的功能 这3种API都是RESTful风格的 本文我们主要介绍Remote API,因为它是通过程序与Docker进行继承和交互的核心内容 二、初识Remote API Remo

董哥的黑板报 5132

ARM架构下安装新版docker及docker-compose

【代码】ARM架构下安装新版docker及docker-compose。

qq_35861227的博客 3587

ubuntu20.04 安装docker,docker-compose

ubuntu20.04 安装docker,docker-compose

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 6439
上一篇: windows安装两个tomcat
下一篇: nginx
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值