docker优势
轻量级、资源损耗少、启动快、性能高、只能运行linux系统
容器技术发展历程
1.chroot技术
新建一个子系统(拥有自己完整的系统文件)
ldd /bin/ls(查看ls命令依赖的库文件)
2.linux容器(lxc)-linux container
namespaces命名空间、隔离环境、cgroup进程资源限制
3.docker容器
初期使用lxc二次开发,后期使用libcontainer
docker加速器 #使用阿里加速更靠谱
vim /etc/docker/daemon.json
{"registry-mirrors":["https://registry.docker-cn.com"]}
docker info 检查加速
镜像管理
docker search -搜索镜像
docker pull -拉镜像,默认最新版latest
docker image ls -镜像列表
docker image save -镜像导出
docker image load -镜像导入
docker image rm -镜像删除
容器管理
run-创建并启动
start-启动
-d 后台运行
-p 指定端口映射
-P 系统自动指定端口映射
-it 分配交互式终端
--name 指定容器名称
ctrl+d 退出容器
-v 源地址(宿主机):目标地址(容器)
-e 环境变量
docker container ls 查看启动容器
docker container ls -a 查看所有容器
docker container start/restart/stop/kill/rm/rename 启动/停止/杀死/删除/重命名 容器
进入正在运行的容器
docker container attach 进入容器同一个终端,画面同步
docker container exec -it name /bin/bash 使用exec分配tty进入容器
/bin/bash 覆盖容器初始命令
ctrl+p,ctrl+q悄悄退出
容器网络
默认容器网络-nat模式,172网段
-p 80:80
-p 514:514/udp 指定udp协议,默认tcp协议
容器数据持久化
docker container cp 宿主机目录 容器名:目录 -复制宿主机目录
docker cp /data/docker/test01/ docker-centos01:/ttt
docker run -d -v 源地址(宿主机):目标地址(容器) 容器名 -挂载主机目录,之后直接修改宿主机目录内容便可
数据卷管理
docker run -d -v 卷名:目标地址(容器) 容器名 -数据卷(第一次卷空,将容器数据拷贝至卷;若卷有数据则卷数据挂载到容器)
docker volume inspect 卷名
--volume-from 跟某一个已经存在的容器挂载相同的卷
docker run -itd -v tes:/opt/ centos /bin/bash
docker run -itd -v /data/docker/test/:/opt/ centos /bin/bash
手动制作镜像
docker run -it -p 81:80 centos /bin/bash
yum install nginx -y
nginx
ctrl+d
docker container commit nifty_lamarr centos8-nginx01
docker image ls
docker run -itd -p 81:80 centos8-nginx01 /bin/bash
自动制作镜像dockerfile
基础镜像信息 FROM
制作镜像操作指令 RUN
容器启动时执行初始命令 CMD [" "]
docker image build -t 镜像名称 --network=host dockerfile路径
root账户登录
docker exec --user root -it mongo /bin/bash
自动重启
--restart unless-stopped
时间一致
-v /etc/localtime:/etc/localtime:ro
日志
docker logs ID -f