Decker ce版社区(个人、免费)版安装

(镜像、容器、仓库)docker基本组成三大对象

 

先安装虚拟机VMware14或者15。

再在虚拟机上安装linux系统CentOS-7版本。

最后检查安装好的虚拟机是否网络正常,如果不正常到服务器中启动vmware相关的几个服务。

 

docker的架构图

 

 

 

 

官网地址:

https://docs.docker.com/engine/install/centos/

  • 环境准备:
yum -y install gcc
yum -y install gcc-c++

1卸载老的版本:(root账户sudo命令可以不要)

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2.正式安装:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3.添加软件源信息:

 

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新 yum 缓存:

sudo yum makecache fast

5.安装 Docker-ce:

sudo yum -y install docker-ce

6.启动 Docker 后台服务

sudo systemctl start docker

7.测试运行 hello-world  ------------运行这之前最好配置国内的镜像加速

docker run hello-world
  • 镜像加速

登录阿里云

进入容器镜像服务

镜像加速地址:

https://znwxqy7s.mirror.aliyuncs.com

Linux6.8  配置文件路径:/etc/sysconfig/docker

vim /etc/sysconfig/docker

修改other)args=”” 中添加阿里镜像加速地址

重启docker后台服务:

servic docker start

 

docker viersion 验证配置是否正确。

Linux7以上配置文件:/etc/docker/daemon.json

可能本地没有daemon.json文件

配置文件中添加:

