使用docker构建镜像的另一种方式

目录

一、 准备构建一个nginx服务的应用镜像

二、 查看运行过的ubuntu容器的CONTAINER  ID

三、 重新生成新的镜像文件

四、 提交新生成的镜像文件到镜像仓库

五、 新镜像文件的使用

六、 使用nginx镜像启动部署项目

七、 镜像仓库地址

八、 附注: 常用软件的前台运行命令


一、 准备构建一个nginx服务的应用镜像

1、 拉取最新的ubuntu镜像

# 拉取ubuntu镜像文件
docker pull ubuntu:latest

2、 启动ubuntu镜像容器,并进入容器

# 启动ubuntu容器
docker run -it ubuntu:latest

# -d 容器后台运行
# 如果加了参数d, 容器后台运行时,需要手动连接运行的容器
# docker exec -it xxxxx /bin/bash 
# xxx : 运行的容器的CONTAINER_ID , 可以通过docker ps 查看

3、 进入容器后,在ubuntu系统内安装nginx服务

# 进入容器后,相当于进入了ubuntu系统内, 由于当前ubuntu系统镜像是干净的系统,内部没有任何熟知的命令
# 需要自己手动安装, 使用 apt-get 命令安装
# 当前使用的按钮nginx的方法是默认系统安装,如果想手动安装软件包,这里不做详细解释,只是简单介绍

# 系统安装nginx
apt-get update && apt-get install nginx

# 一定需要apt-get update 更新下软件源, 否则找不到nginx软件包

# 手动安装nginx
# 1.  需要下载nginx软件包
# 2.  解压nginx软件包
# 3.  cd到解包的nginx目录下
# 4.  执行命令  make && make install 安装nginx软件
# 手动安装的软件包一般在 /usr/local/ext/ 目录下

二、 查看运行过的ubuntu容器的CONTAINER  ID

# 查看所有的容器

docker ps -a

# -a :查看所有的容器,不管容器是否运行状态
# 不加-a参数, 查看正在运行的容器
C:\Users\FreedomX>docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED              STATUS                     PORTS                                NAMES
e58e57842e06   ubuntu:latest   "bash"                   About a minute ago   Exited (3) 7 seconds ago                                        frosty_bhabha
3d278dbae4d2   mysql:5.7       "docker-entrypoint.s…"   8 days ago           Up 31 minutes              33060/tcp, 0.0.0.0:13680->3306/tcp   mysql-data
c55a7e69114b   redis:latest    "docker-entrypoint.s…"   10 days ago          Exited (255) 7 days ago    0.0.0.0:6379->6379/tcp               redis-data

三、 重新生成新的镜像文件

# 构建新的镜像文件
docker commit -m="nginx single service" -c "CMD nginx -g 'daemon off;'" -a="xxx" e58e57842e06 nginx-service:1.0

# -c : 可以修改dockerfile的默认启动命令, 让nginx在启动容器时前台运行
# -m : 对镜像文件的描述
# -a : 镜像文件的维护者
# e58e57842e06 : 容器ID, 需要从哪个容器ID里构建, 可以通过docker ps里查看
# nginx-service:1.0 : 新镜像文件的名称和标签 <name>:<tag>

四、 提交新生成的镜像文件到镜像仓库

 1、 先注册并登录到镜像仓库网站平台  Docker仓库

 2、 需要先在镜像仓库网站平台内创建一个存储仓库

 3、 在本地命令行执行下面的命令

# 1. 如果本地镜像名称和远程仓库的名称一致,则不需要执行
# 否则需要先将本地要推送的镜像打上标签和远程仓库的名称一致
docker tag nginx-service:1.0 xxxx/nginx-servie:1.0

# 第一个nginx-service:1.0 : 本地的镜像文件名称和标签 <name>:<tag>
# xxx : 远程仓库的用户名称
# 第二个nginx-service:1.0 : 远程仓库的名称和标签 

# 2. 登录到镜像仓库
docker login

# 3. 推送到镜像仓库
docker push xxx/nginx-service:1.0

# xxx/nginx-service:1.0 : 刚刚打标签的镜像文件 <name>:<tag>

五、 新镜像文件的使用

# 镜像的使用

# 如果本地没有该镜像文件,可以直接从镜像仓库内拉取
docker pull xxx/nginx-service:tagname

# xxx/nginx-service : 镜像名称
# tagname : 镜像标签

六、 使用nginx镜像启动部署项目


# run 启动镜像容器
docker run -p 80:80 -v ./nginx.conf:/etc/nginx/conf.d/nginx.conf -v ./dist/:/var/www/html/ -itd xxx/nginx-service:tagname

# -p : 端口映射 宿主机端口:容器内部端口
# -d : 容器后端运行
# -v : 映射本地文件或目录同步容器内的文件或目录, 映射后修改本地的文件,容器内及时修改

# exec 连接运行中的容器
docker exec -it xxxx /bin/bash 

七、 镜像仓库地址

freedomx20/nginx-service - Docker Image | Docker Hubhttps://hub.docker.com/r/freedomx20/nginx-service


freedomx20/php7.4-fpm - Docker Image | Docker Hubhttps://hub.docker.com/r/freedomx20/php7.4-fpm

八、 附注: 常用软件的前台运行命令

 nginx:

nginx -g "daemon off;"

apache: 

httpd -DFOREGROUND

Tomcat:

catalina run

 php-fpm:

php-fpm -F

# 如果是7.4版本的则命令  php-fpm7.4 -F

redis:

redis-server

猜你喜欢

转载自blog.csdn.net/u010336468/article/details/124344007