[TOC]
docker
Linux容器是与系统其他部分隔离开的一系列进程,从另一个系统镜像运行,并由该镜像提供支持进程 所需的全部文件(环境文件)
容器镜像包含了应用的所有依赖项,因而在开发到测试,再到生产的郑国过程中,都具有可移植性和一致性
Linux容器就是一个隔离的空间中,运行的进程,这个格力的空间有自己的文件系统,有自己的网络,主机名等
容器是否就是虚拟化? 虚拟化可以让许多操作系统可以同时在单个系统上运行. 容器只能共享操作系统的内核,将进程与系统部分隔离开. 容器隔离是Linux内核 namespace(隔离) 和cgroup(硬件资源限制)
docker容器和虚拟化的区别
容器,没有开机启动流程,秒级启动 虚拟化有开机启动流程.分级启动.
与宿主机使用同一个内核,性能损耗小 不需要指令集模拟 容器可以在cpu核心的本地运行指令,不需要专门的解释机制; 避免虚拟化和系统调用替换中的复杂性. 轻量级隔离
docker的好处:
docker解决了软件和操作系统环境之间的依赖,能够让独立服务或应用程序在不同的环境中,得到相同的运行效果
docker的目标:
一处构建,处处运行
docker安装
镜像获取:
cd /etc/yum.repos.d/
wget -O /etc/yum.repos.d/ali_docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
安装:
yum install -y docker-ce
启动:
systemctl daemon-reload
systemctl start docker.service
systemctl enable docker.service
systemctl status docker
运行一个容器
docker命令 运行 指定名字 名称 后台运行 端口映射 容器端口 映射端口 镜像名称
docker run --name nginx_leilei -d -p 80 : 80 nginx
立即就看到效果:
这就是docker 高效,便捷
docker镜像加速
##配置docker镜像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
第三方docker镜像仓库,使用方法:
docker pull index.tenxcloud.com/tenxcloud/httpd:latest
docker基础命令
查看镜像
docker images 例子: docker images nginx:1.12 #不指定版本号,显示所有nginx
删除镜像
docker rmi 例子:docker image rm centos:latest
导出镜像
docker save 例子:docker image save centos > docker-centos7.4.tar.gz
导入镜像
docker load 例子:docker image load -i docker-centos7.4.tar.gz
查看容器网络消耗:
docker stats nginx_leilei
docker run --name leileiya -d -p 81:82 nginx
--name 容器别名
-d 后台运行
-p 81:82 将内网82端口映射为 外网81 端口
docker run -d -p 80:80 nginx
run (创建并运行一个容器)
-d 放在后台
-p 端口映射 如: -p 80:8080 将80映射为8080
-v 源地址(宿主机):目标地址(容器)
nginx docker镜像的名字
-it 分配交互式的终端
/bin/sh 覆盖容器的初始命令
--name 指定容器的名字
启动容器:
docker run image_name
docker run -it image_name CMD
如:
docker run -it centos:6.9 /bin/bash
已经存在的容器启动与停止:
docker start nginx_leilei #启动nginx_leilei这个镜像
docker stop nginx_leilei #停止nginx_leilei这个镜像
启动停止的名字 可以是 CONTAINER ID 和 NAMES
docker命令:
docker镜像管理命令
搜索镜像:
docker search
注意: 搜索到的镜像 OFFICIAL 这行OK的都是官方镜像
获取官方镜像:
docker pull nginx:1.12
#获取镜像,如果:后面不指定版本号,它就会拉取最新版本
#获取第三方镜像:
##第三方docker镜像仓库,使用方法:
docker pull index.tenxcloud.com/tenxcloud/httpd:latest
停止容器:
docker stop CONTAINER_ID
杀死容器
docker kill container_name
查看镜像
docker images
查看容器列表
docker ps
docker ps –a
只显示容器ID
docker ps -aq
注意:
docker ps –a 中看到的 status中一栏 如果显示的 Exited(0) 就是正常退出, 非0就是人为干预退出.
推荐进入容器方法,忘掉attach:
docker exec -it 容器id或容器名字 /bin/bash
exec : 会分配一个终端
exec -it : 指定一个容器的 id或名字 /bin/bash
进入正在运行中的容器:
docker attach 容器id或容器名字,它会进入一个新的tty终端[不建议]
docker exec 容器id或容器的名字,它会进入同一个tty终端(建议用这个方法进入容器)
如:
docker exec -it nginx_leilei /bin/bash
删除容器:
docker rm "容器名或ID"
批量删除容器:
docker rm -f `docker ps -a -q`
查看容器日志:
docker logs
例子:
[root@node1_docker yum.repos.d]# docker logs nginx_leilei
117.186.242.158 - - [23/Oct/2019:11:38:02 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" "-"
导出镜像:
docker save nginx:latest >/root/nginx.tar.gz
导入镜像:
docker image load -i /root/nginx.tar.gz
运行一个容器: docker run --name nginx_leilei -d -p 80:81 nginx
docker run --name nginx_t -d -p 80:81 nginx
--name nginx_leilei # 指定容器名字
-d #后台运行
-p 80:81 # 端口映射,内网81映射到外部80 #但是这里需要修改docker容器里的nginx服务端口位81
nginx # 容器名字
注意: 容器的第一个进程,必须处于前台运行状态,否则容器就会退出
实战修改nginx映射端口
实战修改nginx映射端口:
启动一个容器设定内部端口90 外部端口100:
docker run --name nginx90 -d -p 90:100 nginx
此时,外部只能通过90端口访问nginx服务,并且容器内的nginx端口需要改为 100
进入容器:
docker exec -it nginx90 /bin/bash
查看nginx现有配置:
root@74be70931ade:/# egrep -v "#|^$" /etc/nginx/conf.d/default.conf
server {
listen 80; ------------ 这个端口我们需要改为100,映射为90,访问的时候用90端口访问
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
由于容器里不可以用vi vim 我们用sed替换
sed -i "s#listen 80#listen 100#g" /etc/nginx/conf.d/default.conf
替换完成后,重启容器,通过http访问 90端口
[root@node1_docker ~]# docker restart nginx90
测试访问:
[root@node1_docker ~]# curl -I 127.0.0.1:90
HTTP/1.1 200 OK --------------# 成功访问
Server: nginx/1.17.5
Date: Sat, 26 Oct 2019 04:38:49 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 22 Oct 2019 14:30:00 GMT
Connection: keep-alive
ETag: "5daf1268-264"
Accept-Ranges: bytes
docker 映射端口

最后修改:2019-10-26 20:05:59
© 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

发表评论