docker基础1

官网文档

https://docs.docker.com/engine/reference/commandline/create/
docker 四种网卡模式
https://segmentfault.com/a/1190000040781404
优点:
1:简介高效
2:共享物理机资源, 包括内存,硬件
缺点:
1:隔离性没有虚拟机强
2:共享linux内核,安全性有先天缺陷(内核出问题,docker会出错)
3:selinux难以驾驭
4:监控容器和容器拍错是挑战
安装前准备:
需要64位操作系统
至少RHEL7以上的版本
关闭防火墙(不是必须)
yum -y install docker
systemctl start/enable docker

docker 采用cow技术,分层设计,分层封装,后端盘只读,用户在前端盘操作
后端镜像,前端容器
查看仓库镜像:docker images
搜索镜像:docker search busybox ----->OFFICIAL [OK]官方版
下载镜像:docker push docker.io/busybox
上传镜像:docker pull docker.io/busybox
查看命令:docker help search/pull/push
        man docker
ls -i  文件/文档  ------>查看ID 
###################################################
1: 导出镜像:tar格式
docker save docker.io/name(镜像名称):latest -o(output) 起名称
例如:
docker save docker.io/busybox:latest -o busybox.tar
2:在另一台虚拟机查看导入镜像
docker load -i(input) busybox.tar
docker images 查看imagesID是否一致
3:

docker 镜像常用命令

查看版本:docker version
查看镜像:docker images
搜索镜像:docker search 关键字
下载镜像:docker pull 镜像的名字
上传镜像:docker push 镜像的名字
导出镜像:docker save 镜像名称:标签 > 镜像名称.tar
	例如:docker save busybox:latest > busybox.tar
导入镜像:docker load < 镜像名称.tar 
	例如:docker load < busybox.tar 
启动容器:docker run -it 镜像名称:标签 镜像里的命令
	例如:docker run -it centos:latest /bin/bash
查看正在运行的容器:
		  docker ps -a [查看所有容器]
		  docker ps -all [查看当前正在运行的容器]
查看镜像制作历史:
		  docker history 名称:标签	 
		  docker history centos:latest
查看镜像底层信息:
		  docker inspect 名称:标签		//时间,ID,Path(命令所在的路径),cmd(启动方式)。。
		  docker inspect nginx:latest
删除镜像:docker rmi 镜像名称:标签
	例如:docker rmi centos:latest
创建镜像别名:docker tag 源镜像名称:标签 新名称:标签
	例如:docker tag centos:latest abc:ooxxd
	#将多个别名执行一个镜像ID
	abc                  ooxx                76d6bc25b8a5        2 years ago         200 MB
	docker.io/centos     latest              76d6bc25b8a5        2 years ago         200 MB	
	
># 查看docker使用物理资源率
[root@new26 ~]# docker stats --no-stream
CONTAINER           CPU %               MEM USAGE / LIMIT       MEM %               NET I/O             BLOCK I/O           PIDS
4d5ae90058e7        118.72%             73.77 MiB / 30.28 GiB   0.24%               0 B / 516 B         0 B / 0 B           34
81bdfb7c2483        0.00%               72.74 MiB / 30.28 GiB   0.23%               516 B / 656 B       103 MB / 0 B        34

常见错误

1:容器与宿主机Ping不通
	问题:未开启路由转发
	解决:sysctl -w net.ipv4.ip_forward=1(0:不开启)
		echo "net.ipv4.ip_forward = 1 " >> /etc/sysctl.conf

docker 容器常用命令

docker run
	-i 交互式
	-t 终端
	-d 后台进程 --detach
	--name 定义容器名称
	-h 定义容器内主机名
	-p 暴露端口 # -p 端口:容器内端口
	-v 磁盘映射 # -v 本地路径:容器内路径
    --restart=always    docker重启的时候容器也会重启
	docker -it/d --name 容器名称 镜像名称
docker run -d --name centos-http -h myos-http  -p 81:80 -v /var/webroot/:/var/wwwebroot/:/var/www/html/ centos:v3

docker ps 
	-a
	-q	只显示容器ID
docker rm 容器ID		#删除容器
docker inspect 容器id  	#查看容器信息IP、网关等等
docker create [options] image [command] [arg]   #创建一个容器但不启动
docker start/stop/restart 容器ID

docker stop $(docker ps -q)	#停止正在运行的容器
docker rm $(docker ps -qa)	#删除正在运行的容器

docker top 容器ID/ps aux	#查看容器内部进程

docker exec --it 容器ID /bin/bash	#进入容器
		ps 查看当前登录的进程
docker attach 容器ID		#连接pid为1的上帝进程。如果是交互,则进入终端,非交互则卡住
							退出时该容器自动关闭,
							ctrl+pq 退出,将进程放入后台,个别终端会有快捷键冲突

docker inspect -f "{{.NetworkSettings.IPAddress}}" fd3
							#-f 指定访问某个参数值,已 "." 分隔
docker diff 容器名称    #检查容器里文件结构的更改
                        # A  添加了一个文件或目录
                        # B  文件或目录被删除
                        # C  文件或目录已更改

docker logs 容器名      # 查看容器日志
docker logs -f --tail 20 容器id
docker logs -f -n 200 容器id
# 禁用IPV6
--sysctl net.ipv6.conf.all.disable_ipv6=1 

--net=host  类似于Vmware的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。
https://www.cnblogs.com/freeaihub/p/13197292.html

封装镜像

封装镜像:前提条件是启动一个容器
	docker commit 源容器id 新镜像名称:标签
	docker commit --author "作者姓名邮箱" --message "描述" 容器名称/id 新镜像名称:标签
	例如:docker commit --author "Mr.Z <Mr.Z10123@email.com>" --message "修改了默认网页" webserver nginx:v2
  docker images
  docker save

Dockerfile 封装镜像

01
vim Dockerfile
FROM centos:latest				#FROM定义镜像模板
RUN	 rm -rf /etc/yum.repos.d/*	#RUN在新镜像里执行命令
ADD	 local.repo /etc/yum.repo.d/local.repo	#复制文件到镜像
RUN	 yum -y install vim net-tools psmics

使用Dockerfile工作流程

mkdir build;cd build
vim Dockerfile
#运行
docker build -t imagename(自己命名镜像名称) .  # "." 代表是当前目录Dockerfile文件

Dockerfile语法格式

常用命令
FROM 	:基础镜像(默认是已经导入的镜像/如果没有则自动从官网下载)格式  镜像名称:标签
ADD	:复制文件到镜像
RUN	:制作镜像时执行的命令,可以写多个
CMD	:启动命令(/bin/bash、/usr/bin/python),格式:CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
WORKDIR	#开机时进入的路径  
ENV		#设置环境变量
EXPOSE	#监听的端口
ENTRYPOINT #运行容器时执行的命令 
           #例如:ENTRYPOINT ["/bin/bash","-c","/startup.sh"]
           #ENTRYPOINT /bin/bash -c '/startup.sh'
MAINTAINER	#作者信息
VOLUME	    #指定容器挂载点到宿主机自动生成的目录或者其他容器
            #例如:VOLUME ["/path/to/dir"]
            
https://www.cnblogs.com/hbxZJ/p/10250060.html

Dockerfile案例

vim Dockerfile

FROM myos:latest
RUN  yum -y install httpd
ADD httpd.conf  /etc/httpd/conf/httpd.conf
WORKDIR /var/www/html/
RUN echo "hello zhuyun" > index.html
EXPOSE 80
ENV EnvironmentFile=/etc/sysconfig/httpd
CMD ["/usr/sbin/httpd", "-DFOREGROUND"] #注意启动命令,正确
MAINTAINER ZMM
[root@546c79ee5b27 ~]#  find /* -iname httpd.service 2>/dev/null
/usr/lib/systemd/system/httpd.service
cat 
...
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND #启动命令,$OPTIONS为空值,可以去掉
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful #重载命令
...

CMD ["/usr/sbin/httpd", "$OPTIONS", "-DFOREGROUND"]  #$OPTIONS为空,服务会起不来

docker run -d ..
  • docker中启动apache
apachectl -k start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值