docker1

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": ["你的阿里云镜像地址"]
}
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 服务日志

journalctl -u docker --no-pager

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 容器名

podman加速

/etc/containers/registries.conf

unqualified-search-registries = ["docker.io"] 
[[registry]] 
prefix = "docker.io" 
location = "我的镜像加速地址.mirror.aliyuncs.com"



原文地址:https://www.cnblogs.com/hywhyme/p/15192596.html