码迷,mamicode.com
首页 > 其他好文 > 详细

docker的搭建及使用

时间:2018-08-17 11:13:36      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:后台   sysconfig   passwd   添加   --   creat   管理系   方便   iptable   

yum search 包名 查找软件包 yum list |grep -i "vim" 查找软件包名 yum provides *vim 查找软件包名 which httpd (查看路径) rpm -qf /usr/bin/httpd(查看包名) rpm -qc httpd(查看配置文件) sysctl -w net.ipv4.ip_forward=1 打开路由 iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o p8p1 -j MASQUERADE 实现虚拟机上网 cat 编辑器 cat 0< a.txt = cat <0& (标准输出) cat >ji.repo <<abc 将键盘输出,出入到ji.repo文件里,并以abc结尾。 >lsdfsdlf >flsdfdf >abc 容器 容器技术的核心有以下几个内核技术组成: CGroups(Control Groups)资源管理 NameSpace-进程隔离 SELinux安全 由于是物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速 Docker Docker是完整的一套容器管理系统 Docker提供了一组命令,让用户更加直接方便地使用容器技术,而不需要过多关心底层内核技术 优点: 相比于传统的虚拟化技术,容器更加简介高效。 传统虚拟机需要给每个VM安装操作系统。 容器使用的公共库和程序。 缺点: 容器的隔离性没有虚拟化强。 共用Linux内核,安全性有先天缺点。 SELinux难以驾驶。 监控容器和容器排错是很棘手的。 镜像 在Docker中容器是基于镜像启动的。 镜像是启动容器的核心。 镜像采用分层设计。 使用快照的cow技术,确保底层数据不丢失。 清除防火墙记录: iptables -t nat -F (清除所有记录) iptables -t nat -X (清除自定义记录) iptables-save 一 安装包docker-engine yum -y install docker-engine 二 启动服务 systemctl start docker systemclt enable docker docker 选项 -version 查看版本 -search 搜索镜像 -images 查看镜像列拜 -pull 下载镜像 -push 上传镜像 -save 镜像另存为tar包 -load 使用tar包导入镜像 -rmi 删除本地镜像 -history 查看镜像制作历史 -inspect 查看镜像底层信息 -tag 修改镜像名和标签(创建软连接) docker images docker help pull 帮助 格式:docker pull [OPTIONS] NAME:[:TAG|@DIGEST] docker pull rhe17 下载镜像 docker load < xx.tar 导入镜像 docker save rhe17 > xx.tar 导出镜像 docker history centos docker tag rhe17:latest wode:biaoqian 创建软连接 docker inspect rhe17 docker images 查看镜像列表 镜像仓库名 镜像标签 镜像ID 创建时间 大小 REPOSITORY TAG IMAGE ID CREATED SIZE php latest 988e578c487e 15 months ago 33.18 MB 命令列表: docker run 运行容器 docker ps 查看容器列表 docker stop 关闭容器 docker start 启动容器 docker restart 重起容器 docker attache|exec 进入容器 docker inspect 查看容器底层信息 docker top 查看容器进程列表 docker rm 删除容器 例: docker run --name 自定义容器名 docker run -v 挂载 docker run -link 2台连接起来 docker run -i交互 docker run -t终端 docker run -d后台 docker run -d -p(端口映射) docker run -d -p 80(物理机端口):80(容器nginx端口) nginx docker run -it centos /bin/sh(在容器里要执行的命令) exit直接退出便会杀死上帝进程,导致容器关闭 docker run -itd centos /bin/sh(在容器里要执行的命令) 放入后台,可以用docker ps 查看到 docker ps -a 查看所有容器列表 docker ps -aq 仅显示容器id号 docker stop/start/restart 9a5c63e34644 (容器id号) docker attach -it 9a5c63e34644 /bin/bash(在容器里要执行的命令) 进入上帝进程,exit直接退出便会杀死上帝进程,导致容器关闭 docker exec -it 9a5c63e34644 /bin/bash (在容器里要执行的命令) 在上帝进程下创建一个子进程进入子进程,exit退出也不会关闭容器 docker inspect 9a5c63e34644 查看容器底层信息 docker top 9a5c63e34644 查看容器进程列表 docker rm 9a5c63e34644 删除容器 docker rm `docker ps -aq` 删除所有容器 mysql的指定user启动: mysqld --initialize --user=mysql 自定义镜像 docker commit 使用镜像启动容器,在该容器基础上修改,另存为另一个镜像。 docker images docker commit d3d188ad882cc myos:laters 创建名为myos的镜像 Dockerfile 自己编写镜像的内容 Dockerfile语法格式 FROM 基础镜像 MAINTAINER 镜像创建者信息 EXPOSE 开放的端口 ENV 设置变量 ADD 复制文件到镜像 RUN 制作镜像时执行的命令,可以有多个 WORKDIR 定义容器默认工作目录 CMD 容器启动时执行的命令,仅可以有一条CMD Dockerfile 工作流程 构建一个有基本命令的镜像 mkdir /root/build cd /root/build cp /etc/yum.repos.d/xixi.repo /root/build/ vim Dockerfile FROM centos (基础镜像) RUN rm -rf /etc/yum.repos.d/*.repo ADD local.repo /etc/yum.repos.d/xixi.repo 前面本地路径 后面为镜像路径 RUN yum -y install net-tools psmisc vim-enhanced iproute CMD ["/bin/bash","-DFOREGROUND"] docker build -t imagedname(镜像名) Dockerfile (当前目录名) docker build -t http:laters /root/build/ 构建一个有http和ssh服务的镜像 mkdir /root/build cd /root/build mkdir /root/build/dockerfile cp /etc/yum.repos.d/xixi.repo /root/build/ vim oo.sh #!/bin/bash EnvironmentFile=/etc/sysconfig/sshd /usr/sbin/sshd -D & EnvironmentFile=/etc/sysconfig/httpd /usr/sbin/httpd -DFOREGROUND & wait chmod 755 oo.sh vim Dockerfile FROM centos MAINTAINER luozixu RUN rm -rf /etc/yum.repos.d/*.repo ADD local.repo /etc/yum.repos.d/xix.repo RUN yum -y install net-tools psmisc vim-enhanced iproute httpd openssh-server ENV EnvironmentFile=/etc/sysconfig/sshd RUN /usr/sbin/sshd-keygen &>/dev/null RUN echo "123456" |passwd --stdin root ADD oo.sh /etc/init.d/oo.sh EXPOSE 22 80 CMD ["/etc/init.d/oo.sh"] docker build -t abc:latest /root/build/dockerfile/ docker run -itd -p 222:22 -p 80:80 abc:latest docker run -itd -p 222:22 --name /my-mysql quan /bin/bash 我们在使用Docker的时候,经常可能需要连接到其他的容器,比如:web服务需要连接数据库。按照往常的做法,需要先启动数据库的容器,映射出端口来,然后配置好客户端的容器,再去访问。其实针对这种场景,Docker提供了--link 参数来满足。 docker run --name mysql -e MYSQL_ROOT_PASSWORD=server -d mysql docker run --name nginx --link mysql:aliasmysql -d nginx docker run -d -v /usr/docker_file/NginxDemo.war:/usr/local/tomcat/webapps/NginxDemo.war -p 8080:8080 docker.io/tomcat 自定义镜像仓库 流程: docker pull registry vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --insecure-registry=ip:5000 systemctl daemon-reload systemctl restart docker docker run -id -p 5000:5000 registry docher tag 镜像 ip地址:5000/镜像:latest docker push ip地址:5000/镜像:latest 进入registry容器查看/etc/docker/registry/config.yml 例: docker images docker run -id -p 5000:5000 registry docker tag ubuntu:latest 192.168.4.6:5000/ubuntu vim /etc/docker/daemon.json { "insecure-registries" : ["192.168.4.6:5000"] } docker push 192.168.4.20:5000/ubuntu firefox http://192.168.4.20:5000/v2/_catalog firefox http://192.168.4.20:5000/v2/<name>/tags/list docker rmi ubuntu:latest (删除ubuntu镜像) docker run -itd 192.168.4.20:5000/ngins:latest(网络源镜像) 存储卷 卷的概念 docker容器不保持任何数据 重要数据请使用外部卷存储(数据持久化) 容器可以挂载真实机目录或共享存储为卷 主机卷的映射 将真实机目录挂载到容器中提供持久化存储 touch /root/a.txt docker run -v /root/a.txt -it nginx:laest /bin/bash (-v:同步/root/a.txt文件) 共享存储 一台共享存储服务器可以提供给所有Docker主机使用 共享存储服务器(NAS、SAN、DAS等) 如: – 使用NFS创建共享存储服务器 – 客户端挂载NFS共享,并最终映射到容器中 Docker主机 – mount挂载共享 – 运行容器时,使用-v选项映射磁盘到容器中 Linux网桥 创建虚拟网卡 真实网卡配置文件 – cat /etc/sysconfig/network-scripts/ifcfg-eth0 虚拟网卡配置文件 – cat /etc/sysconfig/network-scripts/ifcfg-eth0:0 # cat /etc/sysconfig/network-scripts/ifcfg-eth0:0 TYPE=Ethernet BOOTPROTO=static ... ... NAME=eth0:0 DEVICE=eth0:0 ONBOOT=yes IPADDR=192.168.4.15 创建虚拟网桥 # cat /etc/sysconfig/network-scripts/ifcfg-br0 TYPE=Bridge BOOTPROTO=static ... ... NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=192.168.4.15 # cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=static ... ... NAME=eth0 DEVICE=eth0 BRIDGE=br0 ONBOOT=yes IPADDR=192.168.4.15 [root@jacob ~]# ~]# brctl show Docker网络拓扑 查看默认Docker创建的网络模型 # docker network list # ip a s docker0 # brctl show docker0 //启动容器会绑定该网桥 新建Docker网络模型 # docker network create --driver bridge test01 # docker network list # ip a s # docker network inspect test01 查看默认Docker创建的网络模型 – 自定义网段 # docker network create --subnet=172.30.0.0/16 test01 启动容器,使用刚刚创建的自定义网桥 # docker run --network=bridge|host|none ... ... # docker run --network=test01 -id nginx 客户端访问容器内的资源 默认容器通过SNAT可以访问外网 但外部网络的主机不可以访问容器内的资源 端口映射 – 使用端口映射可以实现外部网络访问容器内的资源 # docker run -p 8080 80 -id nginx //如:真实机IP为192.168.4.5, 使用-p映射真实机的8080端口到容器中的80端口 # firefox http://192.168.4.5 添加网桥 brctl --help brctl addbr br0 brctl delbr br0 删除br0 ip link set br0 up 激活网桥 brctl show 查看 添加网卡 cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1 vim /etc/sysconfig/network-scripts/ifcfg-eth1 ....... /etc/init.d/network reload brctl addif br0 eth1 把网卡eth1加入到br0里 nmcli con 查看 分屏 : yum -y install screen screen ctrl+a shift+s ctrl+a shift+| ctrl+a tab ctrl+a ctrl+c

docker的搭建及使用

标签:后台   sysconfig   passwd   添加   --   creat   管理系   方便   iptable   

原文地址:http://blog.51cto.com/13399294/2160990

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!