docker命令

容器内init进程方案

白昼怎懂夜的黑 提交于 2020-03-08 23:54:18
进程标识符 (PID) 是Linux 内核为每个进程提供的唯一标识符。熟悉docker的同学都知道, 所有的进程 PID都属于某一个PID namespaces, 也就是说容器具有一组自己的 PID,这些 PID 映射到主机系统上的 PID。启动Linux内核时启动的第一个进程具有 PID 1,一般来说该进程就是 init 进程,例如 systemd 或 SysV。同样,在容器中启动的第一个进程也会获得该PID namespaces内的 PID 1。Docker 和 Kubernetes 使用信号与容器内的进程通信,来终止容器的运行, 只能向容器内 PID 1 的进程发送信号。 在容器的环境中,PID 和 Linux 信号会产生两个需要考虑的问题。 问题 1:Linux 内核如何处理信号 对于具有 PID 1 的进程,Linux 内核处理信号的方式与其他进程有所不同。系统不会自动为此进程注册信号处理函数,SIGTERM 或 SIGINT 等信号默认被忽略,必须使用 SIGKILL 来终止进程。使用 SIGKILL 可能会导致应用程序无法平滑退出,例如正在写入的数据出现不一致或正在处理的请求异常结束。 问题 2:经典 init 系统如何处理孤立进程 宿主机上的init进程(如 systemd)也用来回收孤儿进程。孤儿进程(其父级已结束的进程)会重新附加到 PID 1 的进程,PID

docker

