Docker 改变了什么?
1.简化配置
2.流水线管理
3.应用隔离
4.提高开发效率
5.快速部署
6.面向产品:产品交付
7.面向开发:简化环境配置
8.面向测试:多版本测试
9.面向运维:环境一致性
10.面向架构:自动化扩容(微服务)
1.安装、启动
yum -y install docker systemctl start docker
2.第三方仓库加速配置
vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd‐current ‐‐registry-mirror=https://a14c78qe.mirror.aliyuncs.com \ #更换存储目录 ‐‐graph=/data/docker \ #dns服务默认docker是采用宿主机的dns #可以采用如下设定 ‐‐dns=192.16x.xx.xx \ #重载配置并重启 systemctl daemon‐reload systemctl docker restart docker daemon ‐‐help 这里可以查看到所有支持的参数
3.简单操作
ctrl+PQ 保存容器退出 #帮助 docker --hlep docker deamon --help #查看镜像 docker images #查看镜像环境 docker image inspect xxx #搜索镜像 docker search centos #下载镜像 docker pull docker.io/centos #导出镜像 docker save centeos >/tmp/centos.tar.gz #导入镜像 docker load --input centos.tar docker load centos.tar #删除镜像 docker rmi 镜像ID(IMAGE ID) #删除容器 docker rm mydocker docker rm -f mydocker(删除正在运行的容器) docker run --rm centos /bin/echo "hehe" 运行后删除容器 #启动容器 docker run centos /bin/echo 'Hello world' docker start mydocker #显示镜像状态 docker ps -a #更改名称 docker run --name mydocker -t -i centos /bin/bash #后台运行容器 docker run -d -P nginx #查看容器访问日志 docker logs e6b599b46241 docker logs mydocker #查看容器映射的端口 docker port mydocker #数据卷 docker run -d --name test1 -v /data nginx docker inspect -f {{.Mounts}} mynginx ##查找上面方法,默认挂载的位置 -v src:dst #源:目的 -v src:dst:ro #加ro 为只读 #挂载单文件 -v srcfile:dstfile #源文件:目的文件 --volumes-from docker run -d --name test2 --volumes-from test1 cenos /bin/bash #数据卷容器。让此数据卷在多个容器之间共享,test1为已经挂载数据卷的容器名。 #结束正在运行的所有容器 docker kill $(docker ps -a -q) #删除所有容器 docker rm $(docker ps -a -q)
4.进入容器
方法1
docker attach mydocker
方法2(执行命令返回结果)
docker exec -it mydocker /bin/bash docker exec mydocker whoami
方法3
[root@cen7zc ~]# docker inspect --help [root@cen7zc ~]# docker inspect -f "{{ .State.Pid}}" mydocker 3729 [root@cen7zc ~]# yum install -y util-linux [root@cen7zc ~]# nsenter --help [root@cen7zc ~]# nsenter -t 3729 -m -u -i -n -p [root@cen7zc ~]# nsenter --target 3729 --mount --uts --ipc --net --pid
脚本
#!/bin/bash docker_in(){ NAME_ID=$1 PID=$(docker inspect -f "{{ .State.Pid}}" $NAME_ID) nsenter -t $PID -m -u -i -n -p } docker_in $1
5.网络访问
随机映射
docker run -P
指定映射
-p hostPort:containerPort -p ip:hostPort:containerPort -p hostPort:containerPort:udp -p 81:80 -p 443:443 docker run -d -p 192.168.1.253:81:80 nginx
6、容器间互联
方法1
docker --name web2 --link web1 -d -p 8080:80 mynginx nginx docker exec -it web2 sh cat /etc/hosts #查看 docker inspect web1 # 查看容器信息
方法2
docker -d --name web2 --link web1:shop_web -p 8080:80 mynginx nginx cat /etc/hosts #查看 有变化,shop_web为别名
7.手动构建容器
[root@cen7zc ~]# docker run --name mynginx -it centos rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm yum install -y nginx vi /etc/nginx/nginx.conf daemon off; exit [root@cen7zc ~]# docker ps -a 148aca4d9f2e
保存镜像
[root@cen7zc ~]# docker commit -m "My-Nginx" 148aca4d9f2e qinzc/mynginx:v1 [root@cen7zc ~]# docker images REPOSITORY TAG IMAGE IDCREATED SIZE qinzc/mynginxv1 aa99e9d583273 minutes ago 408 MB docker.io/nginx latest bc26f1ed35cf23 hours ago109 MB docker.io/centoslatest 5182e96772bf7 weeks ago 200 MB
启动构建好的容器
docker run --name test1 -d -p 80:80 qinzc/mynginx:v1 nginx #yum 安装的nginx,log在 /var/log/nginx/acclog.log
8.自动构建容器
[root@cen7zc nginx]# pwd /opt/dockerfile/nginx [root@cen7zc nginx]# vim Dockerfile
Dockerfile文件如下:
#This Dockerfile #Base image FROM centos #Maintainer MAINTAINER Zicheng.Qin 542129333@qq.com #Commands RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm RUN yum -y install nginx && yum clean all RUN echo "daemon off;" >> /etc/nginx/nginx.conf ADD index.html /user/share/nginx/html/index.html EXPOSE 80 CMD ["nginx"]
开始构建
[root@cen7zc nginx]# echo "nginx in docker,hahah" > index.html [root@cen7zc nginx]# docker build -t qinzc/test:v2 .
启动
docker run --rm --name mynginxtest -d -p 80:80 test:v2
基于Centos的SSH例子
# Docker for CentOS #Base image FROM centos #Who MAINTAINER zicheng.Qin xxx@gmail.com #EPEL ADD epel.repo /etc/yum.repos.d/ #Base pkg RUN yum install -y openssh-clients openssl-devel openssh-server wget mysql-devel supervisor git redis tree net-tools sudo psmisc && yum clean all # For SSHD RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key RUN echo "root:oldboy" | chpasswd
9.简单操作实战
1.运行centos容器:docker run
2.启动名为:mydocker
3.分配一个伪终端:-t
4.标准输入输出:-i
5.执行的命令:/bin/bash
6.退出容器:exti
docker run --name mydocker -t -i centos /bin/bash
查看容器运行状态
docker ps -a
再次进入容器
docker start mydocker
后台运行容器,显示容器ID
docker run -d nginx
跨主机网络实现,业界流行常用方法,overlay驱动
http://vmware.github.io/harbor/index_cn.html
停留在世界边缘,与之惜别