其他分享
首页 > 其他分享> > 三、docker概述 部署docker镜像

三、docker概述 部署docker镜像

作者:互联网

1.安装Docker

准备两台虚拟机,IP为192.168.1.10和192.168.1.20 安装docker-engine 和 docker-engine-selinux 关闭防火墙   ************************************** 配置两台虚拟机:   创建两台虚拟机后端盘: images] qemu-img create -f qcow2 -b node.qcow2 docker1.img 50G images] qemu-img create -f qcow2 -b node.qcow2 docker2.img 50G   创建img: 删除node.xml里面所有的^mac*,^address*的行 qemu] sed 's,node,docker1,' node.xml > docker1.xml qemu] sed 's,node,docker2,' node.xml > docker2.xml   创建虚拟机: qemu] virsh define docker1.xml  qemu] virsh define docker2.xml   添加网卡:(每个都添加第二张网卡) 添加硬件--网络(private1,型号 virtio)--保存       登陆docker1/2 ] ssh -X root@192.168.1.140   ]# lsblk(有50G) ]# export LANG=en_US ]# growpart /dev/vda 1 (lsblk 2G-50G) ]# xfs_growfs /    (df -h 2G-50G)   配置DNS: 查看真机器 ]# cat /etc/resolv.conf  # Generated by NetworkManager search tedu.cn nameserver 176.233.0.227 虚拟机: ]# vim /etc/resolv.conf  nameserver 176.233.0.227 测试 ]# ping www.baidu.com **************************************   1.1 配置yum源   1)配置第三方yum源(真机操作) ]# mkdir /var/ftp/docker ]# mv docker-engine-* /var/ftp/docker ]# ls /var/ftp/docker docker-engine-1.12.1-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.1-1.el7.centos.noarch.rpm   ]# createrepo /var/ftp/docker/   2)配置IP(虚拟机配置静态ip)docker1和docker2主机同样操作 ]# echo docker1 > /etc/hostname  ]# hostname docker1 ]# echo docker2 > /etc/hostname  ]# hostname docker2   docker1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 # Generated by dracut initrd DEVICE="eth0" ONBOOT="yes" IPV6INIT="no" IPV4_FAILURE_FATAL="no" NM_CONTROLLED="no" TYPE="Ethernet" BOOTPROTO="static" IPADDR="192.168.1.10" PREFIX=24 GATEWAY=192.168.1.254 docker1 ~]# systemctl restart network   docker2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 # Generated by dracut initrd DEVICE="eth0" ONBOOT="yes" IPV6INIT="no" IPV4_FAILURE_FATAL="no" NM_CONTROLLED="no" TYPE="Ethernet" BOOTPROTO="static" IPADDR="192.168.1.20" PREFIX=24 GATEWAY=192.168.1.254 docker2 ~]# systemctl restart network   3)配置yum客户端(docker1和docker2主机同样操作) docker1 ~]# vim /etc/yum.repos.d/local.repo  [local_repo] name=CentOS-$releasever - Base baseurl="ftp://192.168.1.254/system" enabled=1 gpgcheck=0 [loca] name=local baseurl="ftp://192.168.1.254/docker" enabled=1 gpgcheck=0   docker2 ~]# vim /etc/yum.repos.d/local.repo  [local_repo] name=CentOS-$releasever - Base baseurl="ftp://192.168.1.254/system" enabled=1 gpgcheck=0 [loca] name=local baseurl="ftp://192.168.1.254/docker" enabled=1 gpgcheck=0   4)安装docker(docker1和docker2主机同样操作) ]# yum -y install docker-engine ]# systemctl restart docker ]# systemctl enable docker ]# ifconfig     //有docker0说明环境部署完成 docker0: flags=4099  mtu 1500         inet 172.17.0.1  netmask 255.255.0.0 ...   ]# docker version  //查看版本   2.镜像基本操作   导入镜像 导出镜像 启动镜像   2.1 docker镜像 ]# docker images 查看镜像 1)下载镜像 docker1 ~]# docker pull busybox 2)上传镜像 docker1 ~]# docker push busybox 3)查看镜像 docker1 ~]# docker images 4)查找busybox镜像 docker1 ~]# docker search busybox 5)导出busybox镜像为busybox.tar docker1 ~]# docker save busybox:latest >busybox.tar docker1 ~]# ls busybox.tar   6)导入镜像 docker1 ~]# scp busybox.tar 192.168.1.20:/root docker2 ~]# ls busybox.tar   docker2 ~]# docker load < busybox.tar 7)删除镜像 docker2 ~]# docker rmi busybox   2.2 一次性导入多个镜像 docker1 ~]# yum -y install unzip docker1 ~]# unzip docker_images.zip  docker1 ~]# ls busybox.tar  docker_images  docker_images.zip  eip docker1 ~]# cd docker_images images]# ls centos.tar  nginx.tar redis.tar registry.tar  ubuntu.tar images]# docker images REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE busybox             latest              e1ddd7948a1c        4 weeks ago         1.163 MB images]# for i in *; do docker load <$i; done   2.3 启动镜像   1)启动centos镜像生成一个容器 启动镜像时若不知道后面的命令加什么: 1、可以猜(如:/bin/bash、/bin/sh) 2、可以不加后面的命令,默认启动 docker run -it 镜像的名称:标签 命令(容器内的命令) images]# docker run -it centos [/bin/bash]   容器内: a9f /]# ls / anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var a9f /]# cd /etc/yum.repos.d/ repos.d]# ls repos.d]# rm -rf C* repos.d]# vi dvd.repo    //在容器里面配置一个yum源 [local] name=local baseurl=ftp://192.168.1.254/system enable=1 gpgcheck=0 repos.d]# yum -y install net-tools  //安装软件 repos.d]# ifconfig ...inet 172.17.0.2  repos.d]# exit exit   3.镜像与容器常用指令 镜像常用指令练习 容器常用指令练习   3.1 镜像常用命令   images]# docker run -it xxx:latest (默认的)   1)查看后台运行的容器 docker1 ~]# docker run -d nginx  //启动nginx的镜像 docker1 ~]# docker ps   //查看后台运行的容器 CONTAINER ID   IMAGE    COMMAND                  CREATED          STATUS          PORTS             NAMES 190224dc6c10   nginx    "nginx -g 'daemon off"   21 seconds ago   Up 18 seconds   80/tcp, 443/tcp   furious_pike   2)只显示容器ID images]# docker ps -q 190224dc6c10   3)显示所有的容器,包括没有启动的 images]# docker ps -a(all)   4)显示所有的容器ID images]# docker ps -qa 190224dc6c10 aaea21554cd7   5)查看centos镜像历史(有几层) images]# docker history centos   6) 查看镜像详细信息 images]# docker inspect centos Cmd...(默认启动命令) Env...启动镜像以后,设置启动的变量   7)删除镜像,如果用镜像启动过容器,删除镜像会失败,先删除容器,再删除镜像 格式:docker rmi 镜像名 images]# docker rmi nginx  //nginx为镜像名 Error...删除时报错   停止容器 images]# docker stop 190224dc6c10 删除容器 images]# docker rm 190224dc6c10 删除镜像 images]# docker rmi nginx Deleted: ...   8)修改镜像的名称和标签,默认标签为latest images]# docker tag centos:latest cen:v1   9)修改镜像的标签 images]# docker tag centos:latest cen:v1  images]# docker images images]# docker rmi centos    //删除centos   images]# docker run -it centos    ... Downloaded newer image for centos:latest //启动的时候,因为是用标签标签启动的,所以会重新通过ID下载 images]# docker run -it cen:v1    //通过新建的标签启动cen:v1,进入容器   3.2 容器命令   1)关闭容器 命令:docker stop 容器ID images]# docker stop c7b20c544668   2)启动容器 images]# docker start c7b20c544668   3)重启容器 images]# docker restart c7b20c544668   4)删除容器 运行中删除不掉,先关闭容器 0f为容器ID images]# docker rm 0f     //删除失败 images]# docker stop 0f   //关闭容器 images]# docker rm 0f     //删除成功   5)连接容器 attach(退出时,容器关闭) | exec(退出时,容器不关闭) images]# docker attach c7b20c544668 images]# docker ps     //容器关闭   images]# docker exec -it 0f /bin/bash images]# docker ps        //容器不会关闭   images]# docker top $(docker ps -aq)      //查看容器进程列表  images]# docker run -itd centos:latest images]# ps   images]# docker exec -it 3e1ec9ddcbea /bin/bash root@85c6b0b62235:/# sleep 50 & [1] 9 root@85c6b0b62235:/# exit exit images]#docker top 85 UID    PID  PPID C   STIME     TTY         TIME      CMD root  2744 2729  0   18:01    pts/4  00:00:00   /bin/bash   6)过滤查看mac和ip地址 images]# docker inspect -f '{{.NetworkSettings.MacAddress}}' 3e1ec9ddcbea 02:42:ac:11:00:03 images]# docker inspect -f '{{.NetworkSettings.IPAddress}}' 3e1ec9ddcbea 172.17.0.3   7)修改nginx的显示内容 images]# docker run -it nginx:latest  images]# docker exec -it 56 /bin/bash 8e0:/# nginx -T /usr/share/nginx/html/ nginx: invalid option: "/usr/share/nginx/html/"   //查找并显示结果 8e0:/# echo  aaa > /usr/share/nginx/html/index.html    //修改主页显示的内容 root@56ec8154f8e0:/# nginx -T root@56ec8154f8e0:/# cat /usr/share/nginx/html/index.html  aaa   8)过滤查看nginx的ip地址 docker1 ~]# docker inspect -f '{{.NetworkSettings.IPAddress}}' 3e1ec9ddcbea 172.17.0.2 docker1 ~]# curl 172.17.0.2 aaa   ################################# 总结:   1.容器技术,Docker是实现容器技术的一种手段。 对资源切分和利用的手段,核心手段是: 资源管理(Cgroups)、进程隔离(NameSpace)、SELinux安全,让用户更加方便的使用容器技术,而不关心底层内核技术。   2.Docker优点 虚拟机里启动虚拟机为什么性能很差,因为新启动的虚拟机CPU不能支持VMX硬件虚拟化技术,使用容器技术可以解决这一问题。 Docker使用的宿主机共享公共库和程序。   3.Docker缺点 容器的隔离性没有虚拟化强;功用Linux内核,安全性差;SELinux难以驾驭;容器监控和排错难度大(弹性)。   4.镜像与容器 镜像==模板(后端盘) 容器==虚拟机(img,xml都是docker管理)   docker镜像采用分层设计,利用后端盘映射前端盘,叠加前端盘为镜像,再创建(多个)前端盘,使用快照的COW技术,确保底层数据不丢失。   Docker镜像仓库:https://hub.docker.com 镜像的唯一性:镜像+标签   5.docker run 注意事项 ducker run -it 启动的是交互式进程(如: /bin/bash) ducker run -itd 启动的是进程(如: nginx,redis) docker attach/exec 是针对ducker run -itd 这种启动的是进程的容器设置的 ###########################

标签:容器,docker1,nginx,概述,images,镜像,docker
来源: https://www.cnblogs.com/mkmkmk/p/12185630.html