Docker常用命令以及Dockerfile制作

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker常用命令以及Dockerfile制作
docker重启
systemctl restart docker
查看当前有的镜像
docker images
查看容器
docker ps
删除镜像
docker rmi -f 镜像id
删除容器
docker rm 容器id
搜索镜像
docker search 容器id
删除容器(-f强制删除,正在运行的容器也删除)
docker rm -f {containerID}
从镜像仓库中拉取或者更新指定镜像:
docker pull 
杀掉一个运行中的容器
docker kill 容器id
启动容器
docker start 容器ID
停止容器
docker stop 容器ID
重启容器:
docker restart 容器ID
运行springboot
docker run -p 8080:8083 -t hello-docker
-- 8080 是外部暴露的端口
-- 8083 docker里面的项目的端口
打包镜像
docker save hello:v1 -o hello.tar
镜像加载
docker load -i hello.tar
推送到镜像仓库
docker push xxx:version
修改版本
docker tag imageId com.xxx/xx.tar
docker将容器内的目录复制到本地
docker cp 容器号:/路径 /本地路径
例如:dcoker cp e90660a4331f:/go/src E:/project/www/go
docker自动启停命令
docker update 容器名称 --restart=always
docker启动里面服务获取参数
SpringBoot 配置文件写 ${address}:3306
实际启动:
docker run -it xxx:latest --address=127.0.0.1 ###这样就可以动态的获取变量了
进入容器
docker exec -it 容器名称 bash
docker exec -it 容器名称 bash
docker container exec -it 容器id /bin/bash  
退出
ctrl+d或者exit
启动所有容器
docker start `docker ps -a -q`
删除所有容器
docker stop `docker ps -a -q`
docker rm `docker ps -a -q`
删除所有镜像
docker rmi `docker images -q`
删除数据卷
docker volume rm my-vol
docker volume ls
无主的数据卷可能会占据很多空间,要清理请使用以下命令
docker volume prune
docker删除未使用到的镜像
docker image prune -a
查看网络
docker network ls
查看网络详细信息
docker inspect 网络名
Docker容器安装软件和中使用国内镜像
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "" > /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian buster main" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> etc/apt/sources.list 
echo "deb http://mirrors.aliyun.com/debian buster-updates main" >> /etc/apt/sources.list 
然后更新
1、更新 apt-get
apt-get update
apt-get upgrade
2、yum
apt install yum
3、vim
apt install vim
4、ifconfig
apt install net-tools
5、ping
apt install iputils-ping
6、ps
apt-get install procps
不启动容器进入镜像中
docker run -it --entrypoint bash openjdk:8
Docker查找在线查找镜像命令
docker search java
查看日志
docker logs -f 2950b6f847c0
查看运行容器的状态
docker ps -a
 
 CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                          PORTS      NAMES
2950b6f847c0   2f66aad5324a   "docker-entrypoint.s…"   About a minute ago   Up About a minute               6379/tcp   redis
9d82c13fef77   2f66aad5324a   "docker-entrypoint.s…"   About a minute ago   Exited (1) About a minute ago              compassionate_johnson
3db7cfbe0519   2f66aad5324a   "docker-entrypoint.s…"   2 minutes ago        Exited (1) About a minute ago              sharp_montalcini
34f77d9f0413   openjdk:8      "bash"                   37 hours ago         Exited (1) 36 hours ago                    magical_bardeen
STATUS : Exited (1) 非正常退出 Exited (0) 容器运行完自动销毁
NAMES: 运行容器的名称
使用Dockerfile构建镜像
docker build -t my-docker:latest . # .表示当前目录
#基于dockerfile文件构建镜像命令
完整的写法: docker build -f dockerfile -t nginx:new . 
docker build : 基于dockerfile 构建镜像
-f :指定dockerfile 文件(默认不写的话指的是当前目录)
-t :(tag) 打标签 ——》nginx:new 
.  :专业说法:指的是构建镜像时的上下文环境,简单理解:指的当前目录环境中的文件
搭建私有镜像仓库
# 拉取镜像
docker pull registry:2
# 运行镜像
docker run -d -p 5000:5000 --restart always --name registry registry:2
# 打本地镜像tag
docker tag redis:latest localhost:5000/redis:latest
# 推送到本地镜像仓库
docker push localhost:5000/redis:latest
# 查看镜像仓库
[root@localhost ~]# curl localhost:5000/v2/_catalog
{"repositories":["redis"]}
Dockerfile 制作-1
#基于jdk1.8.0_191镜像
FROM jdk1.8.0_191:v1
#作者信息
MAINTAINER liupei
#将jar拷贝到容器中去
ADD springcloud-eureka.jar /opt
#赋予执行权限
RUN chmod +x /opt/springcloud-eureka.jar
#Java JVM 启动参数变量,这里需要在这里加一个时区参数。
ENV JAVA_OPTS="-Duser.timezone=Asia/Shanghai"
#暴露端口
EXPOSE 7001
#Spring 容器启动参数变量,方便后续操作时能通过此变量配置 Spring 参数
ENV APP_OPTS=""
#运行jar
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS  -jar /opt/springcloud-eureka.jar  $APP_OPTS" ]
Dockerfile 制作-1
#基于我们刚刚创建的jdk镜像
FROM jdk1.8.0_191:v1
#作者信息
MAINTAINER liupei
#将应用包拷贝进入容器
ADD springcloud-getwey.jar /opt
#赋予容器内应用程序执行的权限
RUN chmod +x /opt/springcloud-getwey.jar
#运行jar
CMD java -jar /opt/springcloud-getwey.jar
Dockerfile 制作-2使用其他镜像做为基础镜像
FROM www.xxx.xx/centos4.0.2_java8-x86:base
# 当前目录拷贝到 root路径
COPY . /root/
# 使用该基础镜像的时候执行这个脚本,给这个脚本分配权限
RUN ["chmod","+x" ,"/root/xx/xx.sh"]
# 使用该基础镜像的时候执行这个脚本
ONBUILD RUN ["/root/xx/xx.sh"]
Dockerfile 制作-3使用3作为基础镜像
FROM www.xx.xx/使用1制作的镜像:latest 
# 当前要执行的复制到容器/opt/
COPY . /opt/
 
