目录
一、 准备构建一个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:UsersFreedomX>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 : 新镜像文件的名称和标签 :
四、 提交新生成的镜像文件到镜像仓库
# 构建新的镜像文件 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 : 新镜像文件的名称和标签:
四、 提交新生成的镜像文件到镜像仓库
1、 先注册并登录到镜像仓库网站平台 Docker仓库
2、 需要先在镜像仓库网站平台内创建一个存储仓库
3、 在本地命令行执行下面的命令
# 1. 如果本地镜像名称和远程仓库的名称一致,则不需要执行 # 否则需要先将本地要推送的镜像打上标签和远程仓库的名称一致 docker tag nginx-service:1.0 xxxx/nginx-servie:1.0 # 第一个nginx-service:1.0 : 本地的镜像文件名称和标签: # xxx : 远程仓库的用户名称 # 第二个nginx-service:1.0 : 远程仓库的名称和标签 # 2. 登录到镜像仓库 docker login # 3. 推送到镜像仓库 docker push xxx/nginx-service:1.0 # xxx/nginx-service:1.0 : 刚刚打标签的镜像文件 :
五、 新镜像文件的使用
# 镜像的使用
# 如果本地没有该镜像文件,可以直接从镜像仓库内拉取
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
七、 镜像仓库地址
# 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



