docker基础

查看centos版本

[root@VM-8-4-centos ~]# uname -r

3.10.0-1127.19.1.el7.x86_64

[root@VM-8-4-centos ~]# cat /etc/redhat-release

CentOS Linux release 7.9.2009 (Core)

[root@VM-8-4-centos ~]#

docker info --查看自己的云加速地址

镜像与容器的关系

Docker
面向对象
容器
对象
镜像

Person p = new Person();
docker镜像实际就是由一层一层的文件系统组成,这种层级的文件系统UnionFS

Docker利用容器(Container)独立运行的一个或一组应用

容器是用镜像创建的运行示例, 简易版的Linux的环境

bootfs

bootfs(boot file system)主要包含bootloader和kernel(Linux内核)

bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,

在docker镜像的最底层是bootfs

这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核

当boot加载完之后整个内核就都在内存中了,此时内存的使用权已经由bootfs转交给内核,此时系统也会卸载掉bootfs

rootfs

rootfs(root file system)在bootfs之上,包含的就是典型的Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件,

ootfs就是各种不同的操作系统发行版, 比如Centos  Ubuntu等等

仓库(Respository)

是集中存放镜像的场所
**    仓库和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库又包含了多个镜像**

**    每个镜像都有不同的标签(tag)**

仓库分为公开仓库库和私有仓库两种形式
**    最大的公开仓库是Docker Hub**

**    存放了数量庞大的镜像提供用户下载,国内的公开仓库包含阿里云,网易云等**

容器数据卷

实现容器间传递共享(--volumes-from)

主机到容器,容器到主机

鲸鱼背上有集装箱(文字)

docker              --鲸鱼

集装箱             --容器实例

蓝色的大海     --Windows10

集装箱图示(鲸鱼背上的集装箱图示)

为什么要分层--->共享资源

查看当前所有镜像id

docker images -q

docker images -qa

显示摘要信息

docker images --digests

运行时如果本地没有就会去远端仓库去拉,本地有就用本地的

--name="容器新名字":为容器指定一个新名称

-d:后台运行容器,并且返回容器id,也就是启动守护式容器

-i:以交互式模式运行容器,通常与-t同时使用

-t:为容器重新分配一个伪输入终端,通常与-i同时使用

-P:随机端口映射

-p:指定端口映射,有以下四种形式

ip:hostPort:containerPort

ip::containerPort

hostPort:containerPort

cintainerPort

运行容器实例

docker run -it --name mycentos001 centos[版本]

创建并运行容器,暴露端口

p:指定端口

P:随机分配

docker run -it -p 9090:8080 tomcat

停用全部运行中的容器:
docker stop $(docker ps -q)
删除全部容器:
docker rm $(docker ps -aq) admin gateway user customer
一条命令实现停用并删除容器:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
回到宿主机但不退出容器

ctrl+p+q

显示当前正在运行的容器

docker ps

显示所有正在运行和历史运行过的容器

docker ps -a

显示前N次运行的容器

docker ps -n 3

显示上一次运行的容器

dokcer pa -l

启动容器(必须创建容器才能启动)

docker start [ID]或者[名字]

重新启动容器

docker restart [ID]或者[名字]

强制停止(直接拔插头)

docker kill [ID]

温柔停止(点击关机)

docker stop [ID]或者[名字]

删除容器

docker rm [ID]

删除镜像

docker rmi [ID]

删除正在运行的容器

dokcer rm -f [ID]

启动守护式容器就是后台运行, 后台运行容器必须要有一个前台进程,不然就会自动退出

docker run -d

每个两秒钟打印hello abaaba

docker run -d centos /bin/bash -c "while true;do echo hello abaaba;sleep 2;done"

查看某一个具体容器的日志,追加到后面

docker logs -t -f --tail [ID]

查看当前容器正在运行的进程

doker top [ID]

查看整个容器的细节

docker inspect [ID]

重新进入没有退出的容器

docker attach [ID]

进入容器(还没进入容器,直接操作命令可以得到结果[/bin/bash])

docker exec -t [ID] /bin/bash [ls -l /temp]

查看容器详细信息

doker inspect [容器ID]

如果不能执行 ls ll这种命令就

/bin/bash

删除正在运行的所有容器

docker rm -f $(docker ps -q)

创建文件

touch 【文件名】

从容器拷贝文件到Linux

docker cp [ID]:/路径/文件 /root

例如:docker cp 10h23bb388:/temp/yum.log  /root

从10h23bb388容器下的temp下的yum.log文件拷贝到Linux下面的/root目录下

dockerfile文件编写

volume test

继承镜像

FROM centos

数据卷-实质是叠加新功能的地方

VOLUME ["/dataVolumeContainer1 --privileged=true","/dataVolumeContainer2","/data3","/data4"]

执行成功后打印输出

CMD echo "finished,-----------success1,成功创建镜像"

启动时创建命令

CMD /bin/bash

等价于:docker  run  -it  -v  /host1:/dataVolumeContainer1   -v  /host2:/dataVolumeContainer2  centos  /bin/bash

docker挂载主机目录Docker访问出现cannot open directory .:Permission denied

解决办法:在挂载目录后面多加一个 --privileged=true参数即可

追加共享,同步

可以得出结论:

容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

如果最后一个容器也被 删掉了,那么数据卷里面的数据才会消失

继承(传递共享 ):

docker run -it --name centos2 --volumes-from centos1 lihonglin/centos

dockerfile添加

根目录下创建mydocker文件夹并进入

可以在DockerFile中使用VOLUME指令来给镜像添加一个或者多个数据卷

file构建

build后生成镜像

run容器

build创建

docker build -f /mydocker/mydockerfile -t lihonglin/centos .

返回HTML页面

dokcerfile常用命令

FROM:基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER:镜像作者和邮件地址
CMD:指定一个容器启动时要运行的命令,Dockerfile中可以有多个CMD指令,但是只有最后一个生效,CMD会被docker run 之后的参数替换
ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
RUN:容器构建时需要运行的命令
EXPOSE:当前容器对外暴露的端口
WORKDIR:指定在创建容器后,终端默认登录进来的工作目录,落脚点
ENV:用来在构建镜像过程中设置环境变量
ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY:类似ADD,拷贝文件和目录到镜像中,将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像中的<目标路径>位置
VOLUME:容器数据卷,用于数据保存和持久化工作
ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后 父镜像的onbuild被触发

此处转

docker全部命令

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

posted @ 2021-02-04 20:20  造化三境修行者  阅读(89)  评论(0)    收藏  举报