docker基础知识
centos7
==docker配置相关==========================================================================
#备份yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#清理缓存
yum makecache
#修改配置文件
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
#下载所需插件
yum install lrzsz vim curl yum-utils device-mapper-persistent-data lvm2 wget openssl-devel libaio-devel nfs-utils openssh-server epel-release python-devel zlib-devel automake make cmakencurses-devel ipvsadm conntrack libxml2-devel autoconf socat
#----docker相关
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y docker-ce
#启动并开机自启动
systemctl start docker && systemctl enable docker
#查看运行状态
systemctl status docker
modprobe br_netfilter
cat >> /etc/sysctl.d/docker.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
cat >> /etc/rc.sysinit << EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules ;do
[ -x $file ] && $file
done
EOF
sysctl -p /etc/sysctl.d/docker.conf
cat >> /etc/sysconfig/modules/br_netfilter.modules <<EOF
modprobe br_netfilter.modules
EOF
#权限
chmod 755 /etc/sysconfig/modules/br_netfilter.modules
#
lsmod |grep br_netfilter*
#重启
systemctl restart docker
#创建目录
mkdir -p /etc/docker
#配置docker镜像加速源
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://2ev8c9el.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl status docker
======================================================================================
==docker命令相关==========================================================================
------镜像相关操作
docker search centos #通过镜像源搜索镜像
docker pull centos #拉取镜像
docker images #查看本地镜像
docker rmi centos #删除镜像
docker save -o centos.tar.gz centos #将镜像做成离线压缩包 -o:输入
docker load -i centos.tar.gz #将封装镜像解压
docker rm -f hello #强制删除容器
docker ps #查看正在运行中的容器
docker ps -a #退出或者运行中的容器都会列出来
docker logs hello #查看容器日志
docker stop hello #将容器停掉
docker start hello #将容器启动
------容器相关操作
#以交互式方法启动容器(exit会退出正在运行的容器)
docker run --name=hello -it centos /bin/bash #启动容器 --name=容器的名字(自己起),-it启动并进入,i交互式,t伪终端
docker run --name=hello -itd centos /bin/bash #启动容器,于上一直,d守护进程
#以守护进程方式启动容器(exit不会退出正在运行的容器)
docker exec -it hello /bin/bash
#
#案例1----通过docker部署一个nginx
docker run --name nginx -p 80 -itd centos
docker exec -it nginx /bin/bash
#不改下面俩个文件,nginx可能无法下载
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
ping www.baidu.com
yum install nginx vim wget curl -y
mkdir /var/www/html -p
cd /var/www/html/
cat >> index.htm << EOF
<html>
<head>
<title>nginx in docker</title>
</head>
<body>
<h1>hello,my name is yeahzxw</h1>
</body>
</html>
EOF
#修改nginx配置文件
cat /etc/nginx/nginx.conf
搜索root,将家目录指定为/var/www/html/
------
网站访问:http://192.168.1.47:49153/
注意:这里的IP是linux主机的IP,不是docker的,端口为docker -ps 映射出来的端口;
dockerfile语法详解----------------------------------------------------------
用来构建镜像文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
docker build #构建镜像,-f可以执行具体dockerfile文件
将以下内容复制到dockerfile中,
FROM centos
MAINTAINER xianchaoe
RUN yum install wget -y
RUN yum install nginx -y
COPY index.html /usr/share/nginx/htm1/
EXPOSE 80
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
#创建一个index.html文件,添加内容后↓
#开始构建
docker build -t="yeahzxw/nginx:V1" .
#运行
docker run -d -p80 --name html2 yeahzxw/nginx:V1
from 基础镜像,必须是可以下载下来的。
maintainer 作者
run 指定在当前镜像构建过程中要运行的命令(shell模式和exec模式)
expose 指定端口
cmd 类似于run,cmd是在docker run时运行,run是在docker build构建镜像时运行
ENTRYPOINT 类似于cmd
COPY 拷贝,将本地目录中文件或者目录拷贝到容器里指定路径中
VOLUME 定义匿名数据卷 启动是可用-v修改挂载点
WORKDIR 指定工作目录
ENV <key>=<value>如:env version=1.1.1
USER 切换用户,用户组等等,前提需要存在
ONBUILD 延迟构建命令的执行
label 给镜像添加标签
healthcheck 指定某个程序或者指令来监控docker容器服务的运行状态
=======================================================
DOCKER/docker容器
docker run -tid --name test ubuntu:14.04 创建并启动一个容器
docker ps 查看运行中的容器
docker create --name test ubuntu:14.04 创建一个容器但不启动
docker start test 启动一个容器
docker ps -a 容器执行启动命令结束后,会自动退出
docker pull ubuntu:14.04 从公有云仓库下载镜像
docker push ubuntu-mytest:0.1 上传一个镜像到仓库
docker images 列出本机全部镜像
docker tag e9ad3jsjf46 ubuntu-mytest:0.1 给一个镜像设置tag
docker rmi ubuntu-mytest:0.1 删除一个tag
docker rmi e9ad3jsjf46 删除一个镜像(本机),如果有被创建过,侧无法直接删除,可以加上-f强制删除
docker save -o ununtu.tar e9ad3jsjf46 导出镜像为一个文件
docker load -i ubuntu.tar 从本地导入一个镜像
-----------------------------------
容器操作(docker run)
--name 设置容器名称
--interactive(-i) 允许用户交互
--tty(-t) 打开一个终端
--detach(-d) 后台运行
-e 设置环境变量
--rm 退出后自动删除容器(与-d互斥)
-p 映射容器端口到宿主机
--privileged 特权模式
--entrypoint 设置启动命令
--cpu-shares 设置CPU限制
--memory(-m) 设置内存限制
--net 设置网络模式
-v 挂载宿主机目录
--link link到另一个容器
--security-opt 安全配置
-----------------------------------
docker 容器操作 运行时操作
$ docker ps 查看当前运行中的容器
$ docker ps -a 查看所有容器,包括正在运行中的和停止的
$ docker exec <container> <command> 在容器内执行一个命令
$ docker inspect <container> 查看容器的详细信息
$ docker logs <container> 查看容器的日志
$ docker top <container> 查看容器内运行的进程
$ docker port <container> 查看容器暴露的端口号
$ docker diff <container> 查看容器变化的文件
$ docker rename <container> 重命名容器
$ docker events 查看实时事件信息(从docker daemon获取)
$ docker stats <container> 实时显示容器的运行性能(CPU、内存、网络I/O、Block I/O)
-------------------------------------
$ docker stop <container> 停止一个正在运行的容器
$ docker rm <container> 删除容器(不能删除运行中的容器)
$ docker rm -f <container> 强制删除容器(运行中也可以被删除)

浙公网安备 33010602011771号