Docker第一课
——————————————————————运维实习生
一、Docker介绍
Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
二、Docker 与 vmvare 比较
三、入门
1.安装
yum install docker -y(最简单的方式)
2.基本docker命令
版本 docker version
搜索 docker search 关键字
启动syatmctul start docker
开机自启 systemctul enable docker
3.下载镜像的方法
(1)docker pull 镜像名
(2)docker load -i 本地下载好的镜像路径
3.1 修改docker源
有的网络无法连接到docker官方站点或网速慢,可以改用阿里、网易等的docker源
vim /etc/docker/daemon.json
{
#推荐阿里镜像
"registry-mirrors": [
"https://khec465u.mirror.aliyuncs.com"
]
}
4.查看已下载镜像
docker images
5 .
运行镜像
docker run -it 镜像名字:TAG 命令
停止、开启、重启镜像
docker stop/start/restart 镜像id
比如:
docker run -d 镜像 bash -c "while true;do echo hello word;sleep 1;done"
6.退出镜像
exit
7 .从容器中读取log
语法:docker logs 容器id或者名字
(docker ps 查看id_查看所有运行中的容器)
8.查看所有运行中的容器:
docker ps -a
9.杀镜像
docker kill 镜像id
10.无法打开镜像
(1)手动开启网络转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p 生效
11.删除镜像
docker rm id
二、做自己的镜像images
1.docker镜像制作
方法1. 根据当前镜像的状态做一个image:创建一个安装apache的centos镜像
使用 docker commit
docker run -it centos /bin/bash
yum install httpd -y
exit
docker commit 镜像id 自定义名字
docker images
方法2.
通过 docker build 创建一个基于centos 的httpd web 镜像
使用时需要使用dockerfile 文件自动制作image
docker有点像源码编译时 ./confidure 产生的Makefile
1.创建工作目录
mkdir /docker_build
cd /docker_build
touch Dockerfile #make自动编译时需要Makefile 文件,自动创建images时需要Dockerfile文件
2.编辑Dockerfile 文件
Dockerflie 用来创建一个自定义的image,包含了用户指定的软件依赖
vim Dockerfile
FROM 镜像名称
MAINTAINER 作者
RUN yum install httpd -y
ADD start.sh /usr/local/bin/start.sh
ADD index.html /var/www/html/index.html
将文件 拷贝到 容器目录文件
3.创建 start.sh 脚本启动httpd 和apache默认首页index.html文件
cd /docker_build
echo "/usr/sbin/httpd -DFOREGROUND" >start.sh
相当于执行syatemctul start httpd
chmod a+x start.sh 加权限
创建首页index.html
echo "docker image build test" > index.html
4.build 创建image
语法:docker build -t 父镜像名:tag Dockerfile ./文件所在路径
5.查看 docker images
三.发布image
方法1.
导出到本地 docker save -o 名字.tar 镜像名
从本地导入 docker load -i 路径
方法2.
发布到外网dockerhub(注意daemon.json)
1.docker注册账号
2.登录docker docker login -u 用户名 -p 密码 -e邮箱
3.上传docker push centos:httpd
4.下载docker pull 用户名/镜像名
方法3.阿里云私有仓库
四.docker 端口你映射
#把容器80映射到物理机
docker run -d -p 物理机80:容器80 镜像名
查看端口 netstat -nltp |grep 80
现在相当于vm中的net模式
五.访问正在运行的容器
看运行的容器
docker ps
docker exec -it 容器ID /bin/bash
创建index.html 测试
echo "lin" >index.html
浏览器访问无痕模式
ip/index.html