RUN ["chmod","+x" ,"/opt/service-xx/install.sh"]
 
ENTRYPOINT ["/opt/service-xx/install.sh","执行参数"]
Dockerfile 制作-4制作基础镜像并安装其他依赖
FROM python:3.6
MAINTAINER liupei
RUN pip install thrift
Dockerfile操作指令
指令 含义
FROM [镜像] 指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令,例如centos:7。from有两层含义:①开启一个新的镜像②必须写的一行指令
MAINTAINER [名字] 说明新镜像的维护人信息(可写可不写)
RUN命令 每一条RUN后面跟一条命令,在所基于的镜像上执行命令,并提交到新的镜像中,RUN必须大写
CMD [“要运行的程序”,“参数1”、“参数2”] 指定启动容器时需要运行的命令或者脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能执行最后一条,“bin/bash”也是一条CMD,并且会覆盖image镜像里面的cmd。
EXPOSE [端口号] 指定新镜像加载到Docker时要开启的端口暴露端口,就是这个容器暴露出去的端口号。
ENV [环境变量] [变量值] 设置一个环境变量的值,会被后面的RUN使用。容器可以根据自己的需求创建时传入环境变量,镜像不可以。
ADD [源文件/目录] [目标文件/目录] ①将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,②或者是一个URL,③若源文件是压缩包则会将其解压缩
COPY [源文件/目录] [目标文件/目录] 将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中,copy只能用于复制,add复制的同时,如果复制的对象是压缩包,ADD还可以解压,copy比add节省资源
VOLUME [“目录”] 在容器中创建一个挂载点,简单来说就是-v,指定镜像的目录挂载到宿主机上。
USER [用户名/UID] 指定运行容器时的用户
WORKDIR [路径] 为后续的RUN、CMD、ENTRYPOINT指定工作目录,相当于是一个临时的"CD",否则需要使用绝对路径,例如workdir /opt。移动到opt目录,并在这下面的指令都是在opt下执行。
ONBUILD [命令] 指定所生成的镜像作为一个基础镜像时所要运行的命令*(是一种优化)**
HEALTHCHECK 健康检查
相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
Docker 容器
Docker run命令-p参数详解
本文介绍Docker端口映射的基础用法。通过`docker run -p <宿主机端口>:<容器端口>`实现端口映射,例如`-p 5000:80`将宿主机5000端口映射到容器80端口,外部访问宿主机5000端口时流量会转发至容器内部的80端口。示例命令中,`-d`用于后台运行,`--restart=always`确保容器自动重启,`--name`指定容器名称。部署完成后可通过`http://服务器IP地址:5000`验证服务是否正常运行。
|
5月前
|
网络协议 Ubuntu Docker
Docker Compose--命令说明
Docker Compose--命令说明
852 30
|
5月前
|
Ubuntu Linux 开发者
常用的Docker命令:docker_cmd_sheet
以上就是一些常用的Docker命令,希望能帮助你更好地驾驭这个强大的工具。记住,Docker就像是一个魔法咒语,只有真正理解和熟练使用,才能发挥出它的最大魔力。
130 22
|
5月前
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
171 16
|
5月前
|
关系型数据库 MySQL 数据库
Docker 安装常用软件相关命令
本文介绍了在CentOS 7.9系统上安装Docker的详细步骤,包括添加阿里云镜像源、安装Docker及相关组件、启动服务以及配置镜像加速。同时,还展示了如何通过Docker安装MySQL 5.7版本数据库,涵盖拉取镜像、创建数据目录、运行容器及配置挂载点等操作,并提供验证安装成功的命令和截图。适合需要部署Docker与MySQL环境的用户参考。
313 5
|
5月前
|
关系型数据库 MySQL Docker
|
7月前
|
Kubernetes Docker 容器
Kubernetes与Docker参数对照:理解Pod中的command、args与Dockerfile中的CMD、ENTRYPOINT。
需要明确的是,理解这些都需要对Docker和Kubernetes有一定深度的理解,才能把握二者的区别和联系。虽然它们都是容器技术的二个重要组成部分,但各有其特性和适用场景,理解它们的本质和工作方式,才能更好的使用这些工具,将各自的优点整合到生产环境中,实现软件的快速开发和部署。
224 25
|
6月前
|
NoSQL 应用服务中间件 Redis
Docker 常用命令整理
Docker 常用命令整理
159 1
|
8月前
|
容器 Docker Ubuntu
Docker命令速查表​
本文翻译自我的英文博客,最新修订内容可随时参考:Docker命令速查表
123 9
|
9月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
502 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结