Docker常用命令-全流程

Docker环境安装

安装详细说明参考官方文档:https://docs.docker.com/get-docker/

环境信息查看
##查看docker容器版本
docker version
##查看docker容器信息
docker info
##查看docker容器帮助
docker --help
镜像操作
  1. 查看镜像
##列出本地images
docker images
##含中间映像层
docker images -a

查询出的信息从左到右依次为仓库名称、标签、镜像Id、创建日期
在这里插入图片描述

  1. 拉取镜像
    官方镜像仓库地址:https://hub.docker.com/,可以搜索自己需要的镜像和版本,包含详细的说明文档,提供下载命令。
    如果搭建了私有仓库,可以在镜像前加上仓库地址下载私有仓库的镜像(私有仓库拉取前要先登录
##下载Redis官方最新镜像,相当于:docker pull redis:latest
docker pull redis
##下载私人仓库镜像
docker pull bitnami/redis
  1. 镜像删除
##单个镜像删除,相当于:docker rmi redis:latest
docker rmi redis
##强制删除(针对基于镜像有运行的容器进程)
docker rmi -f redis
##多个镜像删除,不同镜像间以空格间隔
docker rmi -f redis tomcat nginx
  1. 镜像详细信息查看
##使用 inspect 命令查看镜像详细信息,包括制作者、适应架构、各层的数字摘要等
docker inspect redis
容器操作
  1. 容器启动
##新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -i -t --name mycentos
##后台启动容器,参数:-d  已守护方式启动容器
docker run -d mycentos
##启动一个或多个已经被停止的容器
docker start redis
##停止一个容器
docker stop redis
##重启容器
docker restart redis

这里再详细说下启动过程中传递环境变量,以springboot项目为例
修改application.yaml配置文件的内容方式有两种,亲测可用

  • 将配置文件需要动态传参的地方修改为:${DB_USER:cloud0305},外部传入为:-e DB_USER=“dfdq”
  • 不修改原文件,直接借助springboot加载机制,使用配置的全路径:-e
    “SPRING_DATASOURCE_DRIVER-CLASS-NAME=org.postgresql.Driver”
docker run \
-p 5200:5200 \
-e REDIS_HOST="10.24.19.124" \
-e REDIS_PORT="6379" \
-e DB_URL="jdbc:postgresql://10.24.19.124:15432/dfdq" \
-e DB_USER="dfdq" \
-e DB_PWD="aaaaaa" \
-e "SPRING_DATASOURCE_DRIVER-CLASS-NAME=org.postgresql.Driver" \
-e "SPRING_DATASOURCE_HIKARI_CONNECTION-TEST-QUERY=SELECT 1" \
-e "SPRING_JPA_PROPERTIES_HIBERNATE_DIALECT=org.hibernate.dialect.CAFPostgreSQL95Dialect" \
-e "CAF-SECURITY_AUTHN_PROVIDERS_USERNAME-PASSWORD-JDBC_DATASOURCE_DRIVER-CLASS-NAME=org.postgresql.Driver" \
--privileged=true \
-d --name 2003_rc2 demo/test:2.0 . 
  1. 容器日志
    容器启动后,可以查看内部日志。
    不仅可以知晓当前的运行状态,也可以在运行出错的情况下通过日志排查
##查看redis容器日志,默认参数
docker logs rabbitmq
##查看redis容器日志,参数:-f  跟踪日志输出;-t   显示时间戳;--tail  仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
##查看容器redis从20190521日后的最新10条日志。
docker logs --since="2019-05-21" --tail=10 redis
  1. 容器的进入与退出
##使用run方式在创建时进入
docker run -it centos /bin/bash
##关闭容器并退出
exit
##仅退出容器,不关闭
快捷键:Ctrl + P + Q
##直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false  确保CTRL-D或CTRL-C不会关闭容器
docker attach --sig-proxy=false centos 
##在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i  即使没有附加也保持STDIN 打开;-t  分配一个伪终端
docker exec -i -t  centos /bin/bash
##以交互模式在容器中执行命令,结果返回到当前终端屏幕
docker exec -i -t centos ls -l /tmp
##以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端
docker exec -d centos  touch cache.txt 
  1. 查看容器
##查看正在运行的容器
docker ps
##查看正在运行的容器的ID
docker ps -q
##查看正在运行+历史运行过的容器
docker ps -a
##显示运行容器总文件大小
docker ps -s
  1. 容器的停止与删除
##停止一个运行中的容器
docker stop redis
##杀掉一个运行中的容器
docker kill redis
##删除一个已停止的容器
docker rm redis
##删除一个运行中的容器
docker rm -f redis
##删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
## -l 移除容器间的网络连接,连接名为 db
docker rm -l db 
## -v 删除容器,并删除容器挂载的数据卷
docker rm -v redis
  1. 容器与主机间的数据拷贝
##将rabbitmq容器中的文件copy至本地路径
docker cp rabbitmq:/[container_path] [local_path]
##将主机文件copy至rabbitmq容器
docker cp [local_path] rabbitmq:/[container_path]/
##将主机文件copy至rabbitmq容器,目录重命名为[container_path](注意与非重命名copy的区别)
docker cp [local_path] rabbitmq:/[container_path]

参考链接:https://www.cnblogs.com/DeepInThought

全流程总结

上面对镜像的常用操作进行了一次梳理,接下来讲一下如何构建自己的镜像,包含镜像制作、镜像验证、镜像导入导出、镜像上传

1、Dockerfile说明

以下是一个Dockerfile的实例说明
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令
’#’ 为 Dockerfile 中的注释

# This my first nginx Dockerfile
# Version 1.0

# Base images 基础镜像
FROM centos

#MAINTAINER 维护者信息
MAINTAINER tianfeiyu 

#ENV 设置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

#ADD  文件放在当前目录下,拷过去会自动解压
ADD nginx-1.8.0.tar.gz /usr/local/  
ADD epel-release-latest-7.noarch.rpm /usr/local/  

#RUN 执行以下命令 
RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www

#WORKDIR 相当于cd
WORKDIR /usr/local/nginx-1.8.0 

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo "daemon off;" >> /etc/nginx.conf

#EXPOSE 映射端口
EXPOSE 80

#CMD 运行以下命令
CMD ["nginx"]
2、基于已有的Dockerfile制作镜像

执行命令的docker build命令时候,dockerfile需要在命令执行的当前目录
如果制作的镜像需要上传仓库,则需要加上仓库的前缀
最后的“.”不能丢

docker build -f ./Dockerfile -t repository/demo:2.0 .
3、运行镜像验证

镜像的启动参见:容器操作>>容器启动
需要注意的是容器启动需要的参数均要换成实际能访问的地址,避免localhost

4、将制作的镜像导出到其他环境

此处不能使用docker import,会丢失镜像环境信息

##将镜像导出到tar
docker save -o demo.tar repository/demo:2.0.1
##将镜像导入
docker load -i demo.tar
4、镜像上传仓库

首先需要登录

##账号、密码、仓库地址
docker login -u nx-business-ci -p Test6530 repository-ip

检查镜像名是否和仓库名一致,如果不一致,使用以下命令修改

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

推送镜像

docker push ImageName
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值