43_Docker概述、部署Docker、Docker镜像、Docker基本命令

1.安装Docker
准备两台虚拟机,IP为10.10.11.10和10.10.11.20
安装docker-engine 和 docker-engine-selinux
关闭防火墙
 
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="10.10.11.10"
PREFIX="24"
GATEWAY="10.10.11.1"
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="10.10.11.20"
PREFIX="24"
GATEWAY="10.10.11.1"
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
]# systemctl start docker
]# systemctl enable docker
]# ifconfig     //有docker0说明环境部署完成
docker0: flags=4099  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0 ...
 
]# docker version  //查看版本
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-108.git4ef4b30.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      4ef4b30/1.13.1
 Built:           Tue Jan 21 17:16:25 2020
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-108.git4ef4b30.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      4ef4b30/1.13.1
 Built:           Tue Jan 21 17:16:25 2020
 OS/Arch:         linux/amd64
 Experimental:    false

2.镜像基本操作

************************************
阿里云镜像加速器
准备:
1. 首先进入阿里云的docker库https://www.aliyun.com/product/kubernetes?spm=5176.10695662.1362911.1.3cab795d6uoX0P
2. 注册登陆成功之后,选择“容器镜像服务”控制台
3. 选择镜像加速器
 
4. 修改文件“/etc/docker/daemon.json”(如果没有此文件,可以手动创建空文件)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF‘
{
  "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
************************************

导入镜像
导出镜像
启动镜像
 
2.1 docker镜像
]# docker images 查看镜像
1)下载镜像
docker1 ~]# docker pull busybox
2)上传镜像
docker1 ~]# docker push busybox
3)查看镜像
docker1 ~]# docker images
REPOSITORY          TAG      IMAGE ID        CREATED        SIZE
docker.io/busybox   latest   6d5fcfe5ff17    2 months ago   1.22 MB

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 10.10.11.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]# for i in *; do docker load <$i; done
images]# docker images
REPOSITORY          TAG     IMAGE ID      CREATED          SIZE
docker.io/ubuntu    latest  72300a873c2c  4 days ago       64.2 MB
docker.io/nginx     latest  2073e0bcb60e  3 weeks ago      127 MB
docker.io/centos    latest  470671670cac  5 weeks ago      237 MB
docker.io/busybox   latest  6d5fcfe5ff17  2 months ago     1.22 MB

2.3 启动镜像
 
1)启动centos镜像生成一个容器
启动镜像时若不知道后面的命令加什么:
1、可以猜(如:/bin/bash、/bin/sh)
2、可以不加后面的命令,默认启动
docker run -it 镜像的名称:标签 命令(容器内的命令)
images]# docker run -it centos [/bin/bash]
 
容器内:
[[email protected] /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

[[email protected] /]# cd /etc/yum.repos.d/
repos.d]# ls
repos.d]# rm -rf C*
repos.d]# vi dvd.repo    //在容器里面配置一个yum源
[local]
name=local
baseurl=ftp://10.10.11.1/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
40c51d5c08d4  nginx   "nginx -g ‘daemon ..."   15 seconds ago    Up 14 seconds   80/tcp  jovial_morse

2)只显示容器ID
images]# docker ps -q
40c51d5c08d4
 
3)显示所有的容器,包括没有启动的
images]# docker ps -a(all)
 
4)显示所有的容器ID
images]# docker ps -qa
40c51d5c08d4
bc8958e03d55
 
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 40c51d5c08d4
删除容器
images]# docker rm 40c51d5c08d4
删除镜像
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 aca60f23b01b
 
2)启动容器
images]# docker start aca60f23b01b
 
3)重启容器
images]# docker restart aca60f23b01b

4)删除容器
运行中删除不掉,先关闭容器 0f为容器ID
images]# docker rm ac     //删除失败
images]# docker stop ac   //关闭容器
images]# docker rm ac     //删除成功
 
5)连接容器 attach(退出时,容器关闭) | exec(退出时,容器不关闭)
images]# docker attach c5eb0cb9cb57
images]# docker ps     //容器关闭
 
images]# docker exec -it c5 /bin/bash
images]# docker ps     //容器不会关闭                               
 
images]# docker top $(docker ps -aq)      //查看容器进程列表
images]# docker run -itd centos:latest
images]# ps
 
images]# docker exec -it c5eb0cb9cb57 /bin/bash
[email protected]:/# sleep 50 &
[1] 9
[email protected]:/# exit
exit
images]#docker top c5
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}}‘ c5eb0cb9cb57
02:42:ac:11:00:02
images]# docker inspect -f ‘{{.NetworkSettings.IPAddress}}‘ c5eb0cb9cb57
172.17.0.2
 
7)修改nginx的显示内容
images]# docker run -it nginx:latest
images]# docker exec -it 9413edfbedea /bin/bash
ea:/# nginx -T /usr/share/nginx/html/
nginx: invalid option: "/usr/share/nginx/html/"   //查找并显示结果
ea:/# echo  aaa > /usr/share/nginx/html/index.html
 
//修改主页显示的内容
ea:/# nginx -T
ea:/# cat /usr/share/nginx/html/index.html
aaa
 
8)过滤查看nginx的ip地址
docker1 ~]# docker inspect -f ‘{{.NetworkSettings.IPAddress}}‘ 9413edfbedea
172.17.0.4
docker1 ~]# curl 172.17.0.4
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/12368588.html

