(旧版本)docker 安装及docker平台基本使用命令

单机工作流程:

服务器 A 上运行 docker Engine  服务,在 docker Engine 上启动很多容器 container  , 

从外网 Docker Hub 上把 image 操作系统镜像下载来,放到 container 容器运行。这样一个容器的实例就运行起来了。 

最后,通过 Docker client  对 docker  容器虚拟化平台进行控制。 

https://hub.docker.com/   

1、docker安装

方法一、使用离线安装(RPM包安装)

tar zxvf docker-rpm.tar.gz 

vim    /etc/yum.repos.d/docker-rpm.repo   

[docker-rpm] 

name=docker-rpm 

baseurl=file:///root/docker-rpm 

enable=1 

gpgcheck=0

 mv CentOS-* /opt/      #移出 centos 自带的 yum 源

 yum -y install docker

方法二、在线安装(旧版本安装)

 yum -y install docker

 #启动  docker  服务

systemctl start docker      

#设置开机启动 docker 服务  

systemctl enable docker    

 #显示  Docker  版本信息 

 docker version 

 docker info 

 2、下载docker镜像

 搜索  images:    #默认从  Docker Hub  中搜索符合条件的镜像。

 docker search centos   

 #默认从  Docker Hub  中搜索符合条件的镜像。

方法 一:从公网 docker hub  拉取(下载)image  

 docker pull docker.io/centos

扩展:更换默认镜像地址

 vim    /etc/docker/daemon.json

 改:  {} 

为: 

 "registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"] 

systemctl daemon-reload 

systemctl restart docker 

方法二、导入本地的镜像归档

 docker load -i    /root/docker.io-centos.tar 

 参数:-i " docker.io-centos.tar    " 指定载入的镜像归档。

方法三:直接下载其他站点的镜像 

[root@xuegod63 ~]# docker pull hub.c.163.com/library/tomcat:latest 

#查看  images  列表

docker images 

问题解决: 开启动网络转发功能 

#插入以下内容

echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf    

sysctl  -p      #生效 

查看是否生效:

 cat /proc/sys/net/ipv4/ip_forward 

3、 docker 平台基本使用方法

 run    运行 

-i 以交互模式运行容器,通常与 -t 同时使用; 

-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用 

#列出所有本地镜像

docker images    

#启动交互实例

docker run    -it docker.io/centos:latest /bin/bash

#启动后台运行实例

-d 后台运行容器,并返回容器 ID; 

-c 后面跟待完成的命令

docker  run  -d docker.io/centos:latest /bin/sh  -c "while true;do echo hello world; sleep 1; done"

输入回车后会返回docker容器的完整ID 

4、容器日志读取

#列出所有运行中容器 

docker ps  

#列出所有容器(包含沉睡/退出状态的容器

docker ps -a    

语法:docker   logs  容器实例的Name/ID 

docker logs 1b3493487c4        #容器的 ID 可以写全,也可以丌写全,只要唯一就可以了

5、杀死一个容器

 #列出所有容器(包含沉睡/退出状态的容器)

 docker ps -a    

 #杀死一个容器

 docker kill c4a213627f1b    

 6、启动、停止、重启、删除  container 容器实例 

启动容器实例:docker start 1a63ddea6571 

停止容器实例:docker stop 1a63ddea6571

重启容器实例:docker restart 1a63ddea6571 

删除容器实例:docker rm    e085da6919af 

强制删除容器实例:docker rm -f 1a63ddea6571 

 7、 docker 镜像制作方法

 Docker Image  的制作两种方法 

方法 1:docker commit      #保存  container  的当前状态到  image 后,然后生成对应的 image 

方法 2:docker build    #使用  Dockerfile  文件自动化制作  image

方法一:docker commit 

语法:  docker commit <container ID> <image_name> 

docker run -it docker.io/centos:latest /bin/bash 

yum -y install    httpd 

exit

docker commit bbd01c4b8567 docker.io/centos:apache

方法二:通过:docker build 创建一个基于 centos 的 httpd web 服务器镜像。 

使用 docker build 创建镜像时,需要使用  Dockerfile  文件自动化制作  image  镜像

注:Dockerfile 有点像源码编译时./configure 后产生的 Makefile 

 1、创建工作目录

mkdir /docker-build 

cd /docker-build 

touch Dockerfile 

注:  make 自动化编译时需要 Makefile 文件,自动化创建 docker 镜像时,需要 Dockerfile

 2、编辑Dockerfile 

Dockerfile 用来创建一个自定义的 image,包含了用户指定的软件依赖等。 

#vim Dockerfile       

FROM docker.io/centos:latest 

MAINTAINER    <[email protected]

RUN yum -y install httpd 

ADD start.sh /usr/local/bin/start.sh  

ADD index.html /var/www/html/index.html 

注释: 

FROM    docker.io/centos:latest    # FROM  基于哪个镜像 

MAINTAINER    <[email protected]>    # MAINTAINER  镜像创建者 

RUN yum -y install httpd      #RUN  安装软件用 

ADD start.sh /usr/local/bin/start.sh       

ADD index.html /var/www/html/index.html 

#  ADD    将文件<src>拷贝到新产生的镜像的文件系统对应的路径<dest>。所有拷贝到新镜像中的文件和文件夹权限为 0755,uid 和 gid 为 0 

CMD echo hello world        #container 启劢时执行的命令戒启劢服务,但是一个 Dockerfile 中只能有一条 CMD 命令,多条则只执行最后一条CMD. 

例如:dockefile1  中的内容如下:   

# vim dockefile1 

FROM ubuntu 

MAINTAINER xxx 

RUN echo hello1 > test1.txt 

RUN echo hello2 > /test2.txt 

EXPOSE 80 

EXPOSE 81 

CMD ["/bin/bash"] 

 3、创建start.sh脚本启动 httpd 服务和apache默认首页index.html文件 

echo "/usr/sbin/httpd -DFOREGROUND" > start.sh 

#注:/usr/sbin/httpd -DFOREGROUND        相当于执行了  systemctl start httpd 

chmod a+x start.sh 

echo "docker image build test" > index.html 

 4、使用命令 build 来创建新的 image   

语法:docker build -t    父镜像名:镜像的 tag   Dockerfile文件所在路径 

-t :表示 tage,镜像名 

例:使用命令 docker build 来创建新的 image,并命名为 docker.io/centos:httpd   

docker build -t docker.io/centos:httpd ./ 

注:  ./  表示当前目彔。另外你的当前目彔下要包含 Dockerfile 

8、Docker Image  的发布

方法 1:Save Image To TarBall 保存  Image  到  tar  包 

语法:docker save -o  导出的镜像名.tar    本地镜像名:镜像标签 

docker  save  -o  docker.io-centos-httpd-docker-image.tar docker.io/centos:httpd 

使用导入本地镜像:

 docker rmi docker.io/centos:httpd      #删除已有镜像,这里写自己镜像的 ID或名字

 docker load -i centos-httpd-docker-image.tar #导入本地的镜像

方法 2:Push Image To Docker Hub    发布到外网 

1、Signup on docker hub & create repo        注册一个帐号 https://hub.docker.com/ 

2、Login to docker hub   

# docker login -u userabc -p abc123 -e [email protected]  

3、Push image to docker hub      #上传镜像 

# docker push centos:httpd 

4、Pull image from docker hub      #下载镜像 

# docker pull userabc/centos:httpd          #    用户名/镜像名 

方法 3:  使用阿里云的私有仓库来发布,等下节讲完私有仓库的搭建,再讲 

 9、 Container 容器端口映射与文件夹映射(默认采用Bridge模式,即类似NAT网络连接)

docker  run  -d  -p  80:80    docker.io/centos:httpd  /bin/bash  -c /usr/local/bin/start.sh 

映射了/var/www/html/index.html的新写法:

docker run -d -p 80:80 -v /var/www/html:/var/www/html longtao/centos:httpd  /bin/bash -c /usr/local/bin/start.sh

注:  -p  物理机的 80 端口:容器实例的 80 端口    ,把容器中的 80 端口映射到物理机上的 80 端口

         -v  物理机的文件夹:容器实例的文件夹    ,把容器实例中的的文件夹映射到物理机上的文件夹

#在物理机上查看容易状态: docker ps 

查看物理机上开启的 80 代理端口

netstat -antup | grep 80

tcp6       0      0 :::80                   :::*                    LISTEN      18658/docker-proxy-

10、访问正在运行的  container  容器实例 

语法:  docker exec -it <container id | name> /bin/bash  

查看正在运行的容器 ID:docker ps

docker exec -it 87fadc0249a9 /bin/bash    #进入容器 

版权声明:
作者:WaterBear
链接:https://l-t.top/1882.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>