`

Docker

阅读更多
概念:
虚拟机是虚拟出一套硬件,虚拟机的系统进行的磁盘操作,其实都是在对虚拟出来的磁盘进行操作。当运行 CPU 密集型的任务时,是虚拟机把虚拟系统里的 CPU 指令“翻译”成宿主机的CPU指令并进行执行。两个磁盘层,两个处理器调度器,两个操作系统消耗的内存,所有虚拟出的这些都会带来相当多的性能损失,一台虚拟机所消耗的硬件资源和对应的硬件相当,一台主机上跑太多的虚拟机之后就会过载。
Docker 运行应用采取的是“容器”的解决方案:使用 namespace 和 CGroup 进行资源限制,和宿主机共享内核,不虚拟磁盘,所有的容器磁盘操作其实都是对 /var/lib/docker/ 的操作。简言之,Docker 其实只是在宿主机中运行了一个受到限制的应用程序。
==================================================
mac下安装:
docker toolbox:
https://www.docker.com/products/docker-toolbox
使用docker quickstart terminal启动终端 不要选择item

说明:
kitematic:可视化image可安装列表
virtualbox:默认安装了64位linux 运行docker
所有的镜像以及安装都在virtualbox虚拟的linux中
-------------------------------------------------------
ubuntu:
系统安装时 分辨率问题重洗执行一遍硬盘驱动
Devices-install guest additon CD image

sudo apt-get update
sudo apt-get install docker.io

service docker start
service docker stop
service docker restart

使用时先sudo su
==================================================
国内镜像中心
https://c.163.com/hub#/m/home/

可以在/etc/docker/目录下
touch daemon.json (没有的话 添加一个)
vi daemon.json
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

==================================================
命令:
---------------------------------------------------------------------
docker version
--------------------------------------
docker info
--------------------------------------
#本地镜像列表
docker images
--------------------------------------
#删除镜像
docker rmi IMAGE ID
docker rmi -f IMAGE ID
#删除所有镜像
docker rmi $(docker images | grep none | awk '{print $3}' | sort -r)
--------------------------------------
docker history IMAGE ID
--------------------------------------
docker search centos
docker pull ubuntu:14.04
#通过163镜像中心下载镜像
docker pull hub.c.163.com/library/ubuntu:latest
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               302fa07d8117        11 days ago         188 MB
--------------------------------------
#查看所有容器
docker ps -a
#查看运行的容器
docker ps
#查看最近一次启动的容器
docker ps -l
docker ps -q
--------------------------------------
#创建容器名称为hihihi <镜像 ID>:b47daa16e381
docker create  --name hihihi  b47daa16e381
--------------------------------------
docker run -dit 302fa07d8117 /bin/bash
docker run <相关参数> <镜像 ID> <初始命令>
/bin/bash:初始命令 表示容器启动时立即在容器内打开一个shell终端
<命令>&&<命令> 执行多条命令
-i:表示以“交互模式”运行容器
-t:表示容器启动后会进入其命令行
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
-d:后台以守护状态运行
-p:-p 8081:8080 宿主8081对应容器8080
-e:指定env
-h:host
--name:指定容器的名字
--rm:容器运行完毕会自动删除 --rm=true

所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下
docker run -i -t -d -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash

可以启动  IMAGE ID : 302fa07d8117
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
25ad28c234fc        302fa07d8117        "/bin/bash"         14 seconds ago      Exited (0) 4 seconds ago                       loving_aryabhata
--------------------------------------
#进入容器进行操作 CONTAINER ID : 25ad28c234fc
docker attach 25ad28c234fc
--------------------------------------
docker start 25ad28c234fc
ctrl+d 关闭容器并退出
ctrl+q+p 退出
--------------------------------------
docker restart 25ad28c234fc
--------------------------------------
docker stop 25ad28c234fc
--------------------------------------
#快速地强制关闭容器
docker kill 25ad28c234fc
--------------------------------------
docker rm 25ad28c234fc
#删除所有容器
docker rm $(docker ps -a -q)
--------------------------------------
docker logs 25ad28c234fc
#查看容器root用户 用户名密码
docker logs 25ad28c234fc 2>&1 | grep '^User: ' | tail -n1
#实时查看容器日志
docker logs -f <容器名orID>
--------------------------------------
docker inspect <容器名orID>
#查看Volumes项
docker inspect -f  '{{.Volumes}}' 5c43ba5e5cae
--------------------------------------
#备份
docker export 5c43ba5e5cae >ubuntu_container.tar
docker save 5c43ba5e5cae >ubuntu_container.tar
--------------------------------------
cat ubuntu_container.tar |docker import - ubuntu:container 
docker load <ubuntu_container.tar
--------------------------------------
docker build
目录(/home/samson/testimage/)下有Dockerfile文件

Dcokerfile内容:
# Version 0.2
# 基础镜像
FROM ubuntu:latest
# 维护者信息
MAINTAINER shiyanlou@shiyanlou.com
# 镜像操作命令
RUN apt-get -yqq update && apt-get install -yqq apache2 && apt-get clean
RUN apt-get install -yqq supervisor
RUN mkdir -p /var/log/supervisor
VOLUME ["/var/log/apche2"]
ADD html.tar /var/www
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
WORKDIR /var/www/html
ENV HOSTNAME shiyanloutest
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apche2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apche2
EXPOSE 80
# 容器启动命令
CMD ["/usr/bin/supervisord"]

-t参数指定镜像名称
docker build -t testimage:0.2 /home/samson/testimage/
--------------------------------------
#显示容器中运行的进程信息
docker top 5c43ba5e5cae
--------------------------------------
#复制宿主文件asdfasdfas到容器5c43ba5e5cae的root目录下
docker cp asdfasdfas  5c43ba5e5cae:/root
docker cp 5c43ba5e5cae:/root/asdfasdfas /home
#复制宿主文件夹m内容到容器5c43ba5e5cae的root目录下
docker cp /m  5c43ba5e5cae:/root
--------------------------------------
#查看容器文件结构更改
docker diff 5c43ba5e5cae
--------------------------------------
#在容器5c43ba5e5cae中执行ls /home命令 可以执行容器中的一个shell脚本
docker exec  -t -i  -d 5c43ba5e5cae  ls /home
--------------------------------------
#需要名称
docker rename 5c43ba5e5cae testrename
--------------------------------------
#从容器创建一个新的镜像
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1
docker images mymysql:v1
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mymysql             v1                  37af1236adef        15 seconds ago      329 MB
修改容器后 执行commit后成为新的image 然后停止&删除旧的容器 启动新的image
--------------------------------------
#docker升级
sudo apt-get install apt-transport-https 
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update 
apt-get install -y lxc-docker
ln -sf /usr/bin/docker /usr/local/bin/docker 
docker version

--------------------------------------
#nsenter
docker inspect -f {{.State.Pid}} 容器id
5270
nsenter --target 5270 --mount --uts --ipc --net --pid

---------------------------------------------------------------------

分享到:
评论

相关推荐

    docker-compose安装包

    Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录...

    docker&docker-compose 19.03.14二进制安装

    在IT行业中,Docker和Docker Compose是两个极为重要的工具,它们在容器化应用程序部署和管理方面扮演着核心角色。本文将详细讲解如何通过二进制方式安装Docker 19.03.14及其配套的Docker Compose,并讨论它们的主要...

    Docker Desktop for Windows 10 (Docker Desktop Installer.exe)

    资源名称: Docker Desktop for Windows 10 (Docker Desktop Installer.exe) 概述: Docker Desktop for Windows 10 是一个官方提供的强大工具,它允许用户在Windows 10操作系统上轻松运行Docker容器化应用。Docker ...

    ubuntu20.04下docker及nvidia-docker安装包

    1)nvidia-docker:libnvidia-container1_1.4.0-1_amd64.deb ,libnvidia-container-dev_1.4.0-1_amd64.deb,libnvidia-container-tools_1.4.0-1_amd64.deb,nvidia-container-runtime_3.5.0-1_amd64.deb,nvidia-...

    docker一键离线安装

    Docker 离线一键安装步骤: 1. 将该目录下的docker文件夹上传至服务器任意位置: 2. 将当前目录切换至上传后的文件目录中,执行以下脚本: sh install.sh docker-19.03.9.tgz 3. 等待执行完成,即可安装完成。 该...

    MySQL5.7docker离线包

    Docker 离线安装 MySQL 5.7 使用说明 本文将指导你如何使用离线的 Docker 镜像包 (docker-mysql-5.7.tar.zip) 来在 Linux 系统中安装并运行 MySQL 5.7 容器。 前提条件 • 已安装 Docker 环境。 • MySQL 5.7 ...

    Windows版本docker安装包

    Docker在IT行业中是一款非常重要的容器化平台,它允许开发者将应用程序及其依赖打包到一个可移植的容器中,便于在各种环境中快速部署和运行。在Windows操作系统上安装Docker,可以借助Docker Desktop或者Docker ...

    centos7.6离线安装docker-ce-19.03、nvidia-docker2

    离线环境下,在centos7.6系统上安装docker-ce-19.03,nvidia-docker2.4版本,其中docker-ce-19.03在docker-local.tar压缩文件里面,nvidia-docker2在nvidia-docker2.zip文件中。 具体安装流程如下: 1.安装docker ...

    Ubuntu docker 20.10.12版本和docker-compose离线安装包

    在IT行业中,Docker和Docker Compose是两个非常重要的工具,它们被广泛应用于容器化应用程序的部署和管理。Ubuntu是流行的Linux操作系统,它为Docker提供了良好的支持。本资源包提供的是Ubuntu 20.10.12版本上的...

    arm 架构 docker运行nginx镜像包

    arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构 docker运行nginx镜像包,arm 架构...

    Windows版本Docker桌面版安装包

    Docker Desktop 是一款强大的开发工具,使开发者能够在 Windows 环境中高效构建、共享和运行容器化应用程序。它提供了一种无缝的开发体验,允许用户通过简单的图形界面和命令行工具来管理 Docker 容器和镜像。 ...

    docker快速集成wkhtmltopdf

    docker集成wkhtmltopdf,安装包就是封装好的镜像文件,直接解压执行就可以; -- 解压镜像包&lt;上面安装包&gt; docker load -- 运行docker docker run -itd -v /data/share:/data/share -m 8G --name="wkhtmltopdf" ...

    docker18.09 离线安装包

    安装docker 获取root 权限 su root 拷贝所有文件到 /opt/docker/ (如果没有 docker目录执行 mkdir -p /opt/docker) yum localinstall -y /opt/docker/*.rpm 安装docker-compose cd /opt/docker/ tar ...

    liunx系统docker离线升级

    sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine ``` 接下来,安装新...

    Docker基础入门到实战视频教程.rar

    Docker基础入门到实战 网盘文件永久连接 01.Docker基本概念和框架 01.Docker -课程介绍 02.Docker -Docker 简介 03.Docker -Docker 的基本组成 04.Docker -Docker 容器相关技术简 02.Docker的安装和部署 01.Docker...

    windows7 安装docker包 DockerToolbox18.03.0.zip

    在Windows 7上安装Docker应用通常涉及到使用Docker Toolbox,因为Docker的官方版本对Windows 7的支持有限。Docker Toolbox是一个包含了多个工具的集合,它为旧版Windows操作系统(如Win7和Win8)提供了运行Docker的...

    Docker搭建SRS视频服务器

    Docker搭建SRS视频服务器 Docker 搭建 SRS(Simple Realtime Server)视频服务器是一种便捷的部署方式,利用 Docker 容器化技术可以快速实现流媒体服务环境的一键安装与运行。SRS 是一个高性能、易于扩展的实时流...

    arm64 docker安装包

    在Linux ARM64架构上,Docker和Docker Compose是两种非常重要的容器化技术工具。Docker使得应用程序可以被封装在轻量级的容器中,实现可移植性和隔离性,而Docker Compose则允许用户通过YAML配置文件来定义和运行多...

    docker-ce-26.1.0使用yum安装包

    说明:在最小化CentOS Linux release 7.6.1810 中制作yum源,docker-ce是centos 7系统x86架构rpm包。 使用: 1、上传文件到/data/docker-ce解压,或者任意目录后修改docker-ce-26.1.0.repo 中baseurl路径。 2、mv ...

    4.4.4版本windows-docker.zip

    【标题】4.4.4版本Windows Docker是一个针对Windows操作系统的Docker容器化平台的特定版本,它提供了在Windows上运行Linux和Windows容器的能力。这个版本可能是针对4.4.4版Docker Engine进行优化和更新的,确保了在...

Global site tag (gtag.js) - Google Analytics