Docker容器相关技术简介
Namespces命名空间功能:
编程语言
封装--->代码隔离
操作系统
系统资源的隔离
进程、网络、问卷系统
五种命名空间:
- PID(Process ID)进程隔离
- NET(Network)管理网络接口
- IPC(InterProcess Communicatio) 管理跨进程通信的访问
- MNT(Mount) 管理挂载点
- UTS(Unix Timesharing System)隔离内核和版本标识
Control groups控制组(用来分配资源)功能
- 资源限制
- 优先级设定
- 资源计量(计费系统尤其重要)
- 资源控制
Docker容器的能力:
- 文件系统隔离性:每个容器都有自己的root文件系统
- 进程隔离性:每个容器都运行在自己的进程环境中
- 网络隔离:容器间的虚拟网络接口和IP地址是分开的
- 资源隔离与分组:使用Cgroups将CPU和内存之类的资源独立分配给每个Docker容器
- LINUX容器技术
- 操作系统级别的虚拟化
- 依赖于Linux内核的Namespace和Cgroups
Docker在ubuntu下安装
安装前检查:
1、内核版本使用:
uname -a
2、检查Device Mapper(存储驱动)
ls -l /sys/class/misc/device-mapper
安装ubuntu维护的版本
1.sudo apt-get install docker.io
2. source /etc/bash_completion.d/docker.io(更新)
1、检查apt的https支持 查看/usr/lib/apt/methods/https文件是否存在,如果不存在,运行安装命令
apt-get update
apt-get install -y apt-transport-https
2、添加Docker的APT仓库
echo deb https://get.docker.com/ubuntu docker main > /etc/apt/
sources.list.d/docker.list
3、添加仓库的key
apt-key adv --keyserver hkp://keysserver.ubuntu.com:80 --recv-keys
4、安装
apt-get update
apt-get install -y lxc-docker
简易安装:
1、sudo apt-get install -y curl
2、curl -sSL https://get.docker.com/ubuntu/ |sudo sh
使用非root用户:
1、sudo groupadd docker(添加docker用户组)
2、sudo gpasswd -a ${USER} docker (${USER}当前用户,将当前用户添加到用户组中)
3、sudo service docker restart
docker 在Windows下的安装
Boot2Docker for windows包含:
1、Boot2Docker Linux ISO(虚拟机镜像)
2、Virtualbox(虚拟机服务)
3、MSYS-git()
4、管理工具
下载安装Boot2Docker:
1、访问Github上的Boot2Docker
https://github.com/boot2docker/boot2docker
2、下载docker-install.exe
3、安装docker-install.ex


微软对Docker的支持
windows Azure中的Docker镜像以及Docker仓库
windows Server中的下一个版本
Docker windows CLI
启动容器:docker run IMAGE [COMMAND] []ARG..
eg: docker run ubuntu echo 'hello world'
run 在新容器中执行命令
启动交互式容器:
docker run -i -t IMAGE /bin/bash
-i --interactiv=true|false 默认是false
-t --tty=true|false 默认是false
查看容器:
docker ps -a -l
docker inspect
自定义容器名:
docker run --name=自定义名 -i -t IMAGE/bin/bash
重新启动停止的容器
docker start -i 容器名
删除停止的容器:
docker rm 容器名
守护式容器:
能够长期运行 没有交互式会话 时候运行应用程序和服务
以守护形式运行容器:
先docker run -i -t IMAGE /bin/bash
后 Ctrl+P Ctrl+Q 让容器在后台运行
附加到运行中的容器:
docker attach 容器名
启动守护式容器
docker run -d 镜像名
查看容器日志
docker logs -f -t --tail 容器名
-f --follows=true|false 默认为false
-t --timestamps=true|false 默认为false
--tail='all'
查看容器内进程:
docker top 容器名
在运行中的容器内启动新进程:
docker exec -d -i -t 容器名
停止守护式容器:
docker stop 容器名
docker kill 容器名
容器的端口映射
run -P或-p
-P ,--publish-all=true|false默认为false 可以映射所有的端口
docker run -P -i -t ubuntu /bin/bash
-p ,--publish=[]
containerPort
docker run -p 80 -i -t ubuntu /bin/bash
hostPort:containerPort
docker run -p 8080:80 -i -t ubuntu /bin/bash
ip:containerPort
docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash
ip:hostPort:containerPort
docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash
Nginx部署流程
- 创建映射80端口的交互式容器
- 安装Nginx (apt -get install -y nginx)
- 安装文本编辑器vim (apt -get install -y -vim)
- 创建静态页面(mkdir -p /var/www/html 然后切换到该目录 ,vim index.html )
- 修改Nginx配置文件(whereis nginx)
- 运行Nginx
- 验证网站访问
dock info 可以查看dock所在的目录信息

Docker 镜像-----列出镜像
docker images [options] [repository(仓库)]
-a ,--all=false
-f ,filter=[]
--no-trunc=false(不适用截断方式线上)
-q ,--quiet=false

查看一个镜像的完整信息
docker inspect[options] container|image[container|image]
-f ,--format=''
删除镜像
docker rmi [options] image[image....]
-f ,--force=false
--no-prune=false (do not delete untagged parents:未打标签父镜像)
查找镜像
docker hub(需要先注册一个账户)
https://registry.hub.docker.com(提供官方软件仓库)
docker search [options] term
--automated =false only show automated builds
--no-trunc=false don't truncate output
-s,--stars=0 only displays with at least x stars
推送镜像(推送到docker hub上)
docker push [options] name
拉取镜像
docker pull [options] name[:tag]
-a ,--all-tags=false download all tagged images in the repository
由于下载docker 镜像过程比较慢
使用--registry-mirror选项
1.修改:/etc/default/docker
2.添加:DOCKER-OPTS='--registry -mirror=http://MIRROR-ADDR'
获得本地镜像链接: https://www.daocloud.io 注册账号,选择加速器,配置镜像链接
构建本地镜像
docker commit :通过容器构建镜像
docker commit [options] container [repository[:tag]]
-a ,--author=''Author
-m,--message=‘’ commit message
-p ,--pause=true pause container during commit
docker build: 通过dockerfile文件构建
创建dockerfile文件

docker bulid [options] paht |url
--force-rm=false
--no-cache=false
--pull=false
-q , --quiet=false
-t, --tag=''
使用service命令管理docker
sudo status docker :查看docker的状态
sudo service docker start
sudo service docker stop
sudo service docker restart

浙公网安备 33010602011771号