Docker初级

在这里插入图片描述

Docker初级

service docker restart

systemctl status docker 查看docker服务状态

docker daemon 守护进程

docker不需要硬件虚拟化,所以比虚拟机快的多

在这里插入图片描述
338)(C:\Users\sd\AppData\Roaming\Typora\typora-user-images\image-20210428220646082.png)]

镜像命令
  • docker build 构建镜像

  • docker pull[:TAG] 拉取镜像

  • docker run 启动

  • docker info docker信息

  • docker --help

  • docker image 本地镜像

  • docker image -a 全部镜像(a=all)

  • docker image -q 只显示 镜像ID

  • docker image --digests :显示镜像的摘要信息

  • docker image --no-trunc:显示完整的镜像信息(不必记)

  • docker search 在docker hub上寻找镜像

  • docker rmi 某个镜像名字ID

  • docker rmi tomcat nginx 删除两个镜像

  • docker rmi -f $(docker image -qa) 删除全部镜像

Ubuntu镜像只有170M大小

容器命令

docker run [OPTION] image [COMMAND] [ARG]

OPTION说明(常用):有些是一个减号,有些是两个减号

  • –name=“容器新名字”:为容器指定一个名称

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

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

  • -P: 随机映射端口

  • -p :指定端口映射

    ​ 格式 hostPort:containerPort

exit : 退出docker,并关闭容器

Ctrl+P+Q : 退出而不关闭容器:

  • docker ps 显示所有正在运行的容器

  • docker ps -a 显示所有容器

  • -a:列出当前所有的容器(all)

  • -l:显示最近创建的容器(latest)

  • docker save ID 保存的镜像 例:docker save -o nginx.tar nginx:latest

  • docker export ID 保存的容器

  • docker load 名 字 载入镜像包

  • docker

  • docker start 启动容器

  • docker restart 重启容器

  • docker stop 停止容器

  • docker kill 强制停止

  • docker logs 容器ID :查看容器日志

  • docker top 容器ID :查看容器内运行的进程

  • docker inspect 容器ID :查看容器内部细节

  • docker attach : 是在容器中打开新的终端,并且可以启动新的进程

  • docker exec : 直接进入容器启动命令的终端,不会启动新的进程(因此exit会造成容器的停止)

  • docker cp 容器ID:容器内路径 目的主机路径 :从容器中拷贝文件到主机上

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

    • docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
docker镜像
  • 镜像就是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件。
docker 容器数据卷

容器被删除后,数据就没了,为了保存数据,使用卷

  • 添加方式
    • 直接命令添加:docker run -it 镜像名 -v 、宿主机绝对路径目录:、容器类目录
    • Dockerfile添加
Dockerfile
  • 根目录下新建mydocker文件夹并进入
  • 可在Dockerfile中使用VOLUME指令来给镜像添加一个或者多个数据卷
    1. File构建
  • ​ 2 build后生成镜像
    1. run容器

  • 手写编写一个dockerfile文件,当然,必须要符合file的规范
  • docker build
  • docker run

dockerfile内容基础知识

dockerfile内容基础知识
1:每条保留字指令都必须为大写字母且后面至少跟随一个参数
2:指令按照从上到下,顺序执行
3:#表示注释
4:每条指令都会创建一个新的镜像层,并对镜像进行提交
  • Dockerfile体系结构

    • FROM 基础镜像,当前新镜像是基于哪个镜像的
    • MAINTAINER 镜像维护者的姓名和邮箱地址
    • RUN 容器构建时需要运行的命令
    • EXPOSE 当前容器对外暴露的端口号
    • WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个
    • ENV 用来在构建镜像过程中设置环境变量
    • ADD 将宿主机下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包(拷贝+解压)
    • COPY 只拷贝不解压
    • VOLUME 容器数据卷
    • CMD 指定一个容器启动时要运行的命令,DockerFile可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换
    • ENTRYPOINT 指定一个容器启动时要运行的命令,不只是最后一个生效,不会覆盖,只会追加
    • ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像再被子继承后父镜像的onbuild被触发

systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ROIMSy1d-1620820108341)(C:\Users\sd\AppData\Roaming\Typora\typora-user-images\image-20210429214831627.png)]

Docker Compose

定位:

​ 定义和运行多个Docker容器的应用,负责对Docker容器集群的快速编排

​ 由一个单独的docker-compose.yml文件来定义

核心概念

​ 服务(service):一个应用的容器。服务可以存在多个。

​ 项目(project):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml 文件中定义。

Compose使用

​ 1.下载安装

2. 修改操作权限
yml文件
version: 3.0  
#compose的版本号,目前版本最高为4.0
services:
  tomcat:#服务名唯一
      image: tomcat:8.0-jre8     #创建当前这个服务使用镜像是谁
      ports:
         -8080:8080
      volumes:#完成宿主机与容器中目录数据卷共享
            -
            -
     
         



docker-compose up 启动这个项目的所有服务,必须保证运行命令的目录存在docker-compose.yml


IPC:进程间通信,进程间通信是指两个进程的数据之间产生交互

network_mode: host # Docker中的host模式指定是容器与主机享受相同的network namespace,在这种情况下,我们访问主机端口就能访问我们的容器。

实验室数据
docker仓库

192.168.9.1:5000


#用来查看docker仓库所有镜像的脚本
import requests
import json
import traceback

repo_ip = '192.168.9.1'
repo_port = 5000

def getImagesNames(repo_ip,repo_port):
docker_images = []
try:
url = "http://" + repo_ip + ":" +str(repo_port) + "/v2/_catalog"
res =requests.get(url).content.strip()
res_dic = json.loads(res)
images_type = res_dic['repositories']
for i in images_type:
url2 = "http://" + repo_ip + ":" +str(repo_port) +"/v2/" + str(i) + "/tags/list"
res2 =requests.get(url2).content.strip()
res_dic2 = json.loads(res2)
name = res_dic2['name']
tags = res_dic2['tags']
for tag in tags:
docker_name = str(repo_ip) + ":" + str(repo_port) + "/" + name + ":" + tag
docker_images.append(docker_name)
print docker_name
except:
traceback.print_exc()
return docker_images

a=getImagesNames(repo_ip, repo_port)
# print a
bridge networks

在网络方面,桥接网络是一个网段之内转发流量的链路层设备。网桥可以是一个硬件设备或者是一个运行在主机核心内的软件设备。
在Docker方面,桥接网络使用软件网桥,允许容器连接到同一个网桥网格进行通信。当容器需要提供隔离时便不需要连接到这个网桥。Docker的网桥驱动自动将相关的规则、配置安装在主机,这样容器在不同的桥接网络不允许彼此直接通信。

管理用户自定义网桥

使用docker network create命令创建用户自定义桥接网络
docker network create my-net

使用docker network rm命令删除用户自定义桥接网络。如果容器目前已连接此网络,请先断开它们。
docker network rm my-net

将容器连接到用户自定义网桥

docker network ls  #查看网络
docker create --name my-nginx 
  --network my-net 
  --publish 8080:80 
  nginx:latest
  这个例子将Nginx容器连接到my-net网络,连接到my-net网络的任何其他容器都可以访问my-nginx容器上的所有端口,反之亦然。
将一个运行中的容器连接到一个现有的用户自定义网桥,使用docker network connect命令。以下的命令将已经在运行的my-nginx容器连接到已经存在的my-net网络。

$ docker network connect my-net my-nginx
docker create --name my-nginx 
  --network my-net 
  --publish 8080:80 
  nginx:latest
  这个例子将Nginx容器连接到my-net网络,连接到my-net网络的任何其他容器都可以访问my-nginx容器上的所有端口,反之亦然。
将一个运行中的容器连接到一个现有的用户自定义网桥,使用docker network connect命令。以下的命令将已经在运行的my-nginx容器连接到已经存在的my-net网络。

$ docker network connect my-net my-nginx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值