赞
踩
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
Docker使用客户端-服务器架构。Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以 在同一系统上运行,或者您可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。另一个Docker客户端是Docker Compose,它使您可以处理由一组容器组成的应用程序。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5f5MycJ-1619181766250)(https://docs.docker.com/engine/images/architecture.svg)]
Docker守护程序(dockerd
)侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
Docker客户端(docker
)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run
,客户端会将这些命令发送到dockerd
,以执行这些命令。该docker
命令使用Docker API。Docker客户端可以与多个守护程序通信。
Docker注册表存储Docker映像。Docker Hub是任何人都可以使用的公共注册表,并且默认情况下,Docker已配置为在Docker Hub上查找映像。您甚至可以运行自己的私人注册表。
使用docker pull
或docker run
命令时,将从配置的注册表中提取所需的图像。使用该docker push
命令时,会将映像推送到已配置的注册表。
使用Docker时,您正在创建和使用映像,容器,网络,卷,插件和其他对象。本节是其中一些对象的简要概述。
在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。
先安装yum工具命令
yum install -y yum-utils
然后 添加docker的仓库 repo
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
从Docker Hub网站上 拉取一个 hello-world镜像 然后运行
docker run hello-world
镜像就类似于一个软件,我们运行就创建了一个容器。
基本命令格式:
docker image 命令 如:ls查看镜像
查看本地镜像列表
docker images
docker image ls
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 08393e824c32 8 months ago 132MB
mysql 5.6 1d3d3845393d 8 months ago 302MB
mysql latest 0d64f46acfd1 8 months ago 544MB
centos 7 b5b4d78bc90c 11 months ago 203MB
解释:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 15.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
我们的镜像都可以存放到Docker Hub网站(gitee码云)上,这是一个开源的镜像库
如果从这个网站上 下载东西 就可以使用 pull 拉取
docker pull
# 下载mysql
docker image pull mysql:5.7
如果没有添加版本tag 则下载默认的最新版本 mysql:latest
docker rm
如果 镜像被容器在使用,默认是不能删除的,可以通过 -f 强制删除
docker rmi hello-world
docker rmi hello-world
在本地 如果有镜像 就可以运行该镜像 生成容器,如果镜像不存在 会去网上pull后在运行
docker run image
--name 在启动的时候 给容器 起一个名字
--interactive , -i 交互 即使未连接
--tty , -t 终端
这两个一般都是一起用 -it
docker run --name myhello hello-world
交互式启动容器
docker run --name mycentos -it centos:7
[root@786f16e7d970 /]# @后面是容器id
docker ps 查看 所有活跃的容器
docker ps -a 查看所有容器 包括停止的
Create a new image from a container’s changes
如果我们给现有的容器做了修改,而且这个修改以后还要常用,我们就可以提前出镜像,作为一个新的版本
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# 案例
docker commit -a "刘某人" -m "看你不爽,修改一下" d62332d7bf22 mycentos:7.1
查看本地镜像列表
[root@localhost jiyun]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 7.1 c415d57cbff4 15 seconds ago 227MB
<none> <none> 9924749400a6 13 hours ago 314MB
1、给镜像打包tag
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 案例
docker tag mycentos:7.1 xiaozhuanjia/mycentos:7.1
2、推送
docker push [OPTIONS] NAME[:TAG]
# 案例
docker push xiaozhuanjia/mycentos:7.1
如果想要容器 长时间运行 作为服务,需要加-d 后台运行
-d执行的容器 不会直接开启交互
我们需要使用 docker exec 进入到容器
docker exec -it 1e592c76445b /bin/bash
-p 端口号的映射 宿主机端口:容器端口
docker run -itd -p 6379:6379 redis
# 还可以继续开 开多个
docker run -itd -p 6378:6379 redis
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0h6vyNRS-1619181766254)(…/…/…/images/image-20210423155247819.png)]
和普通开发服务一样,但也有特定, 需要知道 账号 密码
docker run --name mysql56 -itd -p 3305:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
进入到mysql容器服务里
docker exec 进入到mysql容器
然后可以操作数据库,进行数据库的增删改查操作
如果我们想从零开始构建镜像,例如我们把我们的django项目 或者vue项目 作为一个镜像供其他人使用
可以使用Dockerfile文件来 描述这个镜像的构建过程。
FROM 定制的镜像都是基于 FROM 的镜像
RUN:用于执行后面跟着的命令行命令 在执行 docker build 会执行该命令
COPY: 拷贝复制文件
CMD : 在docker run的时候会 执行 这里的命令
FROM 3.6-alpine
COPY requirement.txt .
RUN pip3 install -r requirement.txt
COPY hellopro .
CMD ["python3","manage.py","runserver"]
FROM 定制的镜像都是基于 FROM 的镜像
RUN:用于执行后面跟着的命令行命令 在执行 docker build 会执行该命令
COPY: 拷贝复制文件
CMD : 在docker run的时候会 执行 这里的命令
FROM 3.6-alpine
COPY requirement.txt .
RUN pip3 install -r requirement.txt
COPY hellopro .
CMD ["python3","manage.py","runserver"]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。