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> 强制删除容器(运行中也可以被删除)

posted @ 2022-11-01 11:09  yeahzxw  阅读(35)  评论(0)    收藏  举报