Docker学习
通过阿里云yum源安装docker
- 备份原yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup - 获取阿里云yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo - 清除原有yum源缓存,缓存新yum源
yum clean all
yum mackcache - 安装容器服务
yum install -y docker - 安装docker命令补全(tab补全)
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion - 配置容器镜像源加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://c4xqpauq.mirror.aliyuncs.com”]
}
EOF - 重新加载docker配置
sudo systemctl daemon-reload - 重启容器服务
systemctl restart docker - 设置开机启动
systemctl enable docker
windows10支持docker(windows server core/nano-纯命令版)
控制面板-程序与服务-Hyper-V,Containers
docker基本命令
创建及运行容器
例子:
docker create --name test1 httpd
找不到,会自动下载(pull)
docker run -it 创建并运行
进入容器
docker attach 直接进入容器,不启动新进程,退出会停止容器,退出不停止需要先按,Ctrl+P;再按,Ctrl+Q(快捷方式)
docker exec 在新的终端打开容器
例子:
docker exec -it test1 /bin//bash
修改httpd页面
cd /usr/local/apache2/htdocs
echo “test” > index.html
(
容器内无vim,需安装
apt-get update
apt-get install vim
)
查看镜像
docker images
删除镜像 强制 -f
docker rmi
删除容器
docker rm
查询镜像
docker search
容器日志
docker logs
例子:docker logs test1
镜像分层学习&&docker build:
对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别, 因此不同的发行版可以公用bootfs
rootfs与应用打包在容器里
镜像分层:容器由若干只读镜像层和最上面的可写的容器层构建的
base镜像,镜像层只读的
从scratch构建,不依赖其他镜像,本身是个空镜像
一般操作系统镜像是最常用的base镜像
容器层,共用镜像层,独立的容器空间
docker容器镜像特性
新增在容器层中新增
删除镜像层在容器层增加“遮挡”文件"whiteout"遮挡起来。
修改镜像层数据将:先将数据复制到容器层,再修改,然后数据保存在容器层 (copy-on-write)
读取:依据容器分层有上至下查找,容器层-镜像层
docker commit /dockerflie创建镜像
docker commit
-a 作者名
-m 备注
例子:docker commit -a luo -m yubao test2 nginx:v1.1
docker build
利用dockerfile创建
使用docker build 创建镜像时,需要使用 dockerfile 文件自动化制作image 镜像
注意:dockerfile 有点像源码编译时./configure后产生的 Makefile
mkdir -p /root/docker-build/
vim Dockerfile
#基于什么镜像
FROM docker.io/centos:latest
#作者
MAINTAINER <luoyubao.com>
#执行命令安装httpd服务
RUN yum -y install httpd
#将镜像层文件复制到容器层
ADD start.sh /usr/local/bin/start.sh
ADD index.html /var/www/html/index.html
#开放80端口
expose 80
vim start.sh
#!/bin/bash
/usr/sbin/httpd -DFOREGROUND
vim index.html
docker build -t docker.io/centos:httpd ./
查看镜像历史
docker history XXX
例:docker history nginx:v1.1
docker镜像导入
docker images load -i 镜像包名
docker镜像导出
docker images save 镜像名> 镜像包名