如果容器的ip地址不固定,那么如何进行服务间的调用?
CGroups
linux内核提供的可以限制、记录、隔离进程组所使用的物力资源的机制,为容器而生,没有cgroups就没有今天的容器技术
- 资源限制
- 优先级分配
- 资源统计
- 进程控制
docker host 用户安装docker daemon的主机,该主机中可基于容器镜像运行容器
docker daemon 用户管理docker host中运行的容器、容器镜像、容器网络等,管理由Containerd.io提供的容器
resgistry 容器镜像仓库,例如 docker hub 也可以使用 harbor 实现企业私有的容器镜像仓库
docker client docker daemon 客户端工具 用于同 docker daemon 进行通信
image 不可变的基础设施的模板文件
container 由容器镜像生成,用于应用程序运行的环境
docker dashboard 简单的界面,管理容器
安装 docker-ce
-
关闭防火墙
systemctl stop firewalld systemctl disable firewalld -
禁用 selinux,将文件中 SELinux status 修改为 disabled
vi /etc/sysconfig/selinux -
下载源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors,aliyun.com/docker-ce/linux/centos/docker-ce.repo -
安装
yum -y install docker-ce -
修改配置文件
vi /usr/lib/systemd/system/docker.service13 行 ExecStart=/usr/bin/dockerd 后面全部删掉 在13 行下 添加 ExecStartPost=/sbin/iptables -P FORWARD ACCEPT
-
启动docker
systemctl start docker systemctl enable docker -
验证版本
docker 命令
简介命令
-
本地找镜像,没有去容器仓库下载,下载完启动镜像。-d 后台运行
docker run -d nginx:latest若拉取不到,可能是dns没配置好的问题
-
查看容器
docker ps -
查看容器的ip地址
docker inspect ${id} -
帮助命令
docker -h docker run --help
基本命令
docker run
docker run -it --name ${name} ${imageName} bash
docker run -it --name c1 centos:latest bash
# :ro 只读的方式
docker run -itd -p port:port -p port:port -v /usr/local:/home:ro \
-v /usr/bin:/usr/share ${imageName} bash
-i 交互式
-t 提供终端
--name c1 容器命名为c1
centos:latest 使用centos最新版本容器镜像
bash 在容器中执行命令
docker ps
docker ps --all
docker inspect
进入容器后按住 ctrl p q 可以不停止容器 退出
docker inspect ${name}
docker exec
docker exec -it name/id ll /
docker attach
进入容器
# 不推荐
docker attach ${name}/${id}
# 推荐
docker exec -it 775c7c9ee1e1 /bin/bash
docker stop name/id
docker start name/id
docker top name/id
docker rm name/id
docker ps --all | awk '{if (NF>=2) {print $1}}' | xargs docker rm
docker images
docker image --help
docker image ls
镜像一般下载到本地保存的位置 /var/lib/docker 目录下
docker rmi centos:latest
删除镜像之前要先删除容器
docker commit
docker commit ${id} centos:msb
docker save
docker save -o centos.tar centos:latest
docker load
docker load -i *.tar
docker images
docker export 用的少,将正在运行的容器导出
docker export -o centos.tar ${id}
docker import 用的少
docker import centos.tar centos:v1
docker pull imageName
容器镜像加速器及容器镜像仓库
容器镜像加速器
修改/添加 /etc/docker/daemon.json
{
"registry-mirrors": ["https://zr0j024b.mirror.aliyuncs.com", "https://zr0j024b.mirror.aliy", "https://registry.docker-cn.com"]
}
重启服务
systemctl daemon-reload
systemctl restart docker
镜像仓库
-
下载安装docker-compose
wget https://github.com/docker/compose/releases/download/1.25.0/安装docker-compose-Linux-x86_64 -
放入系统path文件中
echo $PATH mv docker-compose-Linuxx86_64 /usr/bin/docker-compose chmod +x /usr/bin/docker-compose -
安装harbor
- 下载安装包,去GitHub/gitee上搜索 harbor 找到压缩包
- 解压,将证书移动到harbor文件夹中
- 使用 harbor.yml.tmpl 文件,复制一份更名为 harbor.yml
- 修改 hostname 为本机ip或域名
- 修改证书的位置
- 密码可以修改成简单的
- 运行 prepare 脚本
- 运行 install 脚本
-
验证是否启动成功
docker ps 看是否有9个harbor的容器在运行或者直接用浏览器访问可视化界面
若未启动成功,使用以下命令来重新启动
docker-compose down docker-compose up -d -
将本地镜像推送到仓库中
- 本地镜像打标记 docker tag centos:latest 主机/仓库/包名(centos:v1)
- 登录 docker login 服务器地址
- docker push 镜像名称
Nginx 部署
- docker run -d -p 80:80 --name nginx-server-port -v /opt/nginx-server-port:/usr/share/nginx/html:ro nginx
- 编辑 /etc/sysctl.conf 添加 net.ipv4.ip_forward=1 运行命令 sysctl -p
容器镜像分类
- 操作系统类
- centos
- ubantu
- 应用类
- tomcat
- nginx
- mysql
制作容器镜像
把操作系统中文件系统打包为容器镜像
-
打包操作系统中的文件系统
# numeric-owner 以数值方式出现 --exclude 排除目录 现在系统运行的文件 tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7u6.tar -
docker commit
-
通过dockerfile实现容器镜像的自定义生成
指令说明