Docker技术总结

Docker描述

  • docker是开源的应用程序引擎,基于go语言开发
  • 容器是完全使用沙箱机制,容器开销极低
  • docker就是容器化技术的代名词
  • docker也具备一定虚拟化职能

安装docker

下载docker

下载地址:https://docs.docker.com/engine/install/

安装yum-utils安装包
yum install -y yum-utils
安装数据存储驱动包
 yum install -y device-mapper-persistent-data lvm2
配置安装源地址
yum-config-manager --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新缓存
 yum makecache fast
安装docker引擎
yum install -y docker-ce
启动docker
service docker start
查看docker版本号
docker version

在这里插入图片描述

从远程仓库下载hello-world镜像
docker pull hello-world
docker run hello-world
阿里云docker镜像加速

在阿里云的容器镜像服务中,有一个镜像加速下载的功能

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://[每个用户不一样].mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

测试下载速度

// 下载tomcat镜像
docker pull tomcat

docker执行流程

在这里插入图片描述

docker 命令

#docker镜像拉取
docker pull 镜像名[:tags]
# 查看镜像列表
docker images
# 创建容器,启动运行
docker run 镜像   // 相当于 docker create 镜像名  和 docker start 容器id两个命令
# 查看正在运行的镜像列表
docker ps [-a]
#删除容器
docker rm [-f ]  容器id
# 删除镜像
docker rmi [-f] 镜像名[:tags]

查询镜像及版本

查询地址:https://hub.docker.com/
输入要pull的镜像名称,比如tomcat
在查询出的列表中点击第一个tomcat,选择tomcat8的tag
在这里插入图片描述
执行命令

docker pull tomcat:9.0.41-jdk8-openjdk-buster

docker宿主机与容器通信

端口映射

# 前面的端口号是宿主机端口号,后面是容器端口号
docker run -p 8000:8080 tomcat

后台运行

后台运行tomcat

docker run -p 8000:8080 -d tomcat 

停止运行

停止tomcat运行

docker stop [容器id]
docker rm [容器id]

强制移除容器

docker rm -f [容器id]

删除镜像

dicjer rmi [-f] 镜像名[:版本] 

容器内执行命令

docker exec [-it] 容器id 命令

-it:已交互方式执行命令

# 进入容器交互命令
docker exec -it sdf324r3wef /bin/bash
# 退出容器交互命令
exit

Docker生命周期

在这里插入图片描述

自定义镜像

dockfile是镜像描述文件,docker根据dockfile进行镜像的构建工作

创建web目录及index.html

创建web目录,目录名称为/usr/local/docker/docker-web
创建/usr/local/docker/docker-web/index.html

创建dockerfile

vi /usr/local/docker/Dockerfile

# 设置基准镜像
From tomcat:latest
# 作者
MAINTAINER sywh.org
# 创建并设置工作目录
WORKDIR /usr/local/tomcat/webapps
# 将当前dockerfile目录下的docker-web复制到工作目录下面
ADD docker-web ./docker-web
# 使用80端口号启动
#EXPOSE 80
创建镜像
docker build -t sywh.org/mytomcat:1.0 /usr/local/docker

在这里插入图片描述

查看镜像
docker images

可以看到已经创建好新的镜像了
在这里插入图片描述
根据新镜像生成容器并运行

docker run -d -p 8001:8080 sywh.org/mytomcat:1.0

镜像分层

镜像创建过程中会生成一个临时容器(只能用于镜像构建),每执行一步都会记录一个临时容器ID(快照),如果Dockfile执行的命令前面几步基本不变,就会使用临时容器ID快照缓存,不会再次创建临时容器快照。

Dockerfile命令

RUN
RUN 在镜像构建时执行
# shell命令格式,子shell进程执行命令
RUN yum install -y vim
# EXEC命令格式,会用EXEC进程替换当前进程(官方推荐)
RUN [ "yum","install","-y","vim" ]
Entrypoint 定参

容器启动时执行的命令,在dockerfile中,最后一个Entrypoint命令会被执行,不能被docker启动时的参数覆盖,可以与CMD联合使用,替换部分命令参数

CMD 传参

dockerfile的最后一个CMD命令才会被执行,如果在容器启动命令后面追加cmd命令,dockerfile中的CMD命令就会被启动时传入的命令覆盖,同样推荐使用EXEC命令执行

Entrypoint 和 CMD联合使用
FROM centos
ENTRYPOINT ["ps"]
CMD ["-ef"]

生成镜像后,执行容器启动命令 docker run mycentos 会执行ps -ef命令
生成镜像后,执行容器启动命令 docker run mycentos -aux 会在容器运行时执行 ps -aux命令,可以以bsd格式输出

容器间单向通信(宿主机内部)

查看docker容器相关信息

docker inspect [容器id]

不建议使用ip地址通信

使用link创建单向通信

1.创建database容器

docker run -d --name database -it centos /bin/bash

2.创建tomcat容器,并连接上database

docker run -d --name tomcat01 --link database tomcat

3.进入tomcat01容器

docker exec -it f9409dedc471 /bin/bash

4.查看是否可以ping通
在这里插入图片描述

基于bridge的容器间双向通信(宿主机内部)

查看docker网络服务
docker network ls

在这里插入图片描述

新建网桥
docker network create -d bridge my_bridge

在这里插入图片描述

容器和网桥绑定
//docker run -d --name database -it centos /bin/bash
//docker run -d --name tomcat01 tomcat
docker network connect my_bridge database
docker network connect my_bridge tomcat01

进入tomcat01容器,看看能否ping通database

docker exec -it eeaf6ffdf66a /bin/bash
ping database

在这里插入图片描述
可以看到,现在tomcat01已经可以ping通database容器了

Volume容器间数据共享

使用-v进行数据挂载
docker run -d -p 8002:8080 --name tomcat02 -v /usr/webapps:/usr/local/tomcat/webapps tomcat
使用共享容器挂载

1.创建共享容器

docker create --name volume_webpage -v /usr/webapps:/usr/local/tomcat/webapps tomcat /bin/true

2.共享容器挂载点

docker run --name tomcat03 -p 8003:8080 --volumes-from volume_webpage -d tomcat

docker-compose容器编排工具

单机多容器部署工具
通过yml文件定义部署规则

1.下载安装文件

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2.设置运行权限

sudo chmod +x /usr/local/bin/docker-compose
使用docker-compose快速安装wordpress
  1. 创建目录
mkdir /usr/wordpress
  1. 新建配置 vi /usr/wordpress/docker-compose.yml
version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

3.在项目目录/usr/wordpress中运行docker-compose

docker-compose up -d

4.访问页面 192.168.56.9:8000
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值