docker常用命令以及构建镜像

一、基本启动命令

docker run -itd -p 800:80 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf  --name my_nginx nginx 

这条命令拆分:
docker run :docker运行一个镜像
-itd :it进入 d后台运行
-p: 本机(宿主机)端口:容器端口
–name my_nginx nginx :my_nginx是我起的容器名字 nginx表示用nginx镜像启动

如果没有镜像(镜像下载):

docker pull nginx   

/root/nginx/nginx.conf:/etc/nginx/nginx.conf 表示把宿主机的配置文件映射到容器的配置文件(很重要)。容器里面,比如nginx启动是使用容器里面的配置文件的,我们想同步修改配置文件(避免每次进入到容器修改),则可以在运行镜像时就映射配置。

这时候问题来了,如果我怎么知道映射到容器里面的拿个文件呢?

docker exec -it my_nginx sh

这条指令进入到名字为my_nginx的容器里面,需要在里面找到对应的配置文件(百度查对应镜像的配置文件所在位置),主要还是去看一下 确认。

二、构建镜像(高级用法)

linux下创建一个目录,创建build.sh 、Dockerfile 文件

Dockerfile文件:

# 以什么镜像支持来运行的,如果是nginx,则nginx:latest
FROM java:latest
# 镜像下运行的指令 校准时间 ,可照搬
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone

#本地(宿主机)文件 复制到容器,起的名字”app-0.0.1-SNAPSHOT.jar“
COPY app-0.0.1-SNAPSHOT.jar /app-0.0.1-SNAPSHOT.jar
#本地文件复制到容器,用于上面指令校准时间的
COPY localtime /etc/localtime
# 告知外界你容器监听的端口,用于-p 来绑定的,但是实际不影响容器内的服务真正监
#听的端口,如果写了假的,则-p 绑定失败 ,就访问不到内部服务
EXPOSE 8081

#docker run “镜像名” 后面如果没有指令,则运行这条
CMD ["/usr/bin/java","-jar","/app-0.0.1-SNAPSHOT.jar"]

build.sh文件

#!/bin/bash
#我运行容器时起的名字是java8
docker stop java8
#移除 java8容器
docker rm java8
docker rmi -f ax:v1
# 构建 后面的.也要,表示匹配当前目录下的Dockfile文件
docker build -t ax:v1 .
docker run -itd --name java8 -p 8088:8081 ax:v1

localtime 文件,百度拿把,二进制文件来的,需要ftp传进去

一些管理命令:

docker ps  #查看正在运行的容器
docker ps -a  #查看所有运行过且还未被移除的容器
docker restart “运行时起的容器名” #重启未被移除的容器,会有先前命令的记忆
docker rm  “容器名” #移除容器
docker history ax:v1 #查看ax镜像对外说明监听的端口(有可能是假的,如果是假的需要进去镜像找配置文件查看实际监听的端口)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_49686768/article/details/121777696