docker学习1

1.docker常用管理命令
格式  docker image   【】
ls     列出镜像docker学习1_第1张图片
bulid     构建镜像利用dockerfile
history      查看docker学习1_第2张图片
inspect    显示一个或多个镜像的详细信息
pull    从镜像仓库拉取镜像
rm    移除一个或多个镜像
push    推送一个镜像到镜像仓库
prune    移除没有被标记或者没有被任何容器引用的镜像
tag    创建一个引用源镜像标记目标镜像
save    保存一个或多个镜像到一个tar文件  
load    加载镜像来自tar或者标准输入

1.docker常用管理命令
格式  docker image   【】
ls     列出镜像
bulid     构建镜像利用dockerfile
history      查看
inspect    显示一个或多个镜像的详细信息
pull    从镜像仓库拉取镜像
rm    移除一个或多个镜像
push    推送一个镜像到镜像仓库
prune    移除没有被标记或者没有被任何容器引用的镜像
tag    创建一个引用源镜像标记目标镜像
save    保存一个或多个镜像到一个tar文件  
load    加载镜像来自tar或者标准输入
2.docker中run参数的用法
-i, -interactive      交互式
-t, -tty        分配一个伪终端
主要-it基本是一起用的主要用途是进入容器和创建一个伪进程
例:docker exec -it   容器id  bash    (进入到容器里面)
例:docker run -it -d nginx(镜像)    (创建一个伪进程,使进程不退出)

-d,-detach    运行容器到后台
例:docker run -a nginx(镜像)     (后台运行nginx镜像)

-e, -env        设置环境变量
例:docker run -d -e env=prod nginx(镜像)    (nginx镜像使用prod环境变量)

-p, -publish list    发布容器端口到主机
例:docker  run -d -p 8080:80  nginx(镜像) (后台运行docker镜像并暴露本地的8080端口作为容器对外映射端口)

--name string    指定容器名称
例:docker run -d --name web nginx(镜像)    (容器名称为web,使用nginx镜像)

-h, -hostname    设置容器主机名
例:docker run -d -h web nginx(镜像)    (容器主机名称为web,使用nginx镜像)

--restart string    容器退出时重启策略,默认no, 可选值: [always|on-failure]
例:docker run -d --restart=always   nginx(镜像)    (容器退出值为always重新拉起镜像)

-m, -memory    容器可以使用的最大内存量
例:docker run -m="500m"   nginx(镜像)    (容器只可以使用500m的宿主机内存)

--cpus        可以使用的CPU数量
例:docker run --cpus="1"   nginx(镜像)    (容器只可以使用1个宿主机的cpu)

-cpuset-cpus    限制容器使用特定的CPU核心,如(0-3, 0,1)

-cpu-shares    CPU共享(相对权重)


总结上面的命令
docker run -d -e env=prod  -p 8080:80  --name web -h web --restart=always   -m="500m"  --cpus="1"   nginx(镜像)(启动一个环境变量为prod,
主机名和容器名称为web,对外映射端口为8080,内存为500m,cpu为1核的容器,如果容器退出值为always即重新拉起镜像)

--ip string    指定容器IP,只能用于自定义网络

--network    连接容器到一个网络

-V, -volume list   --mount mount (新方式)    将文件系统附加到容器

-P, -publish-all    发布容器所有EXPOSE的端口到宿主机随机端口

-memory-swap    允许交换到磁盘的内存量

-memory-swappiness= <0-100>    容器使用SWAP分区交换的百分比(0-100, 默认为-1)

-oom-kill-disable    禁用OOM Killer

-cpuset-cpus    限制容器使用特定的CPU核心,如(0-3, 0,1)

-cpu-shares    CPU共享(相对权重)

3.常用管理命令
ls         列出容器
例:docker container ls         (查看列出所有容器)
例:docker ps             (查看列出所有容器)
例:docker ps -l            (查看最新创建的容器)
inspect         查看一个或多个容器详细信息
例:docker inspect nginx(镜像)    (查看nginx镜像详细信息)
exec         在运行容器中执行命令
例:docker exec -it    容器id        (进入该容器内部)
commit         创建一个新镜像来自一个容器
例:docker commit  容器id或容器名字 镜像名字    (把老容器创建为一个新镜像)
cp         拷贝文件/文件夹到一个容器
例:docker cp anaconda-ks.cfg 容器id或容器名字:/    (拷贝一个文件到容器/目录下)
例:docker exec d250950ce93a ls /        (查看文件是否拷贝进来) 
logs         获取一个容器日志
例:docker  logs            (查看容器日志)
port         列出或指定容器端口映射
例:docker port  容器id或容器名字    (查看容器端口)
top         显示一个容器运行的进程
例:docker top  容器id或容器名字    (查看容器运行的进程)
stats         显示容器资源使用统计
例:docker  stats  容器id或容器名字    (查看容器资源利用率)
stop/start/restart     停止/启动一个或多个容器
例:docker  stop/start/restart  容器id或容器名字 (停止/启动一个或多个容器)
rm         删除一个或多个容器
例:docker rm 容器id或容器名字       (删除一个容器)
例:docker rm  -f 容器id或容器名字       (强制删除一个容器)
例:docker rm  -f $(docker ps -q)       (强制删除所有容器)
prune         移除已停止的容器
例:docker container prune           (移除已停止的容器)

docker  ps -a         (列出所有容器,包含已退出的)
docker  ps -q         (列出所有容器id,不包含已退出)


4.容器数据持久化
1.volumes     docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)
创建数据卷
例:docker volume create nginx-vol
例:docker volume ls
例:docker volume inspect nginx-vol
2、使用数据卷
例:docker run -d --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
例:docker run -d --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx
2.bind mounts    将宿主机上的任意位置的文件或者目录挂载到容器中
例:docker    container prune           (移除已停止的容器)
docker run -d -e env=prod  -p 8080:80  --name web -h web --restart=always   -m="500m"  --cpus="1"   -v   /usr/local/nginx/:/usr/share/nginx/html   nginx(镜像)(启动一个环境变量为prod,
主机名和容器名称为web,对外映射端口为8080,内存为500m,cpu为1核,容器挂载路径为 /usr/local/nginx/的容器,如果容器退出值为always即重新拉起镜像)


5.容器网络
veth pair:成对出现的一种虚拟网络设备,数据从一端进,从另一端出。 用于解决网络命名空间之间隔离。

docker0:网桥是一个二层网络设备,通过网桥可以将Linux支持的不同的端口连接起来,并实现类似交换机那样的多对多的通信。

docker网络进来
iptables利用DNAT目标地址转换
iptables -t nat -vnL DOCKER(查看iptables网络转换)
    1    60 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:8080 to:172.17.0.2:80
docker网络出去
iptables利用SNAT源地址转换
iptables -t nat -vnL POSTROUTING
    0     0 MASQUERADE  tcp  --  *      *       172.17.0.2           172.17.0.2           tcp dpt:80

你可能感兴趣的:(docker,学习,容器)