docker常用命令规范整理

docker常用命令规范整理

1.基础三要素

容器 镜像 仓库(默认是外国的仓库。一般配置阿里云的镜像仓库,每个人都不一样,自己注册!)
可以安装在c6.8以上的centos系统(c7 版本是docker-ce)

2.常用命令:

#按从一个陌生的服务器,部署自己的容器的逻辑整理的命令。

docker
历史#############
docker-ce 社区版本
docker 是还没商业化之前的版本。
docker-ee 是从17版本开始的。docker默认c7安装的是13版本的。从17年开始有的ee商业版本。

yum install  docker-ce  | docker| docker-ee  是有区别的的!!!!

1. 看 从底层到容器的维度理解

看docker基础信息

docker -v       #查看版本号
docker version  # 查看详细版本信息,重点包括cc还是ce版本 (本身内部信息)
docker info     #查看容器的运行详细信息##默认仓库地址(一般是配置相关的)(一般说的加速,就是换仓库,阿里云还要自己登陆注册,然后给一个唯一的url,本质都是仓库)

看镜像相关

查看镜像列表: 重点是本地镜像!
docker images
docker image ls
搜索镜像 :本地没有就是默认仓库搜索了
Docker Hub官网:https://hub.docker.com/	
docker search + 镜像名字
##kubeadm安装初始化的时候哦,下载镜像找不到。使用命令也搜不到,这个时候搜索简短的名字,找到后去官网镜像仓库,查找tag标签去下载。
https://hub.docker.com/

看容器相关

docker  ps       查看所有活动的容器  -a 会把停止的显示出来
docker  inspect  容器名字     查看容器本身的详细信息
docker  logs      容器名字     查看日志##所有的日志,会滚动很长时间,无法中断。  -f 显示部分最新的,实时更新
                   --tail n   比较常用!!!!!!!

2.docker镜像的基本操作。 从 接触别人的容器-到主机修改的逻辑排序。

导入导出
导出,导入镜像:
docker image save centos > docker-centos6.9.tar.gz
导入镜像:
docker image load -i docker-centos6.9.tar.gz
构建镜像

当前目录有Dockerfile 此名字的文件!
文件编写格式略)

docker build -t nginx:test . #名字需要自己指定

#Dockerfile 文件理解:

1.理解它,就是我们要 修改一个微型的linux系统上运行软件的 小系统。
2.常用的关键字
  FROM <image>
  FROM <image>:<tag>
  FROM <image>@<digest>

不加后缀版本,就下载最新的。
轻量修改容器的参数:

ADD test /absoluteDir/    # 添加 "test" 到 /absoluteDir/
  添加文件到容器中,类似的COPY (不会自动解压tar包)

    ENV myDog Rex 	
    ENV myCat=fluffy

启动后的环境变量

EXPOSE <port> [<port>...]
只写一个端口=暴露给外面的端口,需要容器内部自己监听。
写两个端口=映射到节点上==启动时候 -p

重度修改:

  WORKDIR /a  (这时工作目录为/a)
配合执行脚本/命令的参数,使用。简单理解就是 cd
    RUN apk update
    RUN ["/etc/execfile", "arg1", "arg1"]
#执行容器内部有的命令,完成大量操作的作用。括号可以带也可以不带。
#可以写多个RUN 运行多次。
#格式: 命令 参数 |脚本  参数
注:RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,
可以在构建时指定--no-cache参数,如:docker build --no-cache

    CMD echo "This is a test." | wc -l
    CMD ["/usr/bin/wc","--help"]
#同RUN 注意引号
注:CMD不同于RUN:只能用一次;CMD用于指定在容器启动时所要执行的命令,不能执行结束,要一直输出信息,不然容器就停了。
提交镜像

镜像重启,数据就恢复了。所以小修改可以提交为新的镜像。

docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1 

删除镜像: (删除容器取消image即可)
如何当前镜像有正在运行的容器,会提示报错。

