美文网首页
docker 初体验

docker 初体验

作者: WEIJAVA | 来源:发表于2019-11-04 16:54 被阅读0次

安装docker

  • 1 卸载之前的docker
    sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 2 安装必要的依赖
    sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
sudo yum install -y docker-ce docker-ce-cli containerd.io
  • 5 启动docker
    sudo systemctl start docker

-6 测试docker安装是否成功

sudo docker run hello-world

常用命令

  • 查看本地image列表
docker images
docker image ls
  • 拉取镜像
docker pull tomcat
  • 删除镜像[注意此镜像如果正在使用,或者有关联的镜像,则需要先处理完]
docker image rm imageid
docker rmi -f imageid
#删除所有镜像
docker rmi -f $(docker image ls) 
  • 运行镜像
docker run -d --name my-tomcat -p 9004:8080 tomcat
  • 进入到容器里面
docker exec -it my-tomcat /bin/bash
  • 查看运行中的container
docker ps
  • 查看所有的container[包含退出的]
docker ps -a
  • 删除container
docker rm containerid

#删除所有container
docker rm -f $(docker ps -a) 
  • 发布镜像
docker push

Dockerfile实战Spring Boot项目

(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 itcrazy2016
LABEL name="dockerfile-demo" version="1.0" author="itcrazy2016"
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

#实时日志
docker logs user01 -f 

(10)宿主机上访问curl localhost:6666/dockerfile
hello docker
(11)还可以再次启动一个

docker run -d --name user02 -p 8081:8080 test-docker-image

镜像仓库

docker hub

(1)在docker机器上登录
docker login
(2)输入自己账号的用户名和密码

(3)docker push itcrazy2018/test-docker-image
[注意镜像名称要和docker id一致,不然push不成功]
(4)给image重命名,并删除掉原来的
docker tag test-docker-image itcrazy2018/test-docker-image
docker rmi -f test-docker-image
(5)再次推送,刷新hub.docker.com后台,发现成功
(6)别人下载,并且运行
docker pull itcrazy2018/test-docker-image
docker run -d --name user01 -p 6661:8080 itcrazy2018/test-docker-image

阿里云docker hub

阿里云docker仓库
https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
参考手册
https://cr.console.aliyun.com/repository/cn-hangzhou/dreamit/image-repo/details

(1)登录到阿里云docker仓库

sudo docker login --username=itcrazy2016@163.com registry.cnhangzhou.aliyuncs.com

(2)输入密码
(3)创建命名空间,比如itcrazy2016
(4)给image打tag

sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/itcrazy2016/testdocker-image:v1.0

(5)推送镜像到docker阿里云仓库

sudo docker push registry.cn-hangzhou.aliyuncs.com/itcrazy2016/test-dockerimage:v1.0

(6)别人下载,并且运行

docker pull registry.cn-hangzhou.aliyuncs.com/itcrazy2016/test-dockerimage:v1.0
docker run -d --name user01 -p 6661:8080 registry.cnhangzhou.aliyuncs.com/itcrazy2016/test-docker-image:v1.0

搭建自己的Docker Harbor

(1)访问github上的harbor项目
https://github.com/goharbor/harbor
(2)下载版本,比如1.7.1
https://github.com/goharbor/harbor/releases
(3)找一台安装了docker-compose[这个后面的课程会讲解],上传并解压
tar -zxvf xxx.tar.gz
(4)进入到harbor目录
修改harbor.cfg文件,主要是ip地址的修改成当前机器的ip地址
同时也可以看到Harbor的密码,默认是Harbor12345
(5)安装harbor,需要一些时间
sh install.sh
(6)浏览器访问,比如39.100.39.63,输入用户名和密码即可

container到image

既然container是基于image之上的,想想是否能够由一个container反推出image呢?
肯定是可以的,比如通过docker run运行起一个container出来,这时候对container对一些修改,然后再生成一个新的image,这时候image的由来就不仅仅只能通过Dockerfile

(1)拉取一个centos image
docker pull centos
(2)根据centos镜像创建出一个container
docker run -d -it --name my-centos centos
(3)进入my-centos容器中
docker exec -it my-centos bash
(4)输入vim命令
bash: vim: command not found
(5)我们要做的是
对该container进行修改,也就是安装一下vim命令,然后将其生成一个新的centos
(6)在centos的container中安装vim
yum install -y vim
(7)退出容器,将其生成一个新的centos,名称为"vim-centos-image"
docker commit my-centos vim-centos-image
(8)查看镜像列表,并且基于"vim-centos-image"创建新的容器
docker run -d -it --name my-vim-centos vim-centos-image
(9)进入到my-vim-centos容器中,检查vim命令是否存在
docker exec -it my-vim-centos bash
vim

结论:可以通过docker commit命令基于一个container重新生成一个image,但是一般得到image的
方式不建议这么做,不然image怎么来的就全然不知

container资源限制

如果不对container的资源做限制,它就会无限制地使用物理机的资源,这样显然是不合适的。
查看资源情况:docker stats

内存限制

--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

图形化资源监控

https://github.com/weaveworks/scope

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

——学自咕泡学院

相关文章

  • Docker笔记之总结

    Docker笔记之Docker初体验Docker笔记之容器Docker笔记之网络管理Docker笔记之数据卷Doc...

  • Docker学习笔记(一)Docker初体验

    Docker学习笔记(一)Docker初体验 什么是Docker Docker是一个虚拟环境容器,可以将开发环境、...

  • Docker初体验

    Docker初体验 ​ Docker 是一个开源的基于 LXC 的高级应用容器引擎,让开发者可以打包他们的应用...

  • linux运维之Docker基础(二)

    1.docker初体验: (1)安装Nginx步骤: 官网下载Nginx源码包 进行:wget tar ...

  • Docker 初体验

    前言 刚刚接触docker的同学看到会很模糊都不知道docker是什么东西,有什么用,可以用来做什么那么接下来的文...

  • Docker 初体验

    前言 从N年前使用Vmware Workstation安装虚拟机开始,发现虚拟机一个很大的缺点是,占用资源太多,占...

  • docker 初体验

    安装epel 源 安装docker centos7 以下系统 centos7 以上的系统 *.*.*.* 是私有仓...

  • Docker初体验

    其实docker的大名我一直有所耳闻,只是一直觉得这个运维级别的东西离我太远,而前端有了NPM和Bower之后,基...

  • Docker初体验

    概念和理解 Docker是一个容器引擎。doker官方网站一个容器实际上是运行在宿主机上的一个进程。只不过在启动这...

  • docker 初体验

    安装docker 1 卸载之前的docker 2 安装必要的依赖 3 设置docker仓库 [设置阿里云镜像仓库...

网友评论

      本文标题:docker 初体验

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