docker介绍

1.文件组成
2.修改txt文件
3.修改json文件
4.最后

1.docker介绍
Docker 是一个开源的容器引擎
Docker 可以让开发者打包他们的应用然后发布到另一台机器上

三个基本概念:
仓库:用来保存镜像
镜像:用于创建 Docker 容器的模板
容器:容器是镜像运行时的实体

2.基础命令
操作 命令
安装docker yum install docker
查看docker 版本 docker -v
启动docker systemctl start docker
停止docker systemctl stop docker
重启docker systemctl restart docker
  • 1.镜像操作
操作 命令
拉取镜像 docker pull 镜像名称:标签eg: docker pull centos:7.9.2009eg: docker pull centos:latest
查看镜像 docker image ls
删除镜像 docker image rm 镜像名或镜像ID (ID只需输入前4位)
  • 2.容器操作
操作 命令
查看容器 docker container ls –all docker container lsdocker ps
删除容器 docker container rm 容器ID
启动容器 docker start 容器ID
停止容器 docker stop 容器ID
查看各个镜像占用的资源 docker stats
3.容器运行
docker container run --name [container_name]  -it [docker_image]     -v 宿主机地址:容器地址 --privileged=true /usr/sbin/init

eg: docker container run --name centos_new -itd -v /home/host_file:/home/container --privileged=true c3c6  /usr/sbin/init


 --name [container_name]  :为容器指定一个名称
-itd : -i 表示以交互模式运行容器,-t 表示为容器分配一个伪终端,以便你可以与容器的终端进行交互, -d 挂在后台
[docker_image]: 指定要使用的 Docker 镜像的ID
-- privileged=true: 用于指定运行的容器具有特权权限
/usr/sbin/init: 是系统初始化进程,用于启动系统的所有进程和服务端
-v /root/host_file:/home/container :将主机(host)文件系统中的/home/host_file目录挂载到Docker容器内的/home/container目录。这种挂载方式可以让容器与主机之间共享文件,使得容器内的应用程序可以访问主机文件系统中的特定目录或文件。



demo:
docker container run --name centos_test -itd -p 7076:8086 -p 7330:3000 -p 7022:22 -v /home/host_file:/home/container --privileged=true eeb6 /usr/sbin/init

docker run -d -p 8022:80 --name nginx1 --privileged=true a ffff
 
docker run -d --network=host --name nginx1 --privileged=true ffff

--network=host  将宿主机所有端口映射到容器中
-p 8022:80 端口映射,将容器内部的端口80映射到主机上的端口8022,可以让主机上的服务通过访问主机的8022端口来访问Docker容器内部运行的服务
4.容器操作

进入容器:
dokcer exec -it 容器ID /bin/bash
eg:docker exec -it d30d /bin/bash

退出容器
exit   或   Ctrl + D

# 导出容器
docker export 容器ID > 文件名.tar
eg: docker export 9aa3e4907407 > ./centos.tar

# 导入容器
cat 文件名 | docker import  新的镜像名:TAG的名称 
eg:cat centos.tar | sudo docker import - centos1:latest
centos1:latest   centos1镜像的名称,  latest:TAG的名称

强制删除镜像 + 对应的容器
docker rmi -f 镜像id  (有使用该镜像的容器需要处于停止状态)

使用 docker inspect 容器id 命令查看容器的详细信息
5.Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

指令:
FROM :指定基础镜像,Dockerfile开篇第一行代码
COPY:从宿主机复制文件到镜像中
WORKDIR:设置工作目录
ENV:设置镜像中的环境变量
RUN:镜像构建时执行的命令
CMD:为容器设置默认启动命令或参数
推荐文档:Dockerfile详解(超详细) - 简书
# demo

FROM centos:7
ENV WORKDIR  /data/release
WORKDIR  $WORKDIR
COPY ./data $WORKDIR
RUN  yum install python3-devel -y && \
          yum install python36 -y && \
         pip3 install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/  && \
     yum install nginx -y

# 启动 Nginx 服务
COPY ./data/start.sh /etc/kickStart.d/
RUN chmod +x /etc/kickStart.d/start.sh


docker container update --publish-add 9090:8080 <container_name_or_id>
# demo2 运行flask程序

# 拉取镜像
FROM centos:basic

# 创建目录&安装python环境
RUN mkdir /home/main -p && \
yum install python3  net-tools coreutils -y && \
    pip3 install flask -i https://pypi.tuna.tsinghua.edu.cn/simple/

# 设置工作目录
ENV MYPATH /home/main
WORKDIR $MYPATH

# 复制脚本
COPY ./demo.py /home/main
COPY ./start.sh /home/main

# 设置权限
RUN chmod 755 /home/main/demo.py && \
    chmod 755 /home/main/start.sh

# 启动shell脚本
CMD ["/bin/sh","/home/main/start.sh"]


#####################################
# demo.py 是flask程序
# start.sh 是用来启动demo.py文件的脚本

    #!/bin/sh
    # 启动Flask程序
    nohup python3 /home/main/demo.py > /home/main/log.txt 2>&1 &
    # 不让容器挂掉
    sleep infinity


6.发布镜像
构建镜像
docker build -t  镜像名称:标签名称  . 
eg: docker build -t test_demo:20231015 .
    
    
上传一个镜像名称为 test_demo
docker push 镜像名称:标签名称  (需先登录到仓库)
eg: docker push test_demo:20231015    
7.镜像源问题

# 拉取镜像时指定镜像源
docker pull docker.m.daocloud.io/library/centos:7

# 可以拉取的仓库
https://github.com/DaoCloud/public-image-mirror/blob/main/mirror.txt

# github地址
https://github.com/DaoCloud/public-image-mirror?tab=readme-ov-file#%E5%8D%95%E6%AC%A1%E5%8D%95%E9%95%9C%E5%83%8F%E5%90%8C%E6%AD%A5



# 查看当前镜像源
cat  /etc/docker/daemon.json

# 设置镜像源 (可能没效果)
{
  "registry-mirrors": ["https://atomhub.openatom.cn"]
}

# 重启服务
systemctl restart docker
sudo systemctl daemon-reload
sudo systemctl restart docker.service

# 检测是否生效
$ docker info | grep -A 4 Mirrors

# 使用其它镜像源
https://docker.aityp.com/

yum 安装时出现的问题
https://blog.csdn.net/u014142328/article/details/140613003

# 编写一个shell脚本执行以下内容
#! /bin/bash
tee /etc/yum.repos.d/CentOS-Base.repo << 'EOF'
[base]
name=CentOS-$releasever - Base - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates 
[updates]
name=CentOS-$releasever - Updates - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOF
 
 
yum clean all
yum makecache

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:docker介绍

本文作者:伟生

发布时间:2024-10-19, 15:34:20

最后更新:2025-01-13, 21:29:56

原始链接:http://yoursite.com/2024/10/19/share_19_docker/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