您的位置:首页 > 运维架构 > Docker

linux下的docker入门笔记一

2019-04-12 00:09 507 查看

简介

Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。不过,Docker 跟传统的虚拟化方式相比具有众多的优势。我也将Docker类比于Python虚拟环境,可以有效的配置各个版本的开发环境,比如深度学习与Java环境。

Docker中基本概念
镜像Image
可以理解为java里的对象但是还没有实例化

容器Container
可以理解为 java里的 new 相当于实例化镜像,容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

仓库Repository
软件包上传下载站,有各种软件的不同版本被上传供用户下载。镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

分层存储
在Docker设计时,将其设计为分层存储的架构。镜像并非是像一个ISO 那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

安装Docker
大部分都是安装在linux系统,所以我安装的模式非Windows
首先要是 CentOS7系统。
第一步:yum -y update 这是更新yum 必须这么做

第二步:yum install docker -y 安装docker

第三步:systemctl start docker.service
systemctl status docker.service 启动docker的服务生命

第四步:yum install iproute ftp bind-utils net-tools wget -y 安装工具

第五步:vi /etc/resolv.conf

# Generated by NetworkManager
search www.tendawifi.com
nameserver 119.29.29.29
nameserver 182.254.116.116

然后复制到那个文件下(ip照抄即可)

nslookup www.baidu.com 可以用这个命令测试 看看server是否改变为上面的ip

周期常用代码:
systemctl stop docker.service
systemctl start docker.service
systemctl restart docker.service
systemctl status docker.service

拉取
docker pull centos/mysql-57-centos7 拉取一个镜像到本地
docker pull tomcat:7-jre7 tomcat7 拉取
docker pull nginx 拉取 nginx
docker pull redis 拉取redis

运行
mysql的运行
docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 docker.io/centos/mysql-57-centos7

tomcat的运行
docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:

nginx的运行
docker run -di --name=mynginx -p 80:80 nginx

redis的运行
docker run -di --name=myredis -p 6379:6379 redis

运行 -di -d ,表示 detach,即在后台运行。 -i 表示提供交互接口,这样才可以通过 docker 和 跑起来的操作系统交互。
–name 指定成为容器后的名 -p就是指定ip 第一个是 os上的ip 第二个是容器里的ip ,最终会形成映射访问os上的3306就会访问到容器里的3306。 -e指定密码

查看
docker images 可以查看当前的镜像
docker ps -a 查看容器状况
docker search centos 查看官网的仓裤里有啥相关的centos镜像

删除
docker rmi docker.io/xxx 删除xxx容器

标记
docker tag docker.io/tomcat:8.0 docker.io/mytomcat:8.0 相当于别名

配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hvmf8r55.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

tail /etc/docker/daemon.json 测试用的命令看看是否改为上面的网址

Dockerfile
是一系列命令构成的脚本,这些命令基于一个基础镜像然后创建一个新的镜像 。方便开发环境的统一
例如拉取一个centos 然后基于该系统的镜像继续在这上面构建新的镜像

配置jdk1.8的镜像
先创建一个文件夹:
mkdir -p /usr/local/dockerjdk8

切换到该目录;
cd /usr/local/dockerjdk8

然后通过xftp5 传输jdk8的压缩包到上面的目录里

创建文件 必须是这个名字注意大小写
vi Dockerfile

FROM centos:7
MAINTAINER mr
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u201-linux-x64.tar.gz /usr/local/java/

ENV JAVA_HOME /usr/local/java/jdk1.8.0_201
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

from 基于centos7构建镜像,如果系统里没有拉取过这个镜像,就会自动下载一个
MAINTAINER 创建者信息 可有可无
WORKDIR 设置工作目录
RUN 当前目录
ADD 传入自己上传的jdk包名
ENV 环境变量

在里面输入这个
ADD jdk-8u201-linux-x64.tar.gz /usr/local/java/ 这个是指定解压后的文件夹名,根据自己下载的u201这里的数字更改一下

在当前文件夹创建jdk1.8镜像 ,注意后面有个点 表示在当前目录找 Dockerfile文件
docker build -t=‘jdk1.8’ .

仓裤
docker pull registry 拉取一个仓裤
docker run -d -ti --restart always --name docker-hub -p 5000:5000 -v /docker-hub/registry:/var/lib/registry registry
在本地的路径是 /docker-hub/registry 镜像的路径是:/var/lib/registry registry

cd /usr/lib/systemd/system 进入到该目录
ExecStart=/usr/bin/dockerd --registry-mirror=http://019a7061.m.daocloud.io --insecure-registry 192.168.160.128:5000
添加该内容进去 注意改ip

重启docker
systemctl restart docker

重启容器 编码为容器的编号 可以通过 docker ps -a查看
docker start 6fa889b42840

对容器的操作

  1. 运行 run
  2. 进入 exec 相当于进入容器的文件系统
  3. 生命周期管理, 暂停,恢复,停止,启动 pause, unpause, stop, start
  4. ps 查看所有的容器
  5. 检查某个具体的容器
  6. rm 删除容器
  7. commit,对容器做了修改后,把改动后的容器,再次转换为镜像
    暂停:pause
    恢复:unpause
    停止:stop
    开始:start

docker rm xxx 删除一个容器

docker login 登录(需要先去官网注册一个账号)
注册地址:
https://hub.docker.com/signup

docker push xxxx 把xxx上传到仓库

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: