首页 > 代码库 > 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 “mynginx”f724f505bc1f 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学习笔记