docker image rm centos:latest
docker image rm 578c3
docker rmi -f image_ID  强制删除

#批量删除

docker rmi  -f  $(docker images  | awk '{print $3}')

推送指定镜像到docker镜像源服务器(默认从官方仓库获取)

(docker login #需要先登录仓库)
一般会tag一个带ip的标签给镜像,会重新复制一份,如果不带版本,默认latest,没有此版本会报错。
然后直接用命令推送
docker tag nginx:latest 10.0.0.11:80/nginx:latest
docker pull daocloud.io/huangzhichong/alpine-cn:latest   拉(不写地址就是默认官方下载)
docker push 10.0.0.11:80/nginx:latest   推

显示一个镜像的历史

docker history image_name  
#可以查看镜像详细的信息,包括启动命令的详细参数。
docker image history 39f8d6036406  --no-trunc |grep 39f8d6036406 
#查看docker启动命令,环境变量等参数。
docker inspect 39f8d6036406

#这里查看容器的运行状态,详细的构造信息,还是看inspect

kubectl describe pod djangoblog-664b9c97b6-kgflx

#镜像不能直接修改,所以没有修改命令
容器相关
#容器是一个程序,是从镜像启动的。一个镜像如果没有一直执行的程序,容器启动并执行完后就会关闭。
每个容器都是一个微型root文件系统,支持bash登录。
一旦创建容器,就会生成容器的文件。而且会越来越多。记得用容器命令清理不用的容器。

3.docker 容器的基本操作。

(从创建到删除的逻辑分析)

创建

( it 参数 接收用户输入+伪终端 为后期用户登录容器的作用。)
docker create -it ubuntu:latest
docker start af                     #名字是容器的名字或容器id的前缀都可以

==docker run ubuntu:18.04 /bin/echo 'Hello World'
docker run -p 80:80 -v /data:/data -d nginx:latest   #附带端口转发和本地目录

docker run -d -it --name busybox_2 --link busybox_1 busybox /bin/sh -c “while true;do sleep 3600;done” #link命令一般都会重新定义容器为另一个名字,只能自己识别,并且是单向的。

#一般是-itd参数 d是后台运行,不会应为操作的终端退出而终止。

docker rm 容器名字

docker stop 容器名字
docker start 容器名字

操作容器-登录,查看,修改
#官方推荐 多终端同时登录,会自动同步,一旦一个终端卡住,所有无法使用

docker attach [--detach-keys[=[]]] [--no-stdin] [--sig-proxy[=true]] CONTAINER

常用登录方式

docker exec [-d|--detach] [--detach-keys[=[]]] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER]] CONTAINER COMMAND [ARG...]
docker exec -it 243c32535da7 /bin/bash

#容易混淆的概念 run针对的是镜像 exec是容器。第一次创建容器的时候可以用run进入容器。之后再用这个命令就是重复创建并进入。
exec 就是进入容器
#因为都是bash 的界面容易混淆。run后面不写会有默认的启动命令,但是exec不写就报错。
后面可以直接写 容器里面有的命令,直接操作容器。

docker run -it nginx:latest /bin/bash
docker exec -it 243c32535da7 /bin/bash

docker cp 文件 容器id:目录 直接拷贝文件。不能用*,会报错。

多容器启动程序,一般不用,k8s代替

使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。

############################################################################network

4.网络资源,只限本机

加入同一网络的容器,互ping 主机名是可以通的。(如何不加入网络,只能靠自己的ip通信)

docker network create -d bridge test-net

docker run -itd --name test1 --network test-net ubuntu /bin/bash
docker run -itd --name test2 --network test-net ubuntu /bin/bash


docker network ls

登录容器,互ping是可以通的。

#跨主机通信:
把自己的端口映射给宿主机(最简单!)
直接路由模式:修改docker0网卡,为不同的网段,增加相互路由通信。
pipework 第三方工具 桥接网络。

隧道网络,和k8s类似。

网络差,使用其他镜像下载:

pip install multiprocessing -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChengRuoFei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值