docker02

docker02


制作一个自己的image镜像


启动docker服务

systemctl restart docker.service

获得容器id

docker container ls -a -q

如果你要删除的 container 还是运行状态,那么就要先把容器停止了:

docker container stop <container ID>

找到需要删除的容器对应的 container ID 或者名字,进行删除:

docker container rm <container ID>

批量停止容器:

docker container stop $(docker container ls -a -q)

批量删除容器

docker container rm $(docker container ls -a -q)

即删除时指定名称,而不是IMAGE ID

docker rmi Repository:tag

停止所有容器

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop

删除所有容器

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm

删除所有none容器

docker images|grep none|awk '{print $3 }'|xargs docker rmi

dockerfile语法:

FROM

指定基础镜像,比如

FROM ubuntu:14.04

RUN

在镜像内部执行一些命令,比如安装软件,配置环境等,换行可以使用""

RUN groupadd -r mysql && useradd -r -g mysql mysql

ENV

设置变量的值,ENV MYSQL_MAJOR 5.7,可以通过docker run --e key=value修改,后面可以直接使 用${MYSQL_MAJOR}

ENV MYSQL_MAJOR 5.7

LABEL

设置镜像标签

LABEL email="itcrazy2016@163.com" LABEL name="itcrazy2016"

VOLUME

指定数据的挂在目录

VOLUME /var/lib/mysql

COPY

将主机的文件复制到镜像内,如果目录不存在,会自动创建所需要的目录,注意只是复制,不会提取和解压

COPY docker-entrypoint.sh /usr/local/bin/

ADD

将主机的文件复制到镜像内,和COPY类似,只是ADD会对压缩文件提取和解压

ADD application.yml /etc/itcrazy2016/

WORKDIR

指定镜像的工作目录,之后的命令都是基于此目录工作,若不存在则创建

WORKDIR /usr/local WORKDIR tomcat RUN touch test.txt

会在/usr/local/tomcat下创建test.txt文件

WORKDIR /root ADD app.yml test/

会在/root/test下多出一个app.yml文件

CMD

容器启动的时候默认会执行的命令,若有多个CMD命令,则最后一个生效

CMD ["mysqld"] 或 CMD mysqld

和CMD的不同

docker run执行时,会覆盖CMD的命令,而ENTRYPOINT不会

EXPOSE

指定镜像要暴露的端口,启动镜像时,可以使用-p将该端口映射给宿主机

EXPOSE 3306

新建一个简单的spring boot项目 打印hello World

(1)创建一个Spring Boot项目

(2)写一个controller
  @RestController
  public class DockerController {
    @GetMapping("/dockerfile")
    @ResponseBody
    String dockerfile() {
      return "hello docker" ;
   }
 }

(3)mvn clean package打成一个jar包

在target下找到"dockerfile-demo-0.0.1-SNAPSHOT.jar"
 
(4)在docker环境中新建一个目录"first-dockerfile"
 
(5)上传"dockerfile-demo-0.0.1-SNAPSHOT.jar"到该目录下,并且在此目录创建Dockerfile

 6.Dockerfile编写,将项目生成镜像

FROM openjdk:8
MAINTAINER xqitcrazy2019
LABEL name="dockerfile-demo" version="1.0" author="xqcrazy2016"
COPY dockerfile-demo-0.0.1-SNAPSHOT.jar dockerfile-image.jar
CMD ["java","-jar","dockerfile-image.jar"]

 

7.基于Dockerfile构建镜像
docker build -t test-docker-image .

(8)基于image创建container
docker run -d --name user01 -p 6666:8080 test-docker-image

(9)查看启动日志docker logs user01

(10)宿主机上访问curl localhost:6666/dockerfile

hello docker

上传到阿里云镜像仓库

 

1. 登录阿里云Docker Registry

$ sudo docker login --username=18682132547 registry.cn-zhangjiakou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

2. 从Registry中拉取镜像

$ sudo docker pull registry.cn-zhangjiakou.aliyuncs.com/xqitcodecrazy/xq_it_crazy_test20191108:[镜像版本号]

3. 将镜像推送到Registry

$ sudo docker login --username=18682132547 registry.cn-zhangjiakou.aliyuncs.com$ sudo docker tag [ImageId] registry.cn-zhangjiakou.aliyuncs.com/xqitcodecrazy/xq_it_crazy_test20191108:[镜像版本号]$ sudo docker push registry.cn-zhangjiakou.aliyuncs.com/xqitcodecrazy/xq_it_crazy_test20191108:[镜像版本号]

请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

别人下载
sudo docker pull registry.cn-zhangjiakou.aliyuncs.com/xqitcodecrazy/xq_it_crazy_test20191108:xx ps:xx是版本

并且运行
docker run -d --name user01 -p 6661:8080 registry.cn-
hangzhou.aliyuncs.com/itcrazy2016/test-docker-image:v1.0 

Image常见操作

(1)查看本地image列表

docker images

docker image ls

(2)获取远端镜像

docker pull
 
(3)删除镜像[注意此镜像如果正在使用,或者有关联的镜像,则需要先处理完]

docker image rm imageid

docker rmi -f imageid

docker rmi -f $(docker image ls)   删除所有镜像

(4)运行镜像

docker run image

(5)发布镜像

docker push

container常见操作

(1)根据镜像创建容器
docker run -d --name -p 9090:8080 my-tomcat tomcat

(2)查看运行中的container
docker ps

(3)查看所有的container[包含退出的]
docker ps -a

(4)删除container
docker rm containerid
docker rm -f $(docker ps -a)  删除所有container

(5)进入到一个container中
docker exec -it container bash

(6)根据container生成image
docker

(7)查看某个container的日志
docker logs container

(8)查看容器资源使用情况
docker stats

(9)查看容器详情信息
docker inspect container

(10)停止/启动容器
docker stop/start container

container资源限制

内存限制

--memory  Memory limit
如果不设置 --memory-swap,其大小和memory一样
docker run -d --memory 100M --name tomcat1 tomcat

CPU限制

--cpu-shares  权重
docker run -d --cpu-shares 10 --name tomcat2 tomcat

图形化资源监控

sudo curl -L git.io/scope -o /usr/local/bin/scope

sudo chmod a+x /usr/local/bin/scope

scope launch 39.100.39.63

# 停止scope
scope stop

# 同时监控两台机器,在两台机器中分别执行如下命令
scope launch ip1 ip2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值