docker

1.什么是容器

容器就是在隔离的环境中运行的一个进程,如果进程停止,容器就会退出。隔离的环境,拥有自己的系统文件,ip地址,主机名。

程序:代码,命令。

进程:正在运行的程序。

2.容器和虚拟机的区别

容器:共用宿主机内核,轻量级,损耗少,启动快,性能高,只能运行在linux系统上

虚拟机:需要硬件的支持,需要模拟硬件,需要走开机启动流程,可以运行不同的操作系统

虚拟机运行服务,需要经过linux开机启动流程。而容器第一个进程直接启动服务。

3.docker容器

docker是通过进程虚拟化技术来提供容器的资源隔离与安全保障等。docker通过操作系统层的虚拟化实现隔离,所以docker容器在运行时,不需要额外的操作系统开销

4.docker的安装

rm -fr /etc/yum.repos.d/local.repo

curl- o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo

yum install docker-ce -y

5.docker的主要组成部分

docker是传统的CS架构分为docker client和docker server,像mysql一样

docker主要部件有:镜像、容器、仓库、网络、存储

启动容器必须需要一个镜像,仓库存储镜像 容器--镜像--仓库

6.启动第一个容器

官方镜像网址:

- http://hub.docker.com/

配置docker镜像加速

vi/etc/docker/daemon.json

{

"registry-mirrors": ["https://registry.docker-cn.com"]

docker run -d -p 80:80 nginx

run(创建)

-d 放在后台

-p 端口映射

nginx docker镜像里的名字

7.docker的镜像管理

查看镜像列表 docker images(docker image ls)

删除镜像 docker rmi 例子(docker image rm centos:latest)

导出镜像 docker save 例子 (docker image save 被导出的镜像名字 -o 导出后的压缩包名字)

导入镜像 docker load 例子 (docker image load -i 要导入的镜像压缩文件)

docker search 镜像名 搜索镜像

docker pull 镜像名 没有指定版本,下载最新版镜像

docker pull 镜像名:版本 下载指定版本镜像

docker pull 域名/用户名/镜像/版本 下载私有仓库镜像

8.docker的容器管理

docker run -d -p 80:80 nginx:latest

run 创建并运行一个容器

-d 放在后台

-p 端口映射

-v 源地址(宿主机):目标地址(容器)

nginx:latest docker镜像的名字

docker run -it --name centos6 centos:6.9 /bin/bash

-it 分配交互式的终端interactive tty

--name 指定容器的名字

/bin/sh 覆盖容器的初始命令

创建运行容器

docker run image_name

docker run ==== docker create + docker start

启动容器

docker start

停止容器

docker stop CONTAINER_ID

杀死容器

docker kill container_name

查看容器列表

docker ps (-a -l -q)  -a:查看全部   -l:查看最近的一条    -q:只显示ID号

进入正在运行的容器(目的,调试,排错)

docker exec (会分配一个新的终端tty)

docker exec -it 容器id或容器名字 /bin/bash(/bin/sh)

docker attach(使用同一个终端)偷偷离开ctrl+p;ctrl+q

删除容器

docker rm

批量删除容器

docker rm -f  `docker ps -a -q`

总结:docker容器内的第一个进程必须一致处于前台运行的状态,否则会处于退出状态

nginx的:nginx -g 'daemon off;'

zabbix的:/usr/sbin/zabbix_agentd -f -c /etc/zabbix/zabbix_agentd.conf

9.docker容器的网络访问(端口映射)

指定映射(docker会自动添加一条iptables规则来实现端口映射)

-p 容器端口:宿主机端口

-p 不同容器ip:容器端口:宿主机端口 多个容器都想使用同一个端口

-p 宿主机ip:空(宿主机随机端口):容器端口 

-p 宿主机端口:容器端口/udp

-p 10.0.0.100::50/udp 使用宿主机的10.0.0.100这个ip地址的随机端口的udp协议映射容器的udp53端口

-p 81:80 –p 443:443 可以指定多个-p

-P 随机端口映射

10.docker的数据卷管理

查看卷:docker volume ls

删除容器不会删除卷

-v 卷名:/data 启动一个随机的卷存放数据 (第一次卷是空,会容器的数据复制到卷中,如果卷里面有数据,把卷数据的挂载到容器中)

-v src(宿主机的目录):dst(容器的目录) 

数据卷容器

​ --volumes-from(跟某一个已经存在的容器挂载相同的卷)

11.手动将容器保存为镜像

1:启动一个基础容器,安装服务(部署项目)

docker run -it -p 80:80 centos:6.9

####

echo "

192.168.37.200

mirrors.aliyun.com" >>/etc/hosts

curl -o /etc/yum.repos.d/CentOS-Base.repo

http://mirrors.aliyun.com/repo/Centos-6.repo

curl -o /etc/yum.repos.d/epel.repo

http://mirrors.aliyun.com/repo/epel-6.repo

yum install nginx -y

yum install unzip -y

cd /usr/share/nginx/html/

rm -fr *

curl -o yiliao.zip

http://192.168.37.200/191127/everyxiaoqiang-yiliao-master.zip

unzip yiliao.zip

mv yiliao/* .

####

2:把安装好服务的容器,提交成镜像

docker commit 9f366f3988cd yiliao:v1

3:测试,刚才提交的镜像

docker run -d -p 81:80 yiliao:v1 nginx -g 'daemon off;'


总结


1.什么是容器

容器就是在隔离的环境中运行的一个进程.如果进程结束,容器退出. 这个隔离的环境,有自己的系统文件,ip地址,主机名,进程管理

2:容器和虚拟机的区别

容器:   不依赖硬件cpu支持共用宿主机内核,轻量级,启动快,性能高,损坏少

虚拟化: 依赖硬件cpu支持,拥有自己的内核,

docker用的多: 节省成本

3:docker-ce的安装

centos base源  docker engine 1.13

docker.repo

yum install docker-ce 17.03  1903

4:docker主要内容

容器 镜像 仓库  网络  存储  监控

5:docker镜像常用命令

docker image:

docker image ls     查看镜像列表

docker image rm     删除镜像

docker image load   导入镜像

docker image save   导出镜像

docker image pull   下载镜像(拉取镜像)

docker image push   上传镜像

6:docker容器的常用命令

docker run 创建并启动容器

docker kill 强制关闭容器

docker rm   删除容器

docker ps   查看容器列表

docker start 启动容器

docker stop   关闭容器

docker restart 重启容器

docker exec    进入正在运行的容器(分配一个新的端口)(排查错误)

docker attach  进入正在运行的容器(同一个终端)

docker logs    查看容器的终端输出(排查错误)

7:docker端口映射

docker run -p

宿主机端口:容器端口  最常见

ip1:宿主机端口:容器端口   ip2:宿主机端口:容器端口

ip1::容器端口  随机端口

ip1::容器端口/udp

-p 宿主机端口1:容器端口1  -p 宿主机端口2:容器端口2

docker run -P 自动随机端口映射

8:docker数据卷

docker run  -v  宿主机目录:容器目录   -v 宿主机文件:容器文件

9:手动制作镜像

a:启动一个基础容器,在容器安装自己的服务

b:把安装好服务的容器提交为镜像

c:测试镜像是否可用

你可能感兴趣的:(docker)