五十三.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 这种启动的是进程的容器设置的

###########################

原文地址:https://www.cnblogs.com/luwei0915/p/10496416.html

时间: 2024-10-08 13:16:05

五十三.Docker概述、部署Docker、Docker镜像、Docker基本命令的相关文章

运维人员的解放----Docker快速部署

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container).(我个人还是喜欢称虚拟机) Docker应用容器相对于 VM 有以下几个优点: 启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久 资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源 因为VM 的 Hypervi

docker安装步骤及基于docker容器部署web应用LNMP服务器环境

docker的介绍 docker的定义: 1.docker的三个概念:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器Docker 镜像 - Docker images: Docker 镜像是 Docker 容器运行时的只读模板Docker 仓库 - Docker registeries: Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库(Docker Hub)Docker 容器 - Docker containers:每一个 Docke

记录在docker中部署pure-ftp

1.部署环境 普通物理机一台(6G内存,500G硬盘),windows server 2016操作系统. 安装vmware workstation  pro14,新建centos 7虚拟机. 2.在centos 7虚拟机中安装docker.创建容器.在容器中安装pure-ftp 2.1.禁用SELINUX #vi /etc/selinux/config SELINUX有以下三种设置,设置为第一种 SELINUX=disabled SELINUX=enforcing SELINUX=permiss

docker环境部署nginx、tomcat、redis

centos7 部署docker 1.获取阿里docker yum源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce-staging.repo yum makecache yum repolist 2.移除旧版docker yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker

docker 容器部署

目录 docker 介绍 1 容器操作 2 网络和数据卷 3 应用部署 4 备份迁移 5 dockerfile 6 私有仓库 docker 介绍 # 1 docker概念: -版本(17.x以上,都是新版本),docker ce 和docker ee -轻量级,环境问题(开发一套环境,运维一套环境) -镜像和容器:镜像是一系列文件:redis镜像(linux系统+redis软件) 容器:当成操作系统 -隔离:容器里部署我的项目 -宿主机:运行docker软件的机器 -c/s架构:通过resful

Docker学习笔记(6-1)Docker镜像与Docker仓库

学习目标: 列出镜像 docker images 删除镜像 docker rmi docker镜像:联合加载技术aufs实现的层叠的只读文件系统 1.#使用docker info查看存储驱动和存储位置 存储位置:/var/lib/docker sudo ls -ls /var/docker/aufs diff layers mnt sudo ls -ls /var/docker/aufs/mnt 很多的镜像 2.列出镜像docker images -a 显示所有镜像(包括中间镜像) -f  过滤

docker实战——在测试中使用Docker

在之前几章中介绍的都是Docker的基础知识,了解什么是镜像,docker基本的启动流程,以及如何去运作一个容器等等. 接下来的几个章节将介绍如何在实际开发和测试过程中使用docker. 将Docker作为本地Web开发环境是使用Docker的一个最简单的场景.这个环境可以完全重现生产环境,保证开发环境和部署环境一致.下面从将Nginx安装到容器来架构一个简单的网站开始. 使用Docker测试静态网站 ## 创建一个sample的镜像目录并创建一个Dockerfile # mkdir sampl

Docker实战(一):Docker基础命令

Docker基础命令 下面简单介绍一下Docker常用的一些基础命令 # 在ubuntu中安装docker $ sudo apt-get install docker.io # 查看docker的版本信息 $ docker version # 查看安装docker的信息 $ docker info # 查看本机Docker中存在哪些镜像 $ docker images # 检索image $ docker search ubuntu:14.04 # 在docker中获取ubuntu镜像 $ do

《Docker Deep Dive》Note - 纵观 Docker

<Docker Deep Dive>Note 由于GFW的隔离,国内拉取镜像会报TLS handshake timeout的错误:需要配置 registry-mirrors 为国内源解决这个问题. 可以配置为阿里的加速源:https://cr.console.aliyun.com/undefined/instances/mirrors,阿里的加速器可以提升获取Docker官方镜像的速度. 登录开发者账号后,将自己的加速器地址复制到 Docker Settings > Daemon >