Docker技术

2018-01-21  本文已影响0人  巨子联盟
image.png

Union FS: 是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统

Cgroups:实现对资源的配额和度量

Namespaces:LXC所实现的隔离性,主要来自kernel的namespaces,
其中PID、NET、IPC、MNT、UTS等namespace将container的进程、
网络、消息、文件系统、UTS和用户空间隔离开

LXC: Linux Container,提供了一种操作系统级的虚拟化方法。
借助namespaces和cgroups来管理container

image.png image.png
  1. 检查内核
    运行Linux3.8或更高的版本内核
    运行64位CPU架构的计算机(目前只能是x86_64和amd64),目前不支持32为CPU
    内核必须支持并开启cgroup和命名空间(namespace)功能
[root@registry ~]# uname -a
Linux registry.qiku.com 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  1. 检查Device Mapper
    检查 /proc/devices 是否有Device Mapper 条目
[root@registry ~]# grep device-mapper /proc/devices
253 device-mapper

3 安装方法
安装方式:
yum或apt-get
sudo yum install docker 或 sudo apt-get install docker
RPM 文件安装

sudo wget ftp://rpmfind.net/linux/mageia/distrib/cauldron/x86_64/media/core/release/docker-17.03.1-3.mga6.x86_64.rpm
     sudo rmp -Uvh docker-17.03.1-3.mga6.x86_64.rpm

脚本安装

     sudo yum update
     curl -sSL https://get.docker.com/ | sh 
     sudo service docker start

源码编译安装

sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

sudo yum install -y docker-engine 
sudo service docker start 
sudo chkconfig docker on
或
sudo systemctl start docker.service
sudo systemctl enable docker.service

-### Docker命令

image.png
#拉取
docker pull registry.domain.com:5000/repos:<tag_name>
docker pull dl.dockerpool.com:5000/mongo:latest
[root@registry ~]# docker images --no-trunc
REPOSITORY                                         TAG                 IMAGE ID                                                                  CREATED             SIZE
dockermaster_master                                latest              sha256:76c86913b2bf78349fbeee7f7eff4c538a2d9b9ad6073b0dd216a128f7ab4681   38 hours ago        940MB
<none>                                             <none>              sha256:2a6d16993de0256f4d77a2585fed1b076399d1f4454c58dc56fa275e37cc303a   38 hours ago        940MB
mavencentos                                        latest              sha256:8b23262eab3dbec329f3c5000a2e8c1e516eb6d60d4cc38126dc6f4e4213311d   38 hours ago        791MB
 docker tag 195eb90b5349 seanlook/ubuntu:rm_test
 docker tag Registry/Repos:Tag New_Registry/New_Repos:New_Tag
image.png
docker run –it –name centos1 centos
docker run -d -p 5000:5000 --restart always --name registry[别名] registry[镜像名称]
docker run -d --restart=always --name test_container1  ubuntu /bin/bash -c "while true; do echo hello world ; sleep 1; done"  

run 参数:
-i:选项表示使用交互模式,始终保持输入流开放
-t: 选项表示分配一个伪终端
--name:可以指定docker run 命令启动的容器名字,若无此项Docker容器将随机分配一个名字
-d: 选项表示将容器在后台运行。
-p:选项用户将容器的端口暴露给宿主机的端口,格式host-port:container-port
-v:用于挂载一个volume 可以用多个-v参数同时挂载多个volume。Volume的格式为[host-dir]:[container-dir]:[rw:ro]
-c: 选项表示用于运行容器中的所有进程分配CPU的shares值,这时一个相对权重,实际的处理速度与宿主机的CPU相关。
-m: 选项表示用户限制为容器中所有的进行分配的内存总量,以B,K,M,G为单位


ps -ef|grep docker
docker top 5289df0834bf
docker top wiki
oot@registry docker]# docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                              NAMES
1b7dc14d617a        dockermaster_master   "/bin/tini -- /usr..."   39 hours ago        Up 39 hours         0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp   dockermaster_master_1
[root@registry docker]# docker stats 1b7dc14d617a
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
1b7dc14d617a        0.05%               789.5MiB / 3.702GiB   20.83%              2.11MB / 580kB      53.9MB / 318kB      53
docker logs [OPTIONS] CONTAINER
docker logs --tail 10 CONTAINER –获取容器日志的最后10行
docker logs --tail 0 -f CONTAINER ----获取容器的最新日志而不必读整个文件
docker logs --tail 10  -t -f  CONTAINER --- -t标志为每条日志项加上时间戳。
docker run --name test_container -d ubuntu /bin/sh –c "while true; do echo hello world; sleep 1; done"
Driver Description
none No logs will be available for the container and docker logs will not return any output.
json-file The logs are formatted as JSON. The default logging driver for Docker.
syslog Writes logging messages to the syslog facility. The syslog daemon must be running on the host machine.
journald Writes log messages to journald. The journald daemon must be running on the host machine.
gelf Writes log messages to a Graylog Extended Log Format (GELF) endpoint such as Graylog or Logstash.
fluentd Writes log messages to fluentd (forward input). The fluentd daemon must be running on the host machine.
awslogs Writes log messages to Amazon CloudWatch Logs.
splunk Writes log messages to splunk using the HTTP Event Collector.
etwlogs Writes log messages as Event Tracing for Windows (ETW) events. Only available on Windows platforms.
gcplogs Writes log messages to Google Cloud Platform (GCP) Logging.
nats NATS logging driver for Docker. Publishes log entries to a NATS server.

上一篇 下一篇

猜你喜欢

热点阅读