docker离线安装教程 www.cnblogs.com/eastonliu/p…
坑1:下载container-selinux的时候, 网址点进去找CentOS Extras x86_64下的container-selinux-2.107-3.el7.noarch.rpm, 点击链接,拉到最后,找到Download, 然后下载Binary Package 这还没完,还得设置
新建daemon.json
sudo vi /etc/docker/daemon.json
放弃证书,输入以下内容
{ "registry-mirrors" : ["https://xxxxxx"], "insecure-registries" : ["0.0.0.0/0"] }
重启daemon
sudo systemctl daemon-reload
重启docker
sudo systemctl restart docker
离线安装另一个教程:www.cnblogs.com/testway/p/1…
docker基本命令
-
docker images 查找镜像
-
docker rmi 镜像id
-
docker run -d --name=自己起一个名字 -p 8090:8090 imageid
其中imageid可以由上边的docker images查看
端口号不能随便写,得与代码中得对应
-
docker run -d --name=自己起一个名字 -p 宿主机端口8090:虚拟机端口8090 库名:tag
-
docker ps 找到容器id
-
docker logs -f 容器id (可以从上边的docker ps找到)
-
docker stop 容器id
-
docker rm 容器id
-
docker commit elk zl/elk:1.0 把容器保存成镜像docker commit 保存后的镜像名 现有的容器repository:tags
-
docker save -o /usr/local/zl/images/ zl/elk:1.0 镜像保存到本地Linux电脑
docker命令区分
- docker stop 和docker kill stop是让容器在退出钱做一些保护性、准备性的工作,然后让他自动停止,kill是不管容器同不同意,我直接强行终止
- docker run attach exec run下边有说明,attach只能进入运行中的容器,如果在终端中退出容器,会导致容器的停止;exec进入运行中的容器
docker+jenkins自动部署+k8s
第二次整理
- docker和虚拟机区别:
顺序是:先在宿主机上安装虚拟机,然后在虚拟机上安装多个系统(centos、windows),
然后在系统上安装环境,然后在环境下运行程序(Java程序运行在jdk环境下)
docker顺序是:在宿主机上安装docker引擎,在docker上安装环境,然后在该环境下运行程序,
也就是说多个容器共享主机的内核每个容器都是一个隔离的应用平台。
- 容器和镜像和reposity:容器是镜像的实例,类似于类与对象,reposity hub远程仓库,用于拉镜像的
- 基本命令
docker pull ubuntu:18.04 拉镜像,冒号后边是版本
docker images 查看镜像
docker create --name ubuntuContainer ubuntu:18.04 以ubuntu:18.04镜像创建一个名字是ubuntuContainer的容器,没有启动
docker start ubuntuContainer 运行上边创建的容器
docker ps 查看运行中的容器
docker exec -it 9w2e98r 进入该容器,也就是上边ubuntu系统启动了,我进入这个系统(容器),it是docker的命令执行完就结束了,需要加上-it 用标准输入和伪终端的线程挂起,才能保证container起来后不退出,9w2e98r是容器id ,想退出使用exit命令
docker run -it --name runUbuntuContainer ubuntu:18.04 /bin/bash 综合上边create、start、exec三个命令,/bin/bash好像是打开bash的意思,类似于wins中的cmd
进入容器安装node环境,类似于在centos中安装
docker commit --author "rccoder" --message "curl+node" 9298 rccoder/myworkspace:v1 把该容器(包含ubuntu和node环境)制作成自己的镜像,其中9298是容器id, rccoder/myworkspace:v1是镜像的repository
push镜像到docker hub,docker login登录,docker push rccoder/myworkspace:v1
- 使用dockerfile
例子:通过dockerfile,创建一个镜像并在里边创建一个a目录,例如之前通过mds-first-project.jar+openjdk构建一个镜像
dockerfile文件内容如下:
FROM rccoder/myworkspace:v1 注意:如果不指定仓库,会从本地找,找不到就去远程找,再找不到就报错
RUN mkdir a
从rccoder/myworkspace:v1镜像中,创建一个a目录?有点奇怪
执行dockerfile: docker build -t newfiledocker:v1 .
其中最后的 点 是在当前目录,-t指定镜像的名称和版本号
docker docker run -it newfiledocker:v1 /bin/bash 创建并运行容器
例如:ADD jdk-8u91-linux-x64.tar.tar.gz /opt 前提条件是该jdk-8u91-linux-x64.tar.tar.gz文件放在dockerfile文件相同目录
docker上,centos镜像+jdk8这个好理解,为什么应用程序jar+jdk镜像也能运行呢?没有操作系统?
因为docker和主机操作系统公用内核,所以,有操作系统,为什么上边的centos镜像+jdk8不能直接使用jdk8不需要centos镜像?这样的话jdk8部署到哪里?总不能部署到主机上吧。
应用程序jar打包成docker镜像并启动部署
- jar打包成镜像 blog.csdn.net/weixin_4245…
1. 创建一个目录,把应用程序的jar放在里边,并且touch一个Dockerfile
2.
FROM java:latest
ADD AeurekaServer-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
改一下FROM java:latest 版本
改一下AeurekaServer-0.0.1-SNAPSHOT.jar 名字
3. 运行 改一下docker build -t="aeurekaserver" .
- 启动docker 镜像 验证 docker run -d --name=自己起一个名字 -p 宿主机端口8090:虚拟机端口8090 库名:tag
- 重命名镜像 docker tag 需要重命名的镜像名:TAG版本 要推送的ip:端口号/路径:v版本(自己起,不要和自己的重名就行)
- 首先登录
docker login ip:端口号/路径
然后输入用户名密码 5. 推docker镜像到正式库
docker push 上边重命名的镜像:版本号
OK