Linux运维之路


docker02_docker基础使用,dokcer基础命令

admin 2019-10-26 85浏览 0条评论
首页/正文
分享到: / / / /

[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 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

评论列表

还没有人评论哦~赶快抢占沙发吧~