余生颓废 提交于 2020-03-08 22:23:07
Docker 入门到精通 """ 1)docker就是Linux上及其轻量的虚拟机 2)虚拟机是存在宿主系统中,通过镜像给宿主系统拓展子系统的(一个镜像理论上可以做n个子系统) 3)两个特别重要的概念 image:镜像 container:容器(子系统) 4)工作方式: i)在服务器系统下载docker(为服务器安装虚拟机,服务器系统就是宿主系统) ii)用docker去下载对应需求的镜像:镜像操作 iii)通过镜像制造容器(装子系统):容器操作 5)优势 i)超级轻量级,docker安装的容器体积可以按kB度量 ii)集群部署,docker可以通过一个镜像制造出多个一模一样的容器 iii)便捷管理所有镜像与容器(命令行操作) 6)镜像和容器特点 一般一个镜像中只包含一种软件:比如mysql镜像,创建的容器中只有mysql环境;redis镜像,创建的容器中只有redis环境 注:一个镜像中有多个环境的需要自己制作镜像 """ CentOS安装Docker 设置管理Docker的仓库 """ 1)安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2)安装稳定仓库 yum-config-manager --add-repo https://download.docker.com/linux

nsenter工具 通过docker pid进入到docker容器里

元气小坏坏 提交于 2020-03-08 17:07:13
pid 可以是dockerID 也可以是docker 里面起的进程ID ##安装 wget https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.32/util-linux-2.32.tar.gz tar -xzvf util-linux-2.32.tar.gz cd util-linux-2.32/ ./configure --without-ncurses make nsenter cp nsenter /usr/local/bin ##为了连接到容器,我们还需要找到容器的第一个进程的PID,可以通过下面的命令获取 PID=$(docker inspect --format "{{ .State.Pid}}" <container id>) top nsenter --target PID --mount --uts --ipc --net --pid ##进入到docker之后 env ##查看环境变量信息 获取到docker 的hostname 这是docker 编号 docker inspect 容器编号 ##查看容器详细信息 来源: 51CTO 作者: dwl1988721 链接: https://blog.51cto.com/1014810/2475215

RHEL7 Docker 虚拟化使用(二)

给你一囗甜甜゛ 提交于 2020-03-08 13:03:27
Docker是一个开源工具,它可以让创建和管理 linux 容器变得简单。容器就像是轻量级的虚拟机,作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多优势。 环境: Centos 7 ip:172.16.1.10 Docker version 1.13.1 运行一个容器、“-i”捕获标准输入输出、“-t分配一个控制台” [root@localhost ~]# docker run -i -t centos /bin/bash [root@86a46aa13531 /]# ls bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@86a46aa13531 /]# 创建镜像 -a 作者信息,-m 提交信息,-p 提交时暂停容器运行,如果提交成功会返回一个id数字串。 [root@localhost ~]# docker commit -m "aaa" -a "chao" 86a46aa13531 sha256:6efd478542f1a99b20796c9372c2976b87344263a051dbf39fd385ea4dbb8873 查看镜像 [root@localhost ~]# docker images

《云计算》docker进阶:制作自定义镜像

痞子三分冷 提交于 2020-03-08 10:08:33
1 案例1:制作自定义镜像 1.1 问题 本案例要求制作自定义镜像: 基于centos镜像使用commit创建新的镜像文件 基于centos镜像使用Dockerfile文件创建一个新的镜像文件 1.2 步骤 实现此案例需要按照如下步骤进行。 步骤一:使用镜像启动容器 1)在该容器基础上修改yum源 [root@docker1 docker_images]# docker run -it centos [root@8d07ecd7e345 /]# rm -rf /etc/yum.repos.d/* [root@8d07ecd7e345 /]# vi /etc/yum.repos.d/dvd.repo [dvd] name=dvd baseurl=ftp://192.168.1.254/system enabled=1 gpgcheck=0 [root@8d07ecd7e345 /]# yum clean all [root@8d07ecd7e345 /]# yum repolist 2)安装测试软件 [root@8d07ecd7e345 /]# yum -y install net-tools iproute psmisc vim-enhanced 3)ifconfig查看 [root@8d07ecd7e345 /]# ifconfig eth0: flags=4163<UP

服务器重启后启动Docker命令

主宰稳场 提交于 2020-03-08 07:58:19
启动步骤: 1、启动Docker 守护进程 systemctl daemon-reload 2、Docker启动命令:   systemctl start docker 3、查看docker服务是否启动   ps -ef |grep docker 4、查看docker启动的服务: docker ps 其他: 重启docker服务 systemctl restart docker 停止docker服务 systemctl stop docker 来源: https://www.cnblogs.com/zmdComeOn/p/11835718.html

把.net Core 项目迁移到VS2019 for MAC

半城伤御伤魂 提交于 2020-03-07 19:06:25
VS2019 for MAC已经发布很长时间了,本以为项目移过去很麻烦,一直没有动作,最近呆家里快发霉了,决定研究研究,没想到一句代码都不需要动,直接完功,这下可以生产了。同学们可以放心整了。 本次平台的需求: MAC OS : mac OS Catalina 10.15.3 VS 2019 : VS for Mac community 8.4.8 .net Core : Core 3.1 Sql Server : Docker Sql Server 2019 原平台: windows 10+vs2019 community+ core3.1 + sql server 2019 ========================= 一、安装VS 2019 下地地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 这里不管你下载的是专业版,社区版,还是企业版,安装完成都是社区版,用你的ID登陆后,才会改变版本 安装很快完成,上手基本没有难度,和win版一样,宇宙最强IDE 测试新建一个项目运行,没有问题。可是之前的项目是sql server 的。于是开始使用Docker Docker下载地址:https://www.docker.com 二、下载Docker Desktop for MAC 并 安装运行 配置国内镜像源

03-使用docker镜像

谁说我不能喝 提交于 2020-03-07 17:24:08
Docker镜像 镜像是Docker三个核心概念中最重要的,运行流程为 Docker运行——本地是否存在对应镜像——若不存在Docker尝试从默认镜像仓库下载,用户也可以自定义配置镜像仓库 获取镜像 格式为docker [image] pull NAME[:TAG] 其中NAME是镜像仓库名称,TAG是镜像的标签(往往用来代表版本),通常情况下描述一个镜像需要包括“名称+标签”信息 测试获取一个ubuntu 18.04的系统 [root@docker01 ~]# docker pull ubuntu:18.04 18.04: Pulling from library/ubuntu 423ae2b273f4: Downloading 15.25MB/26.69MB de83a2304fa1: Download complete f9a83bce3af0: Download complete 423ae2b273f4: Pull complete de83a2304fa1: Pull complete f9a83bce3af0: Pull complete b6b53be908de: Pull complete Digest: sha256:04d48df82c938587820d7b6006f5071dbbffceb7ca01d2814f81857c631d44df Status:

04-使用docker容器

坚强是说给别人听的谎言 提交于 2020-03-07 16:27:08
Docker容器 docker容器是另一个核心概念,容器是镜像的一个运行实例。不同的是镜像是静态的只读文件,容器带有运行时需要的可写层,并且容器中的应用进程处于运行状态。 虚拟机是模拟运行一整套操作系统,docker只运行一个应用和它的运行环境。 创建容器 新建容器,docker [container] create命令新建的容器处于停止状态 [root@docker01 ~]# docker create -it ubuntu:18.04 550c14d7db29b3fbcdff0819546403779f8ce717fa2a5012909b057c2f8b1806 [root@docker01 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 550c14d7db29 ubuntu:18.04 "/bin/bash" 34 seconds ago Created kind_rosalind 启动容器,docker [container] start命令来启动一个已经创建的容器 [root@docker01 ~]# docker start 55 55 [root@docker01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED

记录下安装docker和docker下安装mysql的过程

梦想的初衷 提交于 2020-03-07 13:37:52
一、docker的安装: 先查看自己额版本是否是3.10以上,或者centos7以上 1. uname -r 2. 安装docker命令: yum - y install docker - io 3.启动docker命令: service docker start 二、 docker上安装mysql 1. docker pull mysql (默认就是安装最新版的) 2. docker run -it --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql 命令解释: --name:容器名 --p:映射宿主主机端口 -e:设置环境变量,此处指定root密码 -d:后台运行容器 测试是否安装成功 然后可以本地navicat进行连接,我连接的时候报了个错. Client does not support authentication protocol requested by server; consider upgrading MySQL client mysql -h192.168.1.17 -p3306 -u root -p连接进去。然后设置下: ALTER user 'root'@ '%' IDENTIFIED WITH mysql_native_password BY 'root';