net core-linux+docker
vs code生成Dockerfile文件:
1.添加Docker扩展包。
2.ctrl+shift+P,打开命令,输入Docker:选中Add Dockerfile to ...
参考:https://blog.csdn.net/weixin_42298679/article/details/124448988
3.注意点: 使用 docker build -t xxx:1.0 . --不要忘了后面的点
安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
docker-搭建本地仓库Registry
docker search registry docker pull registry docker run -id --name=registry -p 5000:5000 registry 访问:虚拟机ip地址:5000/v2/_catalog 第四步:修改 /etc/docker/daemon.json 文件,让 docker 信任刚搭建的私有仓库 { "registry-mirrors": ["https://nzjnn6w8.mirror.aliyuncs.com"], "insecure-registries":["192.168.37.52:5000"] } 第五步:重启docker systemctl restart docker docker start registry
第六步:上传镜像
docker tag centos:7 私有仓库服务器IP:5000/mysql:8.0.27
第七步:把镜像上传到私有仓库
docker push 私有仓库服务器IP:5000/mysql:8.0.27
第八步:从私有仓库下载镜像
docker pull 私有仓库服务器IP:5000/mysql:8.0.27
docker架构:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
有了Image只表示安装好了。镜像是类,容器是具体的实例。
1.发布到linux上面:
https://blog.csdn.net/leonnew/article/details/126627178
2.安装环境:
https://blog.csdn.net/leonnew/article/details/126627178
3.配置:
https://developer.aliyun.com/article/989619
4.获取Nginx镜像:
# 搜寻nginx镜像 root@master:/home/hqc# docker search nginx # 拉取镜像 root@master:/home/hqc# docker pull nginx
# 运行nginx并映射端口为8888 (端口号可以随便设置)
root@master:/home/hqc# docker run -d -p 8888:80 nginx
e2f50bf67d1fcb9d9cd141f601bb423b0f20c3c42415fa097ff3b48d30d08178
# 查看正在运行的容器信息
root@master:/home/hqc# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e2f50bf67d1f nginx "/docker-entrypoint.…" 7 seconds ago Up 5 seconds 0.0.0.0:8888->80/tcp, :::8888->80/tcp competent_sutherland
root@master:/home/hqc# docker start competent_sutherland
# 关闭电脑(服务器)后,容器也将不再运行,可使用此命令直接重启(competent_sutherland为容器名)
root@master:/home/hqc# ifconfig
wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.27.120.238 netmask 255.255.128.0 broadcast 172.27.127.255
# 查看该网络环境下本机IP为172.27.120.238
4-2 Linux常用命令
mkdir -p /etx/docker -p是指自动创建父级目录
在yum install
命令中,-y
是一个选项,表示在执行安装操作时自动回答 "yes",即自动确认所有的询问。
yum install nano/vim 安装nano和vim,对应ubuntu apt-get install nano/vim
ps -ef | grep "tyrone" -查找指定用户的进程
sudo lsof -i :8080 -查看指定端口的使用情况
sudo kill <PID>
sudo systemctl stop <service_name> --彻底杀死一个进程
5.Docker常用命令:
查找所有可用的docker版本:
sudo yum list docker-ce --showduplicates | sort -r ->安装:yum install docker-ce:24.0.5-1.el7
sudo apt-cache madison docker-ce -ubuntu
yum install docker - docker安装
systemctl start docker.service -启动docker服务
systemctl enable docker.service -配置开机启动
vim /etc/docker/daemon.json 设置docker加速
{
"registry-mirrors": ["https://d8b3zdiw.mirror.aliyuncs.com"]
}
systemctl daemon-reload - 然后重启docker服务
systemctl restart docker
docker ps 列出所有正在运行的容器 docker stop 容器名称或ID 停止某个容器 docker ps -a 列出所有容器(包括已停止的容器) docker images 列出所有镜像 docker rm -f 容器名称或ID 删除某个容器 -f 是 rm 命令的一个选项,表示强制删除容器。 docker rmi 镜像名称或ID 删除某个镜像 firewall-cmd --zone=public --add-port=5899/tcp --permanent 打开防火墙的指定端口 firewall-cmd --query-port=80/tcp 查询防火墙指定端口是否打开 :set ff vim 打开后查看文件的格式 :set ff=unix vim打开文件后,设置文件格式为unix docker port ac4e8d7686f1 --查看指定容器的运行端口 使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
docker start 命令用于启动已经停止运行的容器。
docker run 命令用于创建并运行一个新的容器实例 -d表示后台运行。
docker search 命令来搜索镜像 比如 docker search mysql,搜索mysql相关的镜像
Dockerfile内容大概:
- FROM
构建镜像基于哪个镜像
- MAINTAINER
镜像维护者姓名或邮箱地址
- RUN
构建镜像时运行的指令
- CMD
运行容器时执行的shell环境
- VOLUME
指定容器挂载点到宿主机自动生成的目录或其他容器
- USER
为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户
- WORKDIR
为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录
- HEALTHCHECH
健康检查
- ARG
构建时指定的一些参数
- EXPOSE
声明容器的服务端口(仅仅是声明)
- ENV
设置容器环境变量
- ADD
拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压
- COPY
拷贝文件或目录到容器中,跟ADD类似,但不具备自动下载或解压的功能
- ENTRYPOINT
运行容器时执行的shell命令
-----docker运行mysql数据------------------------------------------------------------------
在Docker中启动MySQL可以通过以下步骤进行: 1. 拉取MySQL镜像: 首先,需要从Docker Hub上拉取MySQL官方镜像。可以使用以下命令拉取最新版本的MySQL: shell docker pull mysql 2. 创建并启动MySQL容器: 下一步是基于MySQL镜像创建并启动一个容器实例。可以使用以下命令创建一个新的MySQL容器: shell docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> -d mysql 这会创建一个名为 mysql-container 的容器,并设置MySQL root用户的密码为 <password>。-d 参数使得容器在后台运行。 注意: 请将 <password> 替换为您想要设置的实际密码。 3. 连接到MySQL容器: 现在,可以使用以下命令连接到MySQL容器并使用MySQL客户端进行交互: shell docker exec -it mysql-container mysql -u root -p mysql-container 是MySQL容器的名称。 -u root 指定使用root用户连接。 -p 参数会提示您输入之前设置的密码。 成功连接后,您将进入MySQL的命令行提示符。 这样,您就在Docker中成功启动了一个MySQL容器,并可以使用MySQL客户端与其进行交互。要停止容器运行,可以使用以下命令: shell docker stop mysql-container 这会停止名为 mysql-container 的容器。要再次启动容器,可以使用: shell docker start mysql-container 需要注意的是,上述步骤只是为了演示如何在Docker中启动MySQL,并没有指定要持久化的数据库卷或其他高级配置。
在实际生产环境中,您可能需要根据需要进行其他配置和调整,例如映射数据卷、设置端口映射等。请参考MySQL镜像的文档,
以获取更多关于MySQL容器的详细配置选项。
docker attach 进入容器
docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止
Docker故障分类汇总:
https://www.cnblogs.com/pengpengboshi/p/16159540.html
常见问题解决:
1 Is the docker daemon running:使用命令 service docker start
2 unable to remove repository reference "ybdweb:1.0" (must force) - container 63fc448ea6ab is using its referenced image 5598a51c8ef6
-------------------分割线--------------------------------------------------
docker build -t hellodocker.web . ---docker build -t <name> <path>
docker run -d -p 80:5000 hellodocker.web ---p
参数映射容器的5000到宿主机的80端口,80是默认端口 -d表示在后台运行,docker ps可以看到
docker run -d -p 8080:80 --name hellonginx nginx --name 表示给nginx设置Name属性,最后面的nginx表示要运行的镜像
docker logs 容器id -查看该容器运行日志
----------------------------------
docker多容器部署:https://www.jianshu.com/p/1cf84a27de0f
---------------------------------------
PORTS
0.0.0.0:32769->5000/tcp --这是docker把自己的端口5000映射到32769,外网访问端口32769
--------------
docker中ubuntu.使用ubuntu,是因为体积小。
1. 安装vim命令。 apt-get update命令用于更新Ubuntu容器中的软件包列表。 然后,apt-get install vim命令用于安装Vim编辑器。
-----------------------------------------------常见命令错误积累---
当你尝试删除一个镜像时,如果有一个已停止的容器仍然在使用该镜像,Docker会提示"image is being used by stopped container"错误。这是因为容器仍然保留了对该镜像的引用。 要解决这个问题,你可以按照以下步骤进行操作: 查看已停止的容器: 运行以下命令来查看已停止的容器列表: bash docker ps -a --filter status=exited 这将显示所有已停止的容器的列表,包括容器ID、镜像名称、创建时间等信息。 确定正在使用要删除镜像的容器: 通过查看容器列表,找到使用要删除镜像的容器。记下相关的容器ID或名称。 删除已停止的容器: 使用以下命令来删除特定的已停止容器: bash docker rm <container_id_or_name> 将<container_id_or_name>替换为要删除的容器的ID或名称。如果要删除多个容器,可以在命令中指定多个容器ID或名称。 例如,如果要删除容器ID为abc123的容器,运行以下命令: bash docker rm abc123 再次尝试删除镜像: 现在,你可以再次尝试删除该镜像: bash docker rmi <image_name>:<tag> 将<image_name>替换为要删除的镜像的仓库名称,将<tag>替换为对应的标签。 注意: 在删除镜像之前,请确保你要删除的容器已经停止并且不再需要。
要将在Ubuntu容器中安装了Vim命令的容器制作成一个新的镜像,可以按照以下详细步骤进行操作: 运行已安装Vim的Ubuntu容器: 首先,运行以下命令来启动一个交互式的Ubuntu容器,并在其中安装了Vim命令: bash docker run -it ubuntu /bin/bash apt-get update apt-get install vim 这将在Docker中启动一个交互式的Ubuntu容器,并在其中安装Vim。 在容器中进行相关配置: 在容器中,你可以进行一些个性化配置或安装其他依赖项,以满足你的需求。例如,你可以在容器中修改Vim的配置文件、安装其他软件包等。 退出并提交容器的更改: 当你完成了在容器中的配置和修改后,按下Ctrl + D或运行exit命令来退出容器。 然后,使用以下命令来提交容器的更改,将其制作成一个新的镜像: bash docker commit <container_id> <new_image_name>:<tag> 将<container_id>替换为要提交更改的容器的ID,将<new_image_name>替换为你想要给新镜像指定的名称,将<tag>替换为对应的标签。 例如,如果容器的ID是abc123,你想要将新镜像命名为"my-ubuntu",标签为"v1.0",运行以下命令: bash docker commit abc123 my-ubuntu:v1.0 这将创建一个新的镜像,其中包含了在容器中进行的所有更改。 验证新的镜像: 运行docker images命令来验证新的镜像是否已成功创建。你应该能够看到名为"my-ubuntu"、标签为"v1.0"的镜像。 现在,你成功地将在Ubuntu容器中安装了Vim命令的容器制作成了一个新的镜像。你可以使用该镜像在其他容器或环境中进行部署和使用。
-------------------------------------
如果要进入容器ID为abc123的容器,运行以下命令:
docker exec -it abc123 /bin/bash
---
Dockerfile怎么用
第二节 - 编写 Dockerfile 步骤一:创建目录 在你的项目目录下,创建一个名为 nginx 的文件夹,并进入该目录: $ mkdir nginx $ cd nginx 步骤二:创建 Dockerfile 在 nginx 目录下,创建一个名为 Dockerfile 的文件,并使用文本编辑器打开它: $ touch Dockerfile $ nano Dockerfile 在 Dockerfile 中,输入以下内容: # 基础镜像 FROM nginx:latest # 将本地的 Nginx 配置文件复制到容器中 COPY nginx.conf /etc/nginx/nginx.conf # 暴露容器的端口 EXPOSE 80 # 容器启动时执行的命令 CMD ["nginx", "-g", "daemon off;"] 在上述 Dockerfile 中,我们使用了基于最新版 Nginx 镜像,将本地的 Nginx 配置文件复制到容器中,并暴露容器的 80 端口。最后,通过 CMD 命令启动 Nginx 服务器。 步骤三:创建 Nginx 配置文件 在 nginx 目录下,创建一个名为 nginx.conf 的文件,并使用文本编辑器打开它: $ touch nginx.conf $ nano nginx.conf 在 nginx.conf 中,输入以下内容: server { listen 80; server_name localhost; location / { • root /usr/share/nginx/html; • index index.html; } } -- $ docker build -t my-nginx . $ docker run -d -p 80:80 --name my-nginx-container my-nginx
docker切换到阿里云镜像
1. 打开https://cr.console.aliyun.com/ ,注册并登录阿里云账号。 2. 在左侧导航栏中选择镜像加速器,然后在右侧区域找到一个加速器地址,记录此地址。 3. 打开终端(或命令行界面),输入命令: $ sudo vim /etc/docker/daemon.json 或 $ sudo nano /etc/docker/daemon.json 4. 在编辑模式下,输入以下内容: { "registry-mirrors": ["https://加速器地址"] } 5. 保存并退出编辑模式,然后重启Docker服务。 $ sudo systemctl restart docker 6. 验证: $ docker info 或 $ docker version 如果看到有以下输出,说明切换成功了: Registry Mirrors: https://加速器地址/
---------------------------dockerfile和compose---------------------------------------------
https://zhuanlan.zhihu.com/p/458061745
------------------------------------------------------------------------