docker-01

Docker 基本概念:

  • 镜像(Image):像是用于创建 Docker 容器的模板
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
  • Docker Machine:是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker
  • Docker 主机(Host): 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
  • Docker daemon:是一个运行在宿主机( DOCKER-HOST)的后台进程。可通过 Docker客户端与之通信
  • Client( Docker客户端):是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon通信
    在这里插入图片描述

安装

Docker 要求 CentOS 系统的内核版本高于 3.10 通过 uname -r 命令查看你当前的内核版本

uname -r

使用 root 权限登录 Centos。确保 yum 包更新到最新(可选)。

yum -y update

移除旧版(非必须,如果安装过):

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

安装依赖:

 yum install -y yum-utils device-mapper-persistent-data lvm2

添加yum源,更新 yum 缓存

 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 yum makecache fast

查看所有版本

yum list docker-ce --showduplicates | sort -r

安装docker:

 yum -y install docker-ce-18.03.1.ce  # 这是指定版本安装
 yum -y install docker-ce  # 这是安装最新稳定版

启动/开机启动

systemctl start docker && systemctl status docker && systemctl enable docker

测试运行

docker version
docker run hello-world

删除:

yum remove docker-ce
rm -rf /var/lib/docker

重启docker服务

systemctl daemon-reload
systemctl restart docker

配置文件:

  /etc/sysconfig/docker
  /usr/lib/system/docker.service

日志:

var/log/message |grep docker

镜像

搜素镜像

docker search java
  - NAME:镜像仓库名称。
  - DESCRIPTION:镜像仓库描述。
  - STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于 GitHub的 stars0
  - OFFICAL:表示是否为官方仓库
  - AUTOMATED:表示是否是自动构建的镜像仓库。
  • 查看镜像
docker images 

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
镜像 【需要带上版本号,默认latest 版本】

下载

docker pull java:8

删除 【需要带上版本号,默认latest 版本】

docker rmi java:8

删除所有的镜像

docker rmi $(docker images -q)

容器

	使用以下docker run命令即可新建并启动一个容器
	-d选项:表示后台运行
	--name mynginx:将容器命名为mynginx
	-v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
	-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf
	-v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs
	-P选项:随机端口映射
	-p选项:指定端口映射,有以下四种格式。 
	-- ip:hostPort:containerPort 
	-- ip::containerPort
	-- hostPort:containerPort 
	-- containerPort
	--net选项:指定网络模式,该选项有以下可选参数:
	--net=bridge:默认选项,表示连接到默认的网桥。
	--net=host:容器使用宿主机的网络。
	--net=container:NAME-or-ID:告诉 Docker让新建的容器使用已有容器的网络配置。
	--net=none:不配置该容器的网络,用户可自定义网络配置。
docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs  -d nginx

常用命令

列出所有的容
docker ps -a
查看容器所有信息
docker inspect f0b1c8ab3633
查看容器日志
docker container logs f0b1c8ab3633
查看容器进程
docker top f0b1c8ab3633
停止容器
docker stop f0b1c8ab3633
强制停止
docker kill f0b1c8ab3633
停止所有的容器
docker stop $(docker ps -aq)
删除容器   -f 强制删除正在运行的容器
docker rm f0b1c8ab3633
删除所有的容器
docker rm $(docker ps -aq)
进入容器
docker exec -it f0b1c8ab3633 /bin/bash  (有的容器需要把 /bin/bash 换成 sh)
退出
exit
导出容器(导出容器快照到本地文件))
docker export f0b1c8ab3633 > xyz.tar
导入容器快照,以下实例将快照文件 xyz.tar 导入到镜像 test/ubuntu:v1:
$ cat docker/xyz.tar | docker import - test/ubuntu:v1
也可以通过指定 URL 或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
  • -t: 在新容器内指定一个伪终端或终端。
  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。

容器与宿主机相互复制文件

从容器里面拷文件到宿主机:
docker cp 7aa5dc458f9d:/etc/nginx/nginx.conf /mydata/nginx

从宿主机拷文件到容器里面:
docker cp 要拷贝的宿主机文件路径 容器id:要拷贝到容器里面对应的路径

Docker虚拟化原理

Docker是如何将机器的资源进行隔离的?
答案是:联合文件系统,常见的有AUFS、Overlay、devicemapper、BTRFS和ZFS等。
写时复制(Cow全称copy-on-write)只是在需要写时才去复制,这个是针对已有文件的修改场景 用时分配
(allocate-on-demand) 针对原本没有这个文件的场景

镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker
官方和国内很多云服务商都提供了国内加速器服务,例如: 网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:

在这里插入图片描述
配置完后要重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值