官网文档
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
3708

被折叠的 条评论
为什么被折叠?



