自学内容网 自学内容网

Docker

目录

一.概念

二.基础命令

三.文件/目录挂载

 四.构建镜像

五.容器网络互连

六.项目部署

DockerCompose

 docker安装


一.概念

1.Docker:包含一个后台服务,利用docker命令来快速部署指定应用。

2.镜像:镜像包含应用本身,以及其运行环境、配置、系统级函数库。(免安装版本)

3.容器:独立环境,镜像在容器中运行。有自己的网络,对外不开放。

二.基础命令

# 第1步,去DockerHub查看nginx镜像仓库及相关信息

# 第2步,拉取Nginx镜像
docker pull nginx

# 第3步,查看镜像
docker images
# 结果如下:
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   16 months ago   141MB
mysql        latest    3218b38490ce   17 months ago   516MB

# 第4步,创建并允许Nginx容器
docker run -d --name nginx -p 80:80 nginx

# 第5步,查看运行中容器
docker ps
# 也可以加格式化方式访问,格式会更加清爽
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

# 第6步,访问网页,地址:http://虚拟机地址

# 第7步,停止容器
docker stop nginx

# 第8步,查看所有容器
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

# 第9步,再次启动nginx容器
docker start nginx

# 第10步,再次查看容器
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"

# 第11步,查看容器详细信息
docker inspect nginx

# 第12步,进入容器,查看容器内目录
docker exec -it nginx bash
# 或者,可以进入MySQL
docker exec -it mysql mysql -uroot -p

# 第13步,删除容器
docker rm nginx
# 发现无法删除,因为容器运行中,强制删除容器
docker rm -f nginx

# Docker容器开机自启

docker update --restart=always [容器名/容器id]

# 修改/root/.bashrc文件  命令起别名 

vi /root/.bashrc    

source /root/.bashrc

三.文件/目录挂载

挂载:容器目录与宿主机目录,形成映射。

目的:为了避免容器目录直接指向宿主机目录,构成强耦合,切换环境就无法正常运行。

命令

默认情况下, /var/lib/docker/volumes存放容器数据卷的目录,其下再根据数据卷名称创建新目录,格式为/数据卷名/_data

容器一旦创建完成,就无法修改数据卷。未指定数据卷,则自动创建。

方便起见,常常将容器目录与本地目录挂载。              /  或 ./  开头

# 挂载本地目录 -v 本地目录:容器内目录 
# 挂载本地文件 -v 本地文件:容器内文件
 四.构建镜像

镜像结构:

 Dockerfile:记录镜像结构的文件

#依据指定Dockerfile构建镜像
docker build -t [repository:tag] [Dockerfile目录]
五.容器网络互连

默认情况下,所有容器都以bridge方式连到Docker的一个虚拟网桥

问题:

容器之间本身是可以互连的,通过ip地址。

但容器的IP地址是虚拟的,会发生变化。

解决:在同一个自定义网络中,各容器才可通过容器别名互联

六.项目部署

1.配置文件采用多环境配置,本地运行配置与Docker部署配置。地址为变量,不同环境不同值,docker部署时,值为容器的网络名。

2. 挂载文件//目录 

3.各容器加入同一个自定义网络

DockerCompose

它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器。

docker-compose.yml需要设置的 参数与docker  run 相似。

version: "3.8"

services:
  mysql:
    image: mysql
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "./mysql/conf:/etc/mysql/conf.d"
      - "./mysql/data:/var/lib/mysql"
    networks:
      - new
networks:
  new:
    name: hmall

compose命令

docker compose [OPTIONS] [COMMAND]

 docker安装

 使用阿里云更新yum源:

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 安装yum工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 安装成功后,执行命令,配置Docker的yum源(已更新为阿里云源):

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

 更新yum,建立缓存

 sudo yum makecache fast

 安装Docker

 yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 启动和校验

 # 启动Docker

systemctl start docker

# 停止Docker

systemctl stop docker

# 重启

systemctl restart docker

# 设置开机自启

systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功

docker ps

 配置镜像加速

# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
    "https://docker.fxxk.dedyn.io"
    ]
}
EOF

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker


原文地址:https://blog.csdn.net/weixin_73118927/article/details/142482457

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!