{
“registry-mirrors”: [“https://znwxqy7s.mirror.aliyuncs.com”]
}

重启运行:

systemctl daemon-reload
systemctl restart docker

 

 

或者直接运行下列直接改好:

 

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
“registry-mirrors”: [“https://znwxqy7s.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
View Code

 

 

 

 测试是否配置好镜像加速

ps -ef| grep docker

 

 

 

  •  下一个话题

 运行

docker run hello-world

  •  镜像和容器命令

帮助命令

docker 验证

docker version

docker 的信息

docker info

docker 帮助命令

docker --help

 

 

 

  • 镜像命令

列出本地主机上的镜像

 

docker images

 

 OPTIONS说明: -a :累出本地所有的镜像(含中间映像层) -q:只显示镜像id   --digests:显示镜像的摘要信息(DIGEST说明)   --no-trunc:显示完整的镜像信息(IMAGE ID完整id)

  镜像的仓库源  镜像标签(默认latest---最新版) 镜像id     创建镜像的时间              卷标大小

 

 查询镜像 docker search      查询目标网站:官网 hub.docker.com

OPTIONS说明: -s :列出收藏数不小于指定值的镜像  --automated:之类出automated build类型的镜像 --no-trunc:显示完整的镜像描述

docker search tomcat

 

 

 下载镜像docker pull 下载对象

docker pull tomcat

 

 

 删除某个镜像 docker rmi 镜像id和名称

 

docker rmi

 

 用名称删除

 

 

-f 强制删除  名称删除需要唯一名称
-f  hello-world nginx 多少删除

全部全面所有的删除   是组合命令
docker -f $(docker images -qa)
  •  容器命令

 新建并启动容器  options说明(常用):有些是一个减号,有些是二个减号。  --name=“容器新名字”:为容器指定一个名称

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

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

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

-P:水机端口映射;

-p:指定端口映射,有以下四种格式。     ip:hostPort:containerPort        ip::containerPort   hostPort:containerPort   containerPort

                          选项参数 镜像

docker run [OPTIONS] IMAGE [COMMAND] [ARG..]

列:以300e315adb2f镜像生成了一个容器 mycentos005  且已经进入了新的centos里           a9b72b122da6新生成对象的地址

docker run -it --name mycentos005 300e315adb2f

 

 列出当前所有正在运行的容器

options说明:-a:列出当前所有正在运行的容器+历史上运行过的   -l:显示最近创建的容器  -n:显示最近n个创建的容器。 -q:静默模式,只显示容器编号。  --no-trunc:不截断输出。

docker ps

 

 退出容器

exit  容器停止退出     关闭容器并退出

ctrl+P+Q  容器不停止退出

 启动容器

docker start 容器id或者容器名

重启容器

docker restart 容器id或者容器名

停止容器

docker stop 容器id或容器名

强制停止容器

docker kill 容器id或容器你名

删除已停止的容器

docker rm 容器id或容器名

一次性删除多个容器 

管道符 前面的结果传给下一个 |  xargs

docker rm -f $(docker ps -a -q)

docker ps -a -q | xargs docker rm   

启动守护式容器

docker run -d --name mycentos008 centos

查看容器日志 -t是加入时间戳  -f跟随最新的日志打印  --tail 数字 显示最后多少条

docker logs -f -t --tail 容器id或容器名
docker run -d centos /bin/sh -c "while true;do echo hello whj ;sleep 2;done"

 

 

 查看容器内运行的进程

docker top 容器id或容器名

查看容器内部细节

docker inspect 容器id

 

 直接进入容器的启动命令的终端,不会启动新的进程-----进入在运行的容器

docker attach fed5919cf819

 

 

 

 实在容器中打开新的终端,并且可以启动新的进程---------在外层直接运行在某个容器中运行命令docker exec -t af94e99a49de ls -l /tmp

 docker exec -t af94e99a49de ls -l /tmp

 docker exec -t fed5919cf819 /bin/bash 同样进入容器里

 

 

 从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目标主机路径

 

 

 

  •  常用命令总结

 

 

 

 

 

 

 

 

 

 

 

  • docker 镜像

是什么?UnioFS(联合文件系统)--------------镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所有需要的所有内容,包括代码、运行时、库、环境变量和配置文件。

Docker镜像加载原理----------------

分层的镜像

为什么Docker镜像要采用这种分层结构

特点:docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

 

  • 镜像操作补充commit

docker commit 提交容器副本使之成为一个新的镜像。

docker commit -m=“提交的秒速信息” -a=“作者”  容器id要创建的目标镜像名:[标签名]

                                     容器运行访问端口:镜像内部端口

docker run -it -p 8888:8080 tomcat:8.5.32

 

访问:localhost:8888  结果404
原因:该镜像的容器实例中的webapps目录下total为0
解决:
1、先查看防火墙状况  service firewalld status
2、如果防火墙时开的,需要关闭
     关闭防火墙  systemctl stop firewalld.service
     禁止防火墙开机启动   systemctl disable firewalld.service
     重启docker   systemctl restart docker

 

P随机分配端口

docker run -it -P  tomcat

复习停止
 docker stop  容器名或者容器ID 
 docker kill 容器名或者容器ID 
 docker rm -f 容器名或者容器ID   强制删除

docker rm -f $(docker ps -q)删除正在运行的容器

 

 删除tomcat帮助文档

 

 

 使用删除后的容器打包成新的镜像

docker commit -a="whj" -m="del tomcat docs" 53e5df4ace6a atwhj/mytomcat:1.8

运行新的自己的镜像

docker run -it -p 8888:8080 atwhj/mytomcat:1.8

用新自己打包的镜像运行同样没有帮组列

 

 守护式容器启动

docker run -d -p 7777:8080 atwhj/mytomcat:1.8

 

 

 

 

容器数据卷

 特点:1。数据卷可在容器之间共享或重用数据

2.卷中的更改可以直接生效。

3.数据卷中的更改不会包含在镜像的跟新中。

4.卷数据的生命周期一直持续到没有容器使用它为止。

 数据卷

向容器内添加内容

命令

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

宿主对应目录下文件和容器下目录完全一样修改,删除,新增。且容器停止后,再启动同样和宿主机上的内容一样。还有使用宿主机上一个现有文件夹创建容器,开启后的容器对应卷中也有宿主机下对应的内容。并且宿主卷中删除都对应目录,容器中目录在文件不在

如果宿主机上写数据出现:cannot open directory:Permissiondenied

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

docker run -it -v /宿主机绝对路径目录:/容器内目录 --privileged=true  镜像名

 

 

 

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

 ro 只读权限,是单项容器上只可以查看,容器上对应不目录下不可以新建,修改,删除。而宿主机上对应目录可以新增,修改,删除影响到容器上。

 

重启命令:
1、reboot
2、shutdown -r now 立刻重启(root用户使用)
3、shutdown -r 10 过10分钟自动重启(root用户使用)
4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

关机命令:
1、halt   立刻关机
2、poweroff  立刻关机
3、shutdown -h now 立刻关机(root用户使用)
4、shutdown -h 10 10分钟后自动关机
如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启
View Code

 

数据卷容器

 

  • DockerFile

 

 

 

 

 

 创建个linux镜像,且在镜像容器运行是在根目录下创建2个数据卷目录,打印文字一段,最后到 /bin/bash

# voolume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD eco "finished,----------success1"
CMD /bin/bash


相当于命令中
docker run -it -v /host:dataVolumeContainer1 -v /host2:/dataVolumeContainer2  centos /bin/bash

 

 

 

 

 

数据卷容器 容器间传递共享(--volumens-from)

 

 

 

 

 

 

 

 

 

 

 创建一个容器,且有2个数据卷

docker run -it --name dc01 whj/centos 

 

 创建容器dc02 并继承容器dc01的数据卷

docker run -it --name dc02 --volumes-from dc01 whj/centos

 

 创建容器dc03 并继承容器dc01的数据卷

docker run -it --name dc03 --volumes-from dc01 whj/centos

删除dc01容器后,dc02数据卷修改,可以反馈到dc03

 

创建dc04容器,继承dc03

docker run -it --name do04 --volumes-from dc03 whj/centos

删除dc03 修改dc04 可以反馈到dc02

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-12-29 15:35  吴枫  阅读(133)  评论(0编辑  收藏  举报