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

 ------------------------------------------------------------------------

 

 
posted @ 2023-06-21 10:04  vba是最好的语言  阅读(24)  评论(0编辑  收藏  举报