1、docker 概念

定义

docker  : 解决运行环境和配置软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

 

docker  —help

 
Usage:    docker [OPTIONS] COMMAND


A self-sufficient runtime for containers


Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit


Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes


Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

 

 
  • 常用命令:


(镜像命令)   

  image
        docker image  :docker 中的镜像
  • -a : 列出本地所有镜像
  • -q :只显示镜像ID
  • —digests :显示镜像的摘要信息
  • —no-trunc :显示完整的镜像
     search
        docker search tomcat
 
     pull
        docker pull tomcat   等价于  docker pull tomcat:latest       拉取最新版本
        
     rmi
        docker rmi hello-world 等价于  docker rmi hello-world:latest    删除镜像
        docker rmi -f hello-world   强制删除
        docker rmi -f hello nginx   批量删除
        docker rmi -f  $(docker image -qa)           组合命令 删除所有镜像
 

(容器命令)

  •  新建启动容器
        
        docker run -it  “id”
  • 列出当前所有正在运行的容器
                docker ps
                    -l :运行过的容器
                    -n 3 : 上3次运行过的
                    -lq : 显示 所有运行过的 容器的 ID
  • 退出容器
                exit : 关闭退出
                ctrl + P + Q :关闭不退出
  • 启动容器
                docker start “ID” 
  • 重启容器
                docker restart “ID” 
  • 停止容器
                docker stop “ID"
  • 强制停止容器
                docker kill “ID"
  • 删除已停止的容器
                docker rm -f $(docker ps -a -q)
                docker ps -a -q | xargs docker rm
  • 启动守护是容器
    • docker -run -d centos : 启动之后就会自动停止
    • docker -run -d centos  /bin/sh -c “while true;do echo hello yhw; sleep 2; done" 
  • 查看容器中的日志
    • docker logs “id” 
      • -t :加入时间戳
      • -f :跟随最新的日志打印
      • —tail 数字 :显示最后几条记录
    • 例如 docker logs "id" -t -f —tail 5  : 实时的查看最新的5行记录
  • 查看容器内运行的进程
    • docker top “ID”
  • 查看容器内的运行细节
    • docker inspect “容器ID”
  • 进入正在运行的容器并以命令行交互
    • docker exec -it “容器ID” bashShell     例子:docker exec -it “ID” ls -l 
    • docker attach “容器ID"
    • 两者区别 : exec  是不进入容器 操作容器,不启动新的进程, attach  是进入容器操作
  • 从容器内拷贝文件到主机
    • docker cp “ID:path  targetPath”    例子:docker cp 739d404cc923:/tmp/yang.log ~/


 

Docker 镜像(补充命令)

        定义:联合文件系统(层层叠加)
  • docker run -it -p 8080:8080 tomcat 
    • -p    主机端口:docker容器端口
    • -P    随机分配端口
    • i       交互
    • t       终端
  • docker commit -a=“author” -m=“update msg” “ID”  tomcatNew/mytomcat:1.2


 

Docker 容器数据卷

        定义:持久化 和 数据共享
        容器的添加
  • 命令添加
    • docker  run -it -v /mydata:/mydata1 centos(镜像名)  实现本地宿主机 mydata 目录与 centos mydata1 的文件共享
    • docker run -it -v /mydata:/mydata1 :ro centos 只读共享
    • 如果没有写权限, 可以添加命令   privileged=true
  • DockerFile 添加
    • 编写可执行的 脚本
# volume test
FROM centos
VOLUME ["/dataVC1","/dataVC2"]
CMD echo "finished,-----success"
CMD /bin/sh

# 用 build 执行完成之后会给 dataVC1 dataVC2 在 宿主机上自动的 分配 地址

 

 
 
 
  • build 生成镜像
  • docker build -f ~/mydocker/Dockerfile -t yhw/centos   .          ——  -f:指定构建文件     -t 跟镜像名称     . 是在当前路径下
  • 上边的命令, 如果构建的文件是 Dockerfile 的话, -f 可以省略,
 
  •   —volumes-from “镜像名”         # 链式挂载分区, 父子之间共享,以及传递,即便父被删除,自也会实现共享
    • docker run -it —name doc01 yhw/centos
    • docker run -it —name doc02 —volumes-from doc01 yhw/centos    复用 doc01中挂载的 dataVC1  dataVC2 目录
 

( DockerFile ) CMD 与 ENTRYPOINT 区别

        CMD 多个命令时,是命令被覆盖,
        ENTRYPOINT 是追加命令!
 
例子
FROM centos
RUN yum install curl
CMD [“curl”,“-s”,”http://ip.cn”]


#打包以上命令
docker build -f “path” mydoc01 

# 可以正确执行
docker run -it mydoc01 

# 会报错 由于CMD命令会覆盖,此时命令相当于 CMD -i, 如果想正确执行:docker run -it mydoc01 curl -s -i http://ip.cn
docker run -it mydoc01 -i  


FROM centos
RUN yum install curl
ENTRYPOINT [“curl”,“-s”,”http://ip.cn”]

#打包以上命令
docker build -f “path” mydoc02

# 可以正确执行
docker run -it mydoc01

# 也可以正确的打印出头信息, ENTRYPOINT 命令是追加的
docker run -it mydoc01 -i

 

 

( DockerFile ) ADD、COPY

  • copy : 从宿主机拷贝文件到镜像
  • add : 添加并解压
 
 

DockerFile 示例(自定义 tomcat9)


FROM centos
MAINTAINER yhw
# 从宿主机拷贝文件到容器/usr/local/路径下
COPY mmm.txt /usr/loccal/cincontainer.txt
# 将java,tomcat 添加到容器中
ADD jdk-8u171-linux-x64.tar.gz  /usr/local/ 
ADD apache-tomcat=9.0.8.tar,gz /usr/local/
# 安装 vim 
RUN yum install vim
# 设置工作访问时的 workdir路径,登录的落脚点
ENV mypath /usr/local
WORKDIR $mypath
# 配置 java tomcat 环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0.171
ENV CLASSPATH $JAVA_HOME/LIB/dt.jar:$JAVA_HOME/lib/tool.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
# 容器运行的监听端口
expose 8080
# 启动 tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh"]
# CMD ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh", "run"]
cmd /usr/local/apache-tomcaat-9.0.8/bin/startup.sh && tail -f /usr/local/apace-tomcat-9.0.8/bin/logs/catalina.out

构建命令( 如果是 Dockerfile 文件,可以省略 -f 指定文件的操作)
docker build -t yhwtomcat9 

启动命名:
docker run -d -p 9080:8080 —name myt9
# 挂载 分区卷 
-v ~/mr_yang/mydockerfile/tomcat/test:/usr/local/apache-tomacat-9.0.8/test 
-v ~/mr_yang/mydockerfile/tomcat/logs/:/usr/local/apache-tomcat-9.0.8/logs
# 防止没有写权限
—-privileged=true
# 要启动的镜像名称
yhwtomcat9

验证:
docker image 
docker ps
docker exec “ID” ls -l
docker exec “ID” java -version
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值