时间: 2024-10-11 06:07:44

43_Docker概述、部署Docker、Docker镜像、Docker基本命令的相关文章

docker的镜像 容器 仓库

docker镜像与容器 ##docker 下载镜像 docker pull centos ##查看docker里有哪些镜像 docker image ##创建容器 docker run -p 8080:8080 -d centos [-d :后台运行 ]不加-d 会一直显示 只能另开终端stop掉[ -p :绑定本机端口和容器端] ##查看docker正在运行的容器 docker ps ##查看docker的运行日志 docker logs -f 容器id[-f :动态显示容器运行日志]不加-f

测试环境docker化(一)—基于ndp部署模式的docker基础镜像制作

本文来自网易云社区 作者:孙婷婷 背景 我所在测试项目组目前的测试环境只有一套,在项目版本迭代过程中,开发或产品偶尔会在测试环境进行数据校验,QA人数在不断增加,各个人员在负责不同模块工作时也会产生脏数据,导致QA在功能测试和接口测试过程中需要清理测试环境增加工作量,同时QA组在进行异常测试等多维度质量保障时也希望有多套环境进行数据隔离.但目前测试环境多套隔离操作麻烦,每隔离一套环境需要修改大量配置.数据库重新建表到调试可用,在开发的帮助下至少需要3天的时间,在这种场景下,我们借鉴组内大数据QA

SpringBoot 部署 docker 打包镜像

SpringBoot 部署 docker 打包镜像 环境: 1.代码编写工具:IDEA 2.打包:maven 3.docker 4.linux 7.JDK1.8 8.Xshell 9.Xftp 第一步:使用idea创建简单的springboot项目 引用一篇别人文章:https://blog.csdn.net/u013777094/article/details/78580710/ 第二步:设置项目生成jar包(两种方式) 1.修改pom文件 <?xml version="1.0"

Docker构建镜像过于缓慢解决-----Docker构建服务之部署和备份jekyll网站

参考原文链接:https://www.jianshu.com/p/e6b7e68f2ba7 来自<第一本Docker书>,我觉得很有趣,就记录一下 准备国内ubuntu镜像 每次构建Ubuntu容器然后安装软件的时候,都异常的卡,那是因为没有使用国内镜像,所以我事先准备了sources.list文件,一定要确定对应的ubuntu的版本号,我用的是18.04,内容如下 vi sources.list 输入以下内容 deb http://mirrors.aliyun.com/ubuntu/ bio

docker的安装及基本命令

docket的安装及基本命令 下载各个版本Docker地址:https://download.docker.com/linux/static/stable/x86_64/ docker概述docker是在liunx容器里运行应用的开源工具,是一种轻量级的"虚拟机".docker的logo设计为蓝色鲸鱼,鲸鱼可以看作为宿主机,而集装箱可以理解为相互隔离的容器.每个集装箱都包含自己的应用程序.即可以是一个应用也可以是一套服务,甚至是一个操作系统. docker和虚拟机的区别 特性 dock

内网部署支持ssl的docker registry

首先需要使用域名或主机名制作证书,自签证书在内网可以使用,因为内网可排除信任问题,自签证书流程可以参考使用自签的证书配置nginx的https. 证书制作完成我们开始部署registry,当前registry v2版已经发布,所以我们使用v2版部署测试,部署之前需要运行docker daemon 1.将制作好的证书copy到/etc/docker/certs.d/${domain}/ca.crt中,注意目录中的domain是registry的域名或主机名,同时也是制作证书时的输入的Common

Ubuntu-Docker[1]安装Docker,通过Docker部署net core代码,需要结合[.NET Core 18]发布、ASP.NET Core Docker部署

1)通过系统自带包安装 通过自带包安装,可能Docker版本较旧 $ sudo apt-get update Reading package lists... Done $ sudo apt-get install -y docker.io {{{-y表示同意.没有-y也可执行,系统会问是否安装,输入y回车即可 apt-get -y install这个指令则是跳过系统提示,直接安装.}}} Adding group `docker' (GID 121) ... Done. docker star

在Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控

关于 Docker 容器的监控,google cAdvisor 是个很好的工具,但是它默认只显示实时数据,不储存历史数据.为了存储和显示历史数据.自定义展示图,可以把将cAdvisor与InfluxDB.Grafana 集成起来. 需要的镜像: tutum/influxdb google/cadvisor grafana/grafana 安装:有8台mesos-slave,都需要运行一个cAdvisor docker实例对docker进行监控,然后需要运行一个InfluxDB docker实例存

docker 拷贝镜像文件

1.概述 我们制作好镜像后,有时需要将镜像复制到另一台服务器使用. 能达到以上目的有两种方式,一种是上传镜像到仓库中(本地或公共仓库),但是另一台服务器很肯能只是与当前服务器局域网想通而没有公网的,所以如果使用仓库的方式,只能自己搭建私有仓库,这会在另一篇文章中介绍. 如果我们仅仅是要复制到另外少数的服务器,搭建私有仓库显然没有这个必要,而将镜像保存为文件上传到其他服务器再从文件中载入镜像也是一个不错的选择. 可以使用Docker save和Docker load命令来存储和载入镜像. 2.保存