docker相关命令
#info|version
docker info #显示docker的系统信息,包括镜像和容器的数量
docker version #显示docker的版本信息。
#帮助命令
docker 命令 --help #帮助命令
#镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替
docker search #搜索镜像
docker pull #下载镜像 docker image pull
docker rmi #删除镜像 docker image rm
#容器命令
docker run 镜像id #新建容器并启动
docker ps 列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
#删除所有容器
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
#启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
#退出容器
exit #容器直接退出
ctrl +P +Q #容器不停止退出 ---注意:这个很有用的操作
#其他常用命令
docker run -d 镜像名 #后台启动命令
docker logs #查看日志
docker top 容器id #查看容器中进程信息ps
docker inspect 容器id #查看镜像的元数据
docker exec #进入当前容器后开启一个新的终端,可以在里面操作。(常用)
docker attach # 进入容器正在执行的终端
docker cp 容器id:容器内路径 主机目的路径 #从容器内拷贝到主机上
安装docker
Dockerfile入门指令:
指令 | 使用描述 |
---|---|
FROM | 构建新镜像基于哪个源,可指定版本号(默认拉取最新)如FROM centos:7、FROM centos7.9 |
MAINTAINER | 维护者信息 |
RUN | 用来执行命令行命令;shell格式: RUN <命令> ,输入在bash环境中的命令即可,一个dockerfile允许使用RUN不得超过127层,所以,使用一次RUN, 使用 ‘ \ ’ 换行,使用‘ && ’执行下一条命令。一般使用此种格式; |
COPY | 复制文件。格式:COPY <源路径>…<目标路径> |
ADD | 更高级的复制文件,在COPY的基础上增加了一些功能,如果复制的是压缩包的话,会直接解压,而不需要在使用RUN解压 |
CMD | 容器启动命令,只有最后一个CMD会生效;如CMD /bin/bash 表示用bash启动 |
ENV | 设置环境变量 |
VOLUME | 定义匿名卷 |
EXPOSE | 暴露端口 |
WORKDIR | 指定工作目录。 WORKDIR <工作目录路径> |
ENTRYPOINT | 指定容器启动时运行该命令,可追加命令 |
Dockerfile文件内容
nginx环境
# 指定基础镜像
FROM ubuntu:20.04
# 维护者信息
MAINTAINER yxs
# 下载基础配置
RUN apt-get update && apt-get install -y vim \
&& apt install -y net-tools && apt install -y systemctl
# 下载nginx
RUN apt-get install -y nginx
# 拷贝nginx.conf文件
COPY ./nginx.conf /etc/nginx/nginx.conf
java8环境
# 指定基础镜像
FROM ubuntu:20.04
# 维护者信息
MAINTAINER yxs
# 下载基础配置
RUN apt-get update && apt-get install -y vim \
&& apt install -y net-tools && apt install -y systemctl
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/java8
# 拷贝jdk和java项目jar包
COPY ./jdk-8u191-linux-x64.tar.gz $JAVA_DIR/
COPY ./xxx.jar /usr/project/backend/xxx.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk-8u191-linux-x64.tar.gz
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/jdk1.8.0_191
ENV CLASSPATH=.:$JAVA_HOOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
# 暴露端口
EXPOSE 7082
# 入口,java项目的启动命令
# ENTRYPOINT ["/usr/software/commands.sh"]
运行
-
创建一个文件夹存储镜像
mkdir /usr/docker/front
-
创建命令(相关文件放在dockerfile同一目录下)
docker build -t dockerfront:1.0 .
-
启动镜像容器
# dockerfront为指定的docker运行容器名称(自定义), 7083为宿主机开放端口,7082为docker容器暴露端口,这里是将docker容器端口映射到宿主机端口,外面才能访问,-d后面接docker镜像 sudo docker run -it --name dockerfront -p 7083:7082 -d dockerfront:1.0
-
进入容器
# 进入docker容器 sudo docker exec -it dockerfront /bin/bash
-
启动后需要做的几件事:
# 进入后端容器启动后端程序 # 开启后端 java -jar /usr/project/backend/xxx.jar &
分成前后端和数据库三个镜像
-
目录挂载,在上面的启动容器命令中加上-v和对应的目录映射关系即可,有几个挂载就放几个-v
docker run -id -v /mydata/docker_nginx/data:/usr/local/data --name nginx-01 nginx docker run -id -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
镜像打包
容器打包
# 示例
sudo docker commit -m "容器说明" 容器id/别名 打包后的镜像名:版本号
# 前端
sudo docker commit -m "dockerfront" dockerfront docker_front:1.0
# 后端
sudo docker commit -m "dockerback" dockerback docker_back:1.0
镜像备份成tar
# 示例
sudo docker save -o 目录/xxx.tar 需要打包的镜像名:版本号
# 前端
sudo docker save -o /usr/docker/docker_front.tar docker_front:1.0
# 后端
sudo docker save -o /usr/docker/docker_back.tar docker_back:1.0
上传到阿里云
-
进入阿里云的控制台找到容器镜像服务
-
点击命名空间——创建命名空间
-
点击个人实例,选择创建镜像仓库
-
填写镜像仓库信息,仓库名最好和需要上传的一致,命名空间选择上一步创建的,摘要写一下说明就行。
-
下一步——选择本地仓库——创建镜像仓库
-
这里展示阿里云镜像的一些使用说明
# 前端 sudo docker tag 镜像id registry.cn-hangzhou.aliyuncs.com/cabbageship-test/docker_front:1.0 sudo docker push registry.cn-hangzhou.aliyuncs.com/cabbageship-test/docker_front:1.0 # 后端 sudo docker tag 镜像id registry.cn-hangzhou.aliyuncs.com/cabbageship-test/docker_back:1.0 sudo docker push registry.cn-hangzhou.aliyuncs.com/cabbageship-test/docker_back:1.0
-
拉取镜像
# 前端 sudo docker pull registry.cn-hangzhou.aliyuncs.com/cabbageship-test/docker_front:1.0 # 后端 sudo docker pull registry.cn-hangzhou.aliyuncs.com/cabbageship-test/docker_back:1.0