栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker学习

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker学习

docker基础及操作

容器运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

	$ docker run -itd --name ubuntu-test(name) ubuntu(image) /bin/bash

停止docker
$ docker stop <容器 ID>

重启docker
$ docker restart <容器 ID>

进入容器:
docker exec eg: docker exec -it mynginx(容器ID) /bin/sh
docker attach 容器id, 退出容器终端, 会导致容器停止(不推荐)—只是attach容器的标准输入,输出
docker container attach --sig-proxy=false nebula ,–sig-proxy=false 不会造成容器停止。

删除容器:
docker rm -f 1e560fca3906

下载/拉取镜像:
docker pull ubuntu(image name):13.10(version)

查找镜像:
docker search 镜像名称

查看镜像:
docker images

删除镜像
docker rmi 镜像名称

创建镜像:
当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

	1、从已经创建的容器中更新镜像,并且提交这个镜像
	2、使用 Dockerfile 指令来创建一个新的镜像
			a:创建Dockerfile 
			b:docker build -t runoob/centos:6.7(image name) .(dockerfile dir)
				参数说明:
				-t :指定要创建的目标镜像名
				. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
			c: docker run -t -i runoob/centos:6.7  /bin/bash   使用新的镜像来创建容器

设置镜像标签:
docker tag 860c279d2fec(tag name) runoob/centos:dev(new tag)
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。

查看docker实例:
docker ps
docker ps -a --no-trunc 可以查看完整的COMMAND

export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。
你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。

快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。

docker save 保存的是镜像(image),docker export 保存的是容器(container);
docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;
docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。

问题:
docker报错:Cannot connect to the Docker daemon. Is the docker daemon running on this host?
查看docker 服务是否启动:systemctl status docker.service 然后restar一下

下载镜像:
docker pull ubuntu
docker pull ubuntu:18.04
docker pull ubuntu@sha256:82becede498899ec668628e7cb0ad87b6e1c371cb8a1e597d83a47fac21d6af3

docker pull 下来的镜像文件存放的位置: /var/lib/docker/containers/

Docket Compose:
Compose 使用的三个步骤:

	使用 Dockerfile 定义应用程序的环境。

	使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

	最后,执行 docker-compose up 命令来启动并运行整个应用程序。
	docker-compose up -d  后台执行。

docker commit :从容器创建一个新的镜像
docker commit [OPTIONS] ConTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
例1
docker commit -a “runoob.com” -m “my apache” a404c6c174a2 mymysql:v1
例2

		docker commit -m  ""   -a  ""   [ConTAINER ID]  [给新的镜像命名]
		docker commit -m  ""   -a  "" aa myelasticsearch:1.0

docker attach :
eg:docker container attach --sig-proxy=false nebula
Use docker attach to attach your terminal’s standard input, output, and error (or any combination of the three) to a running container using the container’s ID or name.
This allows you to view its ongoing output or to control it interactively, as though the commands were running directly in your terminal.

Docker 网络:

sensetime@sensetime-desktop:/$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5a25ffa22446        bridge              bridge              local
f47a015ec643        compose_default     bridge              local
0afd801763ec        host                host                local
efda02e01096        none                null                local
0c4b4c164320        shisy_default       bridge              local
db37d9ee5bf7        viper-lite          bridge              local
	
查看某个网络的详细信息:
	docker network inspect viper-lite
	
	创建网络:
	docker network create -d bridge viper-lite
	
	sensetime@sensetime-desktop:/$ ip link show docker0  docker中默认网络的bridge
	docker0:  mtu 1500 qdisc noqueue state UP mode DEFAULT group default 
	link/ether 02:42:e3:77:cf:b4 brd ff:ff:ff:ff:ff:ff
	
	docker启动时, 可以通过--network来指定采用那个网络

Docker 卷与数据持久化:docker卷数据在主机的/var/lib/docker/volume目录下,持久化, 卷的数据不会因为容器被删除, 数据就会删除, 与容器的生命周期是解耦的
docker volume create
docker volume ls
docker volume insprect
docker volume prune :谨慎使用,会删除未被容器或者服务副本使用的全部卷。
docker volume rm
docker load:
docker load -i v3.0.1-20210919.all.M8.tar.gz
docker load < v3.0.1-20210919.all.M8.tar.gz
docker load : 导入使用 docker save 命令导出的镜像。

	语法
	docker load [OPTIONS]
	OPTIONS 说明:

	--input , -i : 指定导入的文件,代替 STDIN。

	--quiet , -q : 精简输出信息。

强制删除所有容器:
docker container rm -f $(docker ps -aq)
删除所有镜像:
docker image rm -f $(docker images)

单独启动一个容器 by yaml
docker-compose -f infra.yaml -p dms up -d

查看容器日志:
我们可以通过如下命令来获取容器的日志地址
docker inspect --format ‘{{.LogPath}}’ 97069f94437b
然后通过cat命令查看上述命令找到的日志地址

docker inspect
用于获取容器/镜像的元数据。其中就包含容器日志的地址,上述命令只是增加了一个–format参数用于将日志地址过滤出来。

docker inspect 中有很多信息,具体的大家可以自行查看。

查看docker引擎日志:
journalctl -u docker.service
查看自Ubuntu系统启动和运行(正常运行时间)以来的持续时间
uptime -p 系统运行时长
uptime -s: 系统运行开始时间

构建docker镜像方式:
1:docker commit
2: docker save
3: dockerfile
镜像构建全流程

容器间共享数据卷:
–volumes-from


docker 命令全景图

docker与虚拟机的区别 docker 网络

自定义网络
docker network create

docker network create --driver bridge --subnet 172.19.0.0/16 --gateway 172.19.0.1 mynet

网络互通,打通不同网络的容器间互连

Docker network connect mynet container_name

docker运行时,指定网络

docker run --net来指定

自定义网络的好处

docker Dockerfile

Dockerfile 编写:
官网:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
菜鸟教程:https://www.runoob.com/docker/docker-dockerfile.html

ADD
ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:
ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。
CMD
类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
CMD 在docker run 时运行。
RUN 是在 docker build。
####注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。####

Docfile框架

Dockerfile制作镜像规范和技巧如下:

  1. 精简镜像用途:尽量让每个镜像的用途都比较集中、单一,避免构造大而复杂、多功能的镜像;
  2. 选用合适的基础镜像:过大的基础镜像会造成构建出臃肿的镜像,一般推荐比较小巧的镜像作为基础镜像;
  3. 提供详细的注释和维护者信息: Dockerfile也是一种代码,需要考虑方便后续扩展和他人使用;
  4. 正确使用版本号:使用明确的具体数字信息的版本号信息,而非latest,可以避免无法确认具体版本号,统一环境;
  5. 减少镜像层数:减少镜像层数建议尽量合并RUN指令,可以将多条RUN指令的内容通过&&连接;
  6. 及时删除临时和缓存文件:这样可以避免构造的镜像过于臃肿,并且这些缓存文件并没有实际用途;
  7. 提高生产速度:合理使用缓存、减少目录下的使用文件,使用.dockeringore文件等;
  8. 调整合理的指令顺序:在开启缓存的情况下,内容不变的指令尽量放在前面,这样可以提高指令的复用性;
  9. 减少外部源的干扰:如果确实要从外部引入数据,需要制定持久的地址,并带有版本信息,让他人可以重复使用而不出错
docker 容器编排

docker-compose yaml官方说明:

https://docs.docker.com/compose/compose-file/compose-file-v3/#restart
docker 集群部署
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321058.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号