docker概述
容器技术
自动化运维: ansible shell python docker gitlab
docker 容器 可以认为是直接使用物理硬件的虚拟机 镜像封装了应用 容器相当于是运行中的镜像 没有系统 直接基于物理硬件
缺点 容器的隔离性没有虚拟化强
共用linux内核 安全性有先天缺陷
SElinux难以驾驭
监控容器和容器排错是挑战
关闭防火墙 禁用Selinux
本地安装 #tar -xf docker.tar.gz #cd docker/ #yum install -y *.rpm
互联网安装 mirrors.163.com -->centos 使用帮助 -->下载centos repo配置文件
启动服务 #systemctl restart docker.service #systemctl enable docker.service
镜像是分层设计 而且是只读的 修改只能在原基础上 增加层次
下载镜像 hub.docker.com #官方站点 www.daocloud.io #国内站点
查看当前主机的镜像列表 #docker images
导入镜像 #docker load < docker_images/docker_images/nginx.tar
启动镜像
#docker run -p 80:80 nginx
查找 与系统相匹配的镜像 最好使用星多的 官方的
#docker search centos7
下载镜像 #docker pull 镜像名 #下载的镜像在docker images能够查看到
导出镜像 #docker save 镜像名 > /tmp/busybox.tar
删除镜像 #docker rmi 镜像名 如果有容器正在使用该镜像 则无法删除
查看镜像制作历史 #docker history centos
查看镜像底层信息 #docker inspect centos
停止容器 #docer stop 容器id/容器名
导入镜像 #cd /root/docker/docker_images #docker load < ./nginx.tar #docker load < ./centos.tar
导出镜像 #docker save nginx > /tmp/nginx.tar #docker pull
1 配置物理主机 使用网易开源镜像站点 作为yum源 2 在线安装docker 3 下载busybox docker search busybox docker pull busybox docker images
4 导出busybox 将导出的镜像 cp到虚拟主机并导入
#yum -y install docker #docker search busybox #systemctl restart docker #systemctl enable docker #docker search busybox #docker pull busybox #docker images #docker save busybox > /tmp/busybox.tar #ls /tmp/ #scp /tmp/busybox.tar 192.168.4.1:/root/docker/docker_images
使用docker 1 通过镜像启动容器 #docker run cenos echo hello 2 查看容器的运行状态 #docker ps #因为echo hello 已经运行结束 所以容器停止了 3 查看所有容器 #docker ps -a 查看所有容器 第一列是容器id 第二列是容器基于的镜像 第三列是运行的命令 最后一列是容器的名字 4 启动容器 并进入容器 #docker run -it centos bash #docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26fb42c1864c centos "bash" 35 seconds ago Up 30 seconds fervent_shaw
5 启动容器后 如果想返回宿主机 不停止容器 使用组合键 ctrl+q+p
#docker attach 26fb 接入容器
6 删除本地镜像
如果有容器正在使用镜像 则无法删除
7 停止容器
#docker stop 容器id
8 删除容器
#docker rm 容器id
9 删除镜像
#docer rmi 镜像名
重新导入centos镜像
启动并进入容器 在容器里配置 yum 源
安装net-tools 软件包 实现ifconfig命令
返回宿主机
使用docker tag 给镜像重命名 生成的 新的镜像 并不是将原有镜像复制一份 而是两个名字指向同一个镜像文件
#docker tag centos mycentos
#docker tag centos centos:ifconfig
#docker images
centos ifconfig 980e0e4c79ec 18 months ago 196.7 MB
mycentos latest 980e0e4c79ec 18 months ago 196.7 MB
#如果不指定标签 默认标签是latest
以后台的方式启动容器 #docker run -idt centos bash
只显示容器id
#docker ps -qa
批量删除docker容器 #docker rm $(docker ps -qa) #docker rm -f $(docker ps -qa) #-f 强制删除 将运行状态中的容器也删掉
启动 停止 重启容器 #docker run -idt centos bash #docker stop 1d6e #docker start 1d6e #docker restart 1d6e #docker ps
进入容器 #docker attach 1d6e # exit会结束容器 #docker exec -it 1d6e bash #exit 不会结束容器
查看容器内进程信息 #docker top 1d
查看容器底层信息 #docker inspect 1d
1 启动两个容器 基于centos镜像 一个用于安装httpd 另一个用于安装 mariadb-server
2 在第一个容器上配置discuz论坛
步骤 1 启动容器 为其设置主机名 #docker run -p 80:80 --name web1 -h web1 -itd centos bash #docker run -p 3306:3306 --name dbserver1 -h dbserver1 -itd centos bash #docker attach web1 在web1上 #rm -rf /etc/yum.repos.d/* #vi /etc/yum.repos.d/nnd.repo [server] name=server baseurl=http://192.168.4.254/rhel7 enabled=1 gpgcheck=0 #yum repolist #yum -y install httpd php php-mysql #httpd -DFOREGROUND #前台运行apache 做完端口映射后 访问 192.168.4.1 能看到apache默认页面
在dbserver1 #yum -y install mariadb-server #mysql_install_db #chown -R mysql:mysql /var/lib/mysql #mysqld_safe #前台运行mysqld
#docker exec -it dbserver1 bash 在dbserver1 上 授权 #mysql -uroot > grant all on . to admin@'%' identified by '123456';
把discuz 拷贝到web1上 #yum -y install lftp unzip #lftp 192.168.4.254 #unzip Discuz_X3.0_SC_UTF8.zip #cp -r upload/ /var/www/html/bbs #chmod -R 777 /var/www/html/bbs