首页 > 代码库 > Docker学习笔记

Docker学习笔记

Docker是通过内核虚拟化技术来提供容器的资源隔离和安全保障等。由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机额外的操作系统开销,提高资源利用率。

 

Docker是一个基于LXC技术之上构建的Container容器引擎,源码托管在GitHub上,基于Go语言并遵从Apache2.0协议开源。

 

技术分享

技术分享

Docker与OpenStack对比

技术分享

OpenStack是基于KVM;Docker是基于LXC的;

 

Docker能干什么

技术分享

1.简化配置                        4.应用隔离                  7.多租户

2.代码流水线管理              5.服务器整合               8.快速部署

3.开发效率                        6.Debug调试                             

搜素镜像:docker search

获取镜像:docker pull 镜像名

查看镜像:docker images

导出镜像:docker save 镜像名> /opt/centos.tar.gz

导入镜像:docker load </opt/centos.tar.gz

删除镜像:docker rmi 镜像名或者ID

运行一个容器:docker run 镜像名命令

技术分享

 

docker run - 运行一个容器

-t - 分配一个(伪)tty (link is external)

-i - 交互模式 (so we can interact with it)

例子:docker run name mydocker -t -i centos /bin/bash

停止容器:docker stopCONTAINER ID

查看容器:docker ps -a -l

删除容器:docker rm

杀死容器:docker kill

进入容器:docker exec | dockerattach | nsenter(推荐使用这种,

如果没有这个nsenter命令,则需要装yum install util-linux这个包)

进入容器后按exit会退出容器,而且容器会自动终止,使用nsenter这种方法进入容器后exit退出,容器还是继续运行,不会自动终止。

技术分享

docker inspect format  {{.State.Pid}}容器ID   #获取容器进程的PID

docker run rm 可以执行容器后自己删除

例子:docker run rm centos /bin/echo hello

docker常用命令:http://www.docker.org.cn/dockerppt/106.html

 

Docker网络管理

下载nginx镜像

由于docker官方服务器在海外,因此不推荐使用,这里建议使用网易蜂巢镜像中心:https://c.163.com/hub#/m/home/

#docker pull hub.c.163.com/library/nginx:latest

创建nginx容器:docker run -d -P nginx

-d:为后台运行    -P:随机分配端口 -p:指定端口映射

技术分享

技术分享

查看一下发现把本机的32768端口映射到了容器中的80端口

技术分享

浏览器访问192.168.2.114:32768

技术分享

查看容器日志:docker logs 容器ID

 

Docker数据管理

技术分享

#docker run -i -t name volume-test1 -v /data centos

#docker run -it -v /opt:/opt:rw(此处指明权限) centos

#访问其他容器的卷

#docker run -it name test1 volumes-from 其他容器名centos

docker inspect 容器ID或者镜像ID  #查看容器或者镜像的详细信息

 

手动构建镜像

#下载一个基础镜像:docker pull centos

#运行一个容器docker run name mynginx -it centos

#配置yum源:rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

#安装nginx:yum install -y nginx

技术分享

#docker commit -m mynginxf724f505bc1f niehuan/mynginx:v1

技术分享

技术分享

修改下nginx的配置文件:加入daemonoff(让它不在后台启动)

第二次把v1大包成v2整体过程

技术分享

 

Dockerfile构建

Dockerfile包括:基础镜像信息  维护者信息 镜像操作指令 容器启动

FROM :它的妈妈是谁

MAINTAINER:它的爸爸是谁,是谁创造了它(维护者信息)

RUN:你想让它干啥(把命令前面加上RUN)

ADD:往它肚子里放点文件(COPY文件,会自动解压)

WORKDIR:我是cd,今天刚化了妆(当前工作目录)

VOLUME:给我一个存放行李的地方(目录挂载)

EXPOSE:我要打开的门是啥(端口)

RUN:奔跑吧(进程要一直运行下去)

例:在/opt/dockerfile/nginx底下创建Dockerfile

技术分享

技术分享

构建:docker build -t niehuan/mynginx:v3/opt/dockerfile/nginx/

 

Docker私有仓库构建

下载registry镜像

#docker pull hub.c.163.com/library/registry:latest

通过该镜像启动一个容器

#docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registrydocker.io/registry

注:指定了私有镜像仓库的存储映射路径 /opt/data/registry:/tmp/registry用于持久化保存私有镜像

#为基础镜像打个标签

docker tag docker.io/fedora/ssh 192.168.2.114:5000/ssh

#修改docker配置文件

root@localhost ~]# vim /etc/sysconfig/docker

修改此行

OPTIONS=‘--selinux-enabled --insecure-registry 192.168.2.114:5000

#重启docker

systemctl restart docker

#提交镜像到本地私有仓库中

docker push 192.168.2.114:5000/ssh

#从私有库中下载

docker pull 192.168.2.114:5000/ssh

#访问私有仓库

 curl 127.0.0.1:5000/v1/search

{"num_results": 0, "query": "","results": []} //私有仓库为空,没有提交新镜像到仓库中

 

shipyard

图形化管理docker

一键安装:curl -shttps://shipyard-project.com/deploy | bash -s

技术分享

systemctl restart docker

curl -s http://192.168.2.114:235/info | python-mjson.tool

 

docker集群管理:swarm mesos k8s

supervisor进程管理工具

 


本文出自 “甘蔗” 博客,转载请与作者联系!

Docker学习笔记