美文网首页
跟我简单学习docker

跟我简单学习docker

作者: 是瑞瀛呀 | 来源:发表于2018-08-24 11:11 被阅读0次

    1.安装docker

    安装

    yum install docker-io -y

    查看版本

    docker -v

    启动

    service docker start

    设置开机启动

    chkconfig docker on

    2.配置docker

    国内访问 Docker Hub 慢, 可用国内镜像源,本文用腾讯云的

    设置docker库

    echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
    systemctl daemon-reload
    service docker restart
    

    3.docker实操

    下载镜像

    docker pull centos

    查看当前镜像列表 (解释列信息)

    docker images

    REPOSITORY TAG IMAGE ID CREATED SIZE
    REPOSITORY TAG IMAGE ID CREATED SIZE
    docker.io/centos latest 75835a67d134 6 weeks ago 200 MB

    拓展:
    docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Size}}" 显示指定列

    运行容器

    1.标准模式
    docker run -it centos /bin/bash
    docker run < 相关命令 > < 镜像名称 | 镜像ID[IMAGE_ID] | 仓库名:标签名[REPOSITORY:TAG] > < 初始命令 >
    -i 允许有命令交互
    -t 在新容器内指定一个伪终端
    /bin/bash初始命令
    2.后台模式
    docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
    065354682b055e773ecb2c7482a8526c2b7d2b54c2ac0f69d40291a8989aab64
    -d 后台运行
    3.挂载目录
    docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash
    -v 挂载目录 -v < 宿主机目录 >:< 容器目录 >
    4.查看日志
    docker logs 065354682b055e773ecb2c7482a8526c2b7d2b54c2ac0f69d40291a8989aab64
    docker日志输出到指定文件

    停止容器

    docker stop [ 启动容器返回的key | 容器ID ]
    docker stop 065354682b055e773ecb2c7482a8526c2b7d2b54c2ac0f69d40291a8989aab64

    查看容器

    1. 查看当前运行的容器
      docker ps
      |CONTAINER ID |IMAGE |COMMAND |CREATED |STATUS |PORTS |NAMES |
      |--------------------|--------------------|--------------------|---------------------|----------------------------|--------------------|------------|
      |CONTAINER ID |IMAGE |COMMAND |CREATED |STATUS |PORTS |NAMES |
      |9b90b23597d2 |centos |"/bin/bash" |About a minute ago |Exited (0) 56 seconds ago | |epic_perlman|
    2. 查看历史运行过的容器
      docker ps -a

    删除历史运行过的容器信息

    --杀死所有正在运行的容器
    docker kill (docker ps -a -q) --删除所有已经停止的容器 docker rm(docker ps -a -q)
    --删除所有未打 dangling 标签的镜像
    docker rmi (docker images -q -f dangling=true) --删除所有镜像 docker rmi(docker images -q)
    --强制删除镜像名称中包含“doss-api”的镜像
    docker rmi --force (docker images | grep doss-api | awk '{print3}')
    --删除所有未使用数据
    docker system prune
    --只删除未使用的volumes
    docker volume prune

    提交docker

    docker commit -m="提交信息" [imageid] [dockername]

    打tag,repository:tag是自己定义的

    docker tag [imageid] [repository]:[tag]

    删除tag

    docker rmi [repository]:[tag]

    删除容器历史docker ps -a内数据

    docker rm [container]

    保存docker到img文件

    docker save [] > xxx.imgs

    加载img文件

    docker load xxx.img

    删除某镜像

    docker rmi -f IMAGE huang/testimport:v1
    docker rmi < 相关命令 > IMAGE < REPOSITORY:TAR >
    -f 强制删除

    4.进入后台运行的Docker的四种方式

    docker exec -it [ CONTAINER | 775c7c9ee1e1 ] /bin/bash
    docker exec < 相关命令 > < 当前运行的容器CONTAINER | 启动容器时返回的Key > <初始命令>

    5.宿主机与Docker交互

    从宿主机拷文件到容器里面

    docker cp jdk-7u55-linux-i586.tar.gz high_saha:/opt
    docker cp <文件> <>:< 容器目录 >

    自动编译/etc/source

    在~/.bashrc内

    source /etc/profile
    

    6.容器的导入导出,加载保存

    1.根据容器ID创建镜像

    docker commit 75c6825032ee hry/testcrt:v2
    容器ID可以在docker ps -a获取到[CONTAINER ID]
    docker import [tar文件] < REPOSITORY:TAR>

    2.保存容器

    docker save -o /java_docker-io_centos__java_use-save.tar docker.io/centos:java

    3.加载容器

    docker load < /java_docker-io_centos__java_use-save.tar

    Docker部署程序

    ## dockerfile
    ## 定义使用哪个基础镜像
    FROM docker.io/centos:java2
    
    ## 作者信息
    MAINTAINER huangruiying
    
    ## COPY /resources/path/xxx.jar 
    COPY regin-tools.jar /app.jar
    
    ## 运行
    CMD java -jar /app.jar
    
    ## 设置对外端口
    EXPOSE 8088
    
    使用dockerfile生成当前项目的新的镜像,"." 表示在当前目录寻找dckerfile

    docker build -t [REPOSITORY:TAG] .

    启动项目

    docker run -p 8088:8088 -d --name regin-tools java_regin-tools:latest
    docker run <-p [宿主机端口]:[容器端口]> <-d 表示后台启动> <--name [启动的容器别名]> REPOSITORY:TAG

    问题

    1. WARNING: IPv4 forwarding is disabled. Networking will not work.
    # 宿主机运行:
    vim  /usr/lib/sysctl.d/00-system.conf
    # 在文件内添加
    net.ipv4.ip_forward=1
    # 重启服务
    systemctl restart network
    systemctl restart docker
    
    1. /usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: "java": executable file not found in $PATH".
    # 在docker镜像内添加软链到/usr/bin
    ln -s /your/javahome/bin/java /usr/bin/
    # 再重新生成下镜像
    

    相关文章

      网友评论

          本文标题:跟我简单学习docker

          本文链接:https://www.haomeiwen.com/subject/mxyubftx.html