Docker技术

x33g5p2x  于2021-11-09 转载在 Docker  
字(2.8k)|赞(0)|评价(0)|浏览(471)

1.Docker技术简介

  • Docker是一个虚拟化平台( 官网https://www.docker.com/),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。
    帮忙启动容器。
  • 设计思想:分而治之,每个容器启动后分配一个唯一的命名空间
    Docker官网

无需部署环境

镜像官网

劣势:性能稍差

2. Docker架构(CS)

  • Docker 使用客户端-服务器架构。Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护进程使用 REST API、UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。

执行流程

  • 命令
    docker build 打包
    docker pull
    docker run

3. Docker安装实践

3.1查看Linux的ip地址

前提是已经安装虚拟机

3.2 创建终端

以上三个文件下载地址
下载docker离线包
下载离线安装工具

3.3 查询文件

3.4增加安装权限

3.5 安装docker到Linux

4. Docker服务基本实现(Linux)

systemctl start docker  启动docker服务
 systemctl status docker  查看Docker状态
 systemctl stop docker  关闭docker服务
systemctl enable docker 设置Docker开机自启
systemctl disable docker  禁用Docker开机自启
 systemctl restart docker 重新启动Docker服务
 docker info 查看Docker信息
 docker info | grep 'Docker Root Dir:'  查看docker info中具体key的信息
 ps -ef | grep docker  查看进程

5.镜像加速

cat <<EOF > /etc/docker/daemon.json
{
 "registry-mirrors": [
   "https://docker.mirrors.ustc.edu.cn",
   "http://hub-mirror.c.163.com"
 ],
 "max-concurrent-downloads": 10,
 "log-driver": "json-file",
 "log-level": "warn",
 "log-opts": {
   "max-size": "10m",
   "max-file": "3"
   },
 "data-root": "/var/lib/docker"
}
EOF

6. 镜像操作

docker pull hello-world  下载镜像
docker images 查看镜像
docker run hello-world  运行镜像
卸载镜像
docker image rm hello-world

显示容器正在使用

此时需要关闭容器
docker container re 52a
删除镜像
docker container rm hello-world
查看所有容器
docker ps -a

下载镜像(pull),如果本地镜像没有,则需要从远程镜像中下载

查看镜像历史
docker history hello-world
导出镜像文件
docker save  hello-world | gzip > hello-world.tar.gz  
导入镜像操作
docker load < hello-world.tar.gz

导出镜像文件到images目录

此时只能在Linux系统使用,Windows下使用需要Download

7. 容器操作

创建并启动容器 打开交互模式
docker run -it centos:7 bash

删除容器
docker container rm 802 #802为容器id
强制删除
docker container rm -f 802 #802为容器id
清除所有容器
docker container prune

8. Docker数据管理实践

在容器中管理数据的方式 数据卷(Volumes)、挂载主机目录 (Bind mounts)

数据卷

命令:

查看数据卷目录 docker volume ls
创建数据卷  docker volume create container-vol
查看数据卷信息   docker volume inspect container-vol
删除数据卷 docker volume rm container-vol
在启动容器时,以目录直接挂载的方式进行数据操作  docker run -it -v container-vol:/cgb2107 centos:7 bash

挂载的目的是删除容器数据不丢,相当于备份,数据卷仍存在

挂载主机目录

docker run -it -v  /app:/container centos:7 bash

9. Dockerfile及镜像制作实践

创建Dockerfile文件

vim  Dockerfile编辑
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
    PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']

查看文件

在Dockerfile所在目录执行docker build指令

查看镜像

运行镜像、查看java版本 基于镜像启动容器

基于JDK镜像启动sentinel

docker run -d -p 8180:8080 --name sentinel \
-v /root/servers:/usr/sca \
jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.1.jar

sentinel运行在基于jdk:8容器的基础上,所以可以放在一起创建镜像

9.镜像安装实践

进入容器登录mysql

创建目录和文件

创建redis实例并启动

拖入镜像

导入镜像

创建数据卷

启动nginx服务

访问成功

10. 容器互联实践

方案:
第一种:两个容器通过宿主机进行通讯(容器中的端口会映射到宿主机上)
第二种:两个容器之间直接通过虚拟网络进行连接,但是需要我们在docker中创建网络。

创建网络

docker network create t-net

docker run -it --name app1 --network t-net centos:7  启动容器

实现容器互联互联

相关文章