docker1
标签(空格分隔): docker
docker是一种容器
保护不被其他所影响。
容器的前世今生
freebase jail bsd -----------> linux vserver
chroot 根是隔离的 ---> 完整的根文件系统(FHS)
namespace
PID 进程隔离
NET 管理网络接口
IPC 管理进程通信
MNT 挂载点
UTS 隔离内核和版本标识
cgroups 资源的分配和监控
blkio 块设备
cpu cpu
cpuacct cpu资源报告
cpuset 多处理平台上的cpu集合
devices 设备访问
freezer 挂起或回复任务
memory 内存使用量
pref_event 对cgroup中的任务进行统一性能测试
net_cls cgroup中的任务创建的数据报文的类别标识符
通过比较复杂的代码开发的过程 调用以上三项技术
容器的一生
实现容器的创建 ---》 管理 ----》 销毁
LXC
LXC LinuXContainer
对于原有的常用功能进行了封装,方便我们做容器的生命周期
----> DOCKER (dotcloud)
在LXC 标准上加入镜像技术
docker ce 开源
docker ee 企业
docker的安装
yum源准备
curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum/repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安装依赖包
yum-utils device-mapper-persistent-data lvm2 docker-ce
docker服务
systemctl restart docker
docker version
docker info
配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://你的aliyun加速地址.mirror.aliyuncs.com"]
}
EOF
sudo systemctl restart daemon-reload
sudo systemctl restart docker
docker 体系结构
两种角色
daemon 和 client
docker的镜像基础管理
docker search centos
docker pull centos:6.9
docker pull centos:7.5
docker pull nginx
docker image ls
标识镜像唯一性
docker image ls --no-trunc
查看全部 只看id
docker image ls -q
查看详情 加唯一标识
docker image inspect 82f3b5f3c58f
删除
docker image rm 355
docker image rm -f 'docker image ls -q'
导出
docker image save 355515151e > /tmp/ubu.tar
导入
docker image load -i /opt/nginx.tar.gz
改信息
docker image tag 6262edasd ubu:latest
容器的管理
运行容器
docker container run -it #交互式启动
docker container run -it --name='mydocker1' #唯一码
docker container run -d 后台工作 nginx:1.14
#交互式容器 测试使用 退出就删除
docker container run -it --name='centos22' --rm 唯一码
#后台服务容器 映射端口 加-p
docker container run -d -p 8080:80 --name='nginxd' nginx:1.14
外面的端口:docker里的端口
查看容器启动状态
docker container ls
docker container ls -a
container id 容器的唯一号码
names 容器的名字(自动生成,也可以手工指定)
status 容器的运行状态
docker 重启
守护式
docker container start 容器id
交互式
docker container start -i 容器id
docker 关闭
守护式 交互式
docker container stop 容器id
docker 容器的连接
docker container attach 容器id
这种登录退出 容器也会关闭
子进程的登录
docker container exec -it 容器id /bin/bash
这种登录退出 容器不会关闭
查看各种io
docker container stats
测试nginx
curl -I 172.17.0.3
删除容器
docker container rm -f 'docker container ls -a -q'
docker container rm -f 容器id
容器一致运行
1.ctrl + P,Q
2.使用sleep
3.让程序前台一直运行(夯在前台)
制作守护式容器时,常用的方法
容器的网络访问
指定映射 docker 会自动添加一条iptables规则来实现端口映射
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort(随机端口)
-p hostPort:containerPort/udp
-p 81:80 -p 443:443
随机映射
docker run -P 80 随机端口
只允许网段内的访问
docker container run -d -p 10.0.0.100:8081:80 --name='n3' nginx:1.14
随意端口 32768 开始
docker container run -d -p 80 --name 'n4' nginx:1:14
docker container run -d -p 172.16.1.200::80 --name='n6' nginx:1.14
udp 映射
docker container run -d -p 855:8011/udp --name='n6' nginx:1.14
多端口映射
docker container run -d -p 855:8011/udp -p 855:8011/udp -p 855:8011/udp --name='n6' nginx:1.14
容器的其他管理
docker ps -a -q -l
docker top testxx
docker logs testxx
docker logs -t testxx
docker logs -tf testxx
docker logs -tf -tail 10 test xx
docker logs -tf -tail 0 testxx
最近一个
docker container -a -q -l
docker image
search
pull
ls
inspect
rm
save
load
docker container
run
ls
start
stop
restart
kill
attach
exec -it
top
logs
tag
inspect
docker的持久化
制作本地局域网yum源
yum install -y vsftpd
启动
systemctl restart vsftpd
创建yum仓库
mkdir -p /var/ftp/centos6.9
mkdir -p /var/ftp/cetnos7.5
写配置文件
cat > /yum.repos.d/ftp.repo <<EOF
[ftp]
name=ftpBase
baseurl=ftp://10.0.0.100/centos6.9
enable=1
gpgcheck=0
docker cp拷贝
docker container cp index.html qww21323:/usr/share/nginx/html/
volumn 数据卷的使用
实现主机和容器的数据共享 作用:数据持久化
-v
docker run -d --name="n1" -p 80:8080 -v /opt/html:/usr/share/nginx/html/ nginx
查看 挂载了什么数据卷
docker container inspect
-v a:a -v b:b
数据卷使用
mkdir -p /opt/Volume/a
mkdir -p /opt/Volume/b
生成数据卷容器
docker run -it --name 'nginx_volume' -v /opt/Volume/a:/opt/a -v /opt/Volume/b:/opt/b exec centos7 /bin/bash
docker run -d -p 8080:80 --volumes-from nginx_volume --name 'n8080' nginx
docker run -d -p 8081:80 --volumes-from nginx_volume --name 'n80802' nginx
镜像制作
ssh
openssh-server
docker image commit 镜像名字 镜像自己定义的名字
hywhyme/centos7:v1
启动容器
docker container run -d --name=ssh1 /etc/init.d/sshd start 后台
docker container run -d --name=ssh1 /etc/init.d/sshd -D 前台启动
启动基础镜像容器
安装需要的包
打包镜像
docker image commit 镜像名字 镜像自己定义的名字
hywhyme/centos7:v1
启动镜像
docker container run -d --name=sshd222 -p 222:22 镜像id /usr/sbin/sshd -D
构建企业网站定制镜像
启动基础镜像
docker run -it --name='bbs' -v /opt/vol/mysql:/var/lib/mysql /opt/vol/html:
/var/www/html centos
优化yum源
mv /etc/yum.repos.d/*.repo /tmp
echo -e "[ftp]
name=ftp
baseurl=ftp://ip/centos7
gpgcheck=0" > /etc/yum.repos.d/ftp.repo
yum makecache fast && yum install openssh-server httpd mysql php php-mysql -y
安装bbs
上传bbs代码到宿主机/opt/vol/html并解压
安装
docker commit bbs hywhye/cents_bbs:v2
创建启动脚本
vim init.sh
#!/bin/bash
/etc/init.d/mysqld
/etc/init.d/httpd
/usr/sbin/sshd -D
chmod 777 init.sh
启动容器 映射端口 挂载数据卷 自动启多服务
docker container run -d --name='bbs' -v /opt/vol/mysql:/var/lib/mysql /opt/vol/html:/var/www/html centos -p 22222:22 -p 8080:80 -p 33060:3306 cents_bbs:v2 /var/www/html/init.sh
centos7
sshd 的安装 需要自己初始化
mkdir /var/run/sshd
echo 'UserDNS no' >> /etc/ssh/sshd_config
sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
echo 'root:123456' | chpasswd
/usr/bin/ssh-keygen -A
docker build -t
进入dockerfile 然后
docker build -t 容器名