docker常用命令

常用命令:

docker build -t [容器名] .   根据Dockerfile 配置开始打包镜像   注意:后面有个点,表示当前目录下

service docker restart       重启docker

docker  images  查看当前的镜像文件

docker ps -a  	查看当前运行的镜像程序

docker pull    	拉去镜像文件 从镜像仓库

docker build -t [容器名] .   注意:后面有个点,表示当前目录下

docker run  运行docker容器
docker run -it --net=host --name erizboot -p 8181:8181 erizboot    创建容器 并运行它

docker start  cid      运行一个已经存在的容器.根据容器id, 查看容器id 可以通过 docker ps -a 

docker ps -a    查看容器的信息及状态(运行或停止)

docker rmi docker-project-Id  移除镜像,  如果删除不了(例如多个id导致不能删除) 就加 -f  暴力删除(相同的id都会被删除),例如 :  docker rmi -f c53b236d7e3f

docker rm docker-project-Id   移除容器

docker kill   cId             强制杀死正在运行的容器

docker stop  cid            停止正在运行的容器

docker exec -it cid /bin/bash   进入容器,根据容器id

#docker-project:镜像名称,   caomingjiecode/czdocker: docker hub 仓库地址(自己申请的) , 0.1: tag名称,一般设置为版本号
docker tag docker-project      caomingjiecode/czdocker:0.1          修改 镜像的tag, 

docker login    登陆docker 仓库, 我的仓库是 docker hub

docker push   caomingjiecode/czdocker:0.1   将docker镜像上传到docker hub

docker  logs --tail='10'  cid    查看指定容器日志 最后10行,也可以指定更多行, 滚动查看加 -f


docker run  --link=cid:别名  用于容器之间的端口直接访问通过别名(避免了ip和映射端口)
David@MacBook-Pro-3 ~$ docker run --name=mysql_client1 --link=mysql_server:db -i -t hzc/mysql_client mysql -h db -uroot -p1234

docker run -v srcFile:descFile  文件映射,将本地文件映射到容器中指定的文件. srcFile 本地文件/夹, descFile 容器文件/夹
docker run  -it -v ~/pipeline/:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:7.8.1

docker cp  cname:/xx/xx   ./xx     当容器配置文件被我们改错时,容器启动不起来时可以用这种办法将配置文件copy出来,修改完后再写回容器.

ubuntu安装docker 命令:

  sudo apt install docker.io
  sudo systemctl start docker
  sudo systemctl enable docker
  docker -v

常用案例:

#启动mysql 5.7版本
docker run --name mysql -p 3306:3306 -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

#启动springboot项目,共享本机ip和端口,
docker run -it --net=host --name erizboot -p 8181:8181 erizboot

-i参数是keep STDIN open even if not attached,意思就是会把交互界面保留着。但是要看容器的PID1,或者说看容器的CMD是什么,有些CMD程序并不会理会任何输入,也就是说它就没有等着你输入命令,这时候你输入什么都是无效的。并且,因为linux对pid1的特殊处理,它也不会理会信号,所以你只能按ctrl+p + ctrl+q,把程序放到后台。(但通常都要run -it一起使用才有效)
-t
allocate a pseudo-TTY.作用是分配一个虚拟的终端,我的理解就是,有了-t参数,这个docker就会被分配一个终端,在docker中启动bash就会有提示符。不过,-it总是一起出现的。
--name
为容器取一个名字

实际工作中的开发环境: idea ,gradel , 似有docker仓库, 打包后推送到似有仓库
Dockerfile: 在src/main/docker 目录下

#私有基础镜像,ip:port 为私服地址和端口
FROM ip:port/urcs/java:8

VOLUME ["/tmp"]
#./ 代表当前build的目录
ADD ./* /home/project/

#指定时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

ENTRYPOINT ["/home/project/run.sh"]

build.gradle 中的内容

//只需要修改 autoPush/imageTag
buildscript {
    project.ext {
        //打包镜像名称,ip:port 为私服地址和端口
        imagesTag = "ip:port/" + "项目名称"
        springIOVersion = '1.0.0.RELEASE'
        springBootVersion = '1.5.9.RELEASE'
    }
    repositories {
        jcenter()
        mavenLocal()
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath 'se.transmode.gradle:gradle-docker:1.2'
        classpath "io.spring.gradle:dependency-management-plugin:${springIOVersion}"
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
    }
}
apply plugin: 'docker'
apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'spring-boot'
apply plugin: 'io.spring.dependency-management'

jar {
    manifestContentCharset 'utf-8'
    metadataCharset 'utf-8'
    manifest {
        attributes "Main-Class": "org.heilum.service.udr.UdrApplication"
    }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }

}
//可运行jar
task buildRunJar(type:Copy, dependsOn: build) {
    from configurations.runtimeClasspath
    from 'src/main/resources'
    into 'build/libs' // 目标位置
}
//构建docker镜像
task buildDocker(type: Docker, dependsOn: buildRunJar) {
    push = "false" //true 为发布到docker私服. false:不发布到私服.但可以在本地 docker images 中看到.
    tag = imagesTag
    applicationName = jar.baseName
    dockerfile = file('src/main/docker/Dockerfile')
    doFirst {
        copy {
            from 'build/libs'
            into stageDir
        }
    }
}


dependencies {
    compile project(':api:common')
    compile project(':service:starter')
    compile 'io.swagger:swagger-annotations:1.5.20'
    implementation "commons-codec:commons-codec:1.14"
    //mybatis
    compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2'
    compile 'org.mybatis:mybatis:3.4.1'
    compile 'org.apache.commons:commons-lang3:3.4'
    compile 'mysql:mysql-connector-java:6.0.6'
    compile 'org.json:json:20160810'
    compile 'com.github.joschi.jackson:jackson-datatype-threetenbp:2.6.4'
    compile 'com.alibaba:fastjson:1.2.47'
    compile 'junit:junit:4.11'
    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-undertow', version: springboot_version)
}

docker 配置 私服的地址:ip:port 为私服的地址和端口

vi /etc/docker/daemon.json
{ "insecure-registries":["ip:port"] }

启动脚本:

#!/bin/bash

ulimit -c unlimited  #cpu core 无限制
ulimit -n 32768  #打开文件的限制

#当前docker镜像文件目录
basePath=$(cd "$(dirname "$0")"; pwd)
echo $basePath

#查看镜像中的所有文件
ls ./home/project

#获取要执行的jar包
projectjar=$(ls /home/project | grep 'udr.*jar$')
echo  "jar的包名为: "$projectjar
chmod 777 "/home/project/$projectjar"

#开始执行命令
exec $JAVA_HOME/bin/java -jar "/home/project/$projectjar"

执行:

gradle buildDocker -x test --stacktrace
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值