安装 docker

1、yum 包更新到最新 
yum update


2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2

3、阿里源

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装docker,出现输入的界面都按 y 
yum install -y docker-ce

 5、 查看docker版本,验证是否验证成功
docker -v

6、自己创vi /etc/docker/daemon.json

{
    "registry-mirrors": ["http://4a1df5ef.m.daocloud.io"],   # 是用来pull容器加速用的,跟此次问题无关。
   "storage-driver": "devicemapper"    # 解决此次问题
}

7、启动 关闭 重启

systemctl start docker
systemctl stop docker
systemctl restart docker

若有问题

vim /etc/sysconfig/docker

加入
OPTIONS="--selinux-enabled --log-driver=journald --signature-verification=false"

8、镜像相关命令

1.搜索镜像:搜索镜像仓库上的镜像:search

docker search [镜像名称]
e.g.
    docker search golang
    docker search nginx

字段含义:   
    name:镜像名称
    description:镜像描述
    stars:下载次数
    official:是否官方
    automated:是否自动运行

2.获取镜像 :pull

docker pull [镜像名称]
e.g.
    docker pull nginx

镜像下载的路径:
    linux     /var/lib/docker
查看镜像信息:/var/lib/docker/image/overlay2/repositories.json

3.查看镜像:images

查看所有的镜像:docker images
查看指定镜像:docker images [镜像名称]

4.镜像的删除 :rmi

docker rmi [镜像id] [镜像id]  或者docker image rm [镜像id] [镜像id]   可以删除多个
docker rmi [镜像名称]:[版本号]
还可以加参数:docker rmi -f [镜像id]    强制删除
注意:镜像id可以确定是哪个镜像,镜像名称不能确定,得和版本号一起使用才能确定具体那个镜像

5.镜像的重命名:tag

docker tag [旧镜像Id] [新镜像名称]:[版本号]

docker tag [旧镜像名称]:[版本号] [新镜像名称]:[版本号]

e.g.
    docker tag mysql:5.7 test_mysql:5.7.3 

注意:会复制一份,原来的镜像还存在,两个镜像的镜像id是同一个

6.镜像的导出:save

将已有的镜像导出到本地,没有网络时可以直接使用

docker save -o 导出的文件路径 本地的镜像名称
docker save -o nginx.gz.tar nginx

-o   --output

7.镜像的导入:load

docker load -i 要导入的文件名称      或者   docker load < 要导入的文件名称
docker load -i nginx.tar.gz

-i  --input

8.镜像的历史查看:history

docker history [镜像Id]
docker history [镜像名称]:[版本号]

9.镜像的详细信息:inspect

docker inspect [镜像名称]:[版本号]
docker inspect [镜像Id]

e.g.
    docker inspect mysqllasted

10.根据模板创建镜像:import

下载模板地址:http://download.openvz.org/template/precreated/

cat 模板名 |docker import - [自定义镜像名称]

e.g.
    cat centos-6-x86-devel.tar.gz | docker import centos-6
              你要创建的镜像包                      自定义名字

9、什么是容器

docker将镜像文件运行起来后,产生的对象就是容器,就是一个镜像运行起来的实例

容器的存放位置:/var/lib/docker/containers/

10、docker容器和虚拟机的区别

1.相同点

  • 都可以安装各种应用,如mysql
  • 都是有生命周期的,启动,关闭等
  • 都会在宿主机上储存

2.不同点

  • docker小,虚拟机大
  • 虚拟机是个完整的操作系统,docker容器不是
  • 虚拟机需要额外的资源来管理,docker容器不需要

11、容器的操作

1.查看容器:ps

显示正在运行的容器:docker ps
显示所有的容器:docker ps -a


字段含义:
container ID : 容器id
mage:基于的镜像
command:在这个镜像上运行过的命令
created:创建时间
status:状态
ports:端口号
names:容器名称,随机的

2.创建容器,没有启动的:create

docker create [参数] [基于的镜像名称] [容器内命令] [命令参数]

参数:
    -t --tty                分配虚拟终端
    -i --interactive        保持STDIN(标准输入)打开
    --name                  容器名称,不指定的话就随机指定

容器内命令:
    如:pwd,ps,ls等
命令参数:
    如:ps的ef,lsof的i参数

e.g.
    docker create -i -t --name contain_name ubuntu lsof -i:80

3.启动容器:start

docker start [容器Id]

参数:
    -a 将当前shell的标准输出打印出来

4.创建容器,并且启动:run

docker run [参数] [基于的镜像名称] [容器内命令] [命令参数]

参数:
    -t --tty                分配虚拟终端
    -i --interactive        保持STDIN(标准输入)打开
    --name                  容器名称,不指定的话就随机指定
    -d                      在后台运行容器,并打印容器id  
    --rm                    当容器停止运行是,删除容器

容器内命令:
    如:pwd,ps,ls等
命令参数:
    如:ps的ef,lsof的i参数

e.g.        
    docker run -i -t --name contain_name --rm -d ubuntu lsof -i:80

查看日志:

docker logs 容器id

5.守护进程的运行方式:-d

加-d参数:
e.g.   docker run -i -t --name contain_name --rm -d ubuntu lsof -i:80

6.容器暂停/取消暂停容器:pause

暂停:    docker pause [容器Id]
取消暂停:docker unpause [容器Id]

8.容器的重启:restart

docker restart [参数] [容器Id] [容器Id]

参数:
    -t    多少秒后重启,单位:秒,默认10秒

e.g.
    docker restart -t 5 13dasd321

9.容器的关闭/立即终止:stop/kill

关闭:docker stop [容器Id]          建议使用,正常的关闭
强制关闭:docker kill [容器Id]

10.容器的删除:rm

正常删除:docker rm [容器Id]
注意:得先停止容器,然后再删除

强制删除:docker rm -f [容器Id]
注意:不需要停止容器,直接删除,有风险,不建议使用

11.容器的进入/退出

进入容器:
    1.创建容器,并且进入:不能使用-d参数,不然是后台运行的
        命令行是基于bash的,所以只需要创建后执行bash命令就行
        e.g.
            docker run -i -t --name contain_name --rm ubuntu /bin/bash

    2.进入指定的容器:
        docker exec -i -t 容器Id /bin/bash


退出:
    exit  或者ctrl+d

12.基于容器创建镜像

将已经配置好的容器导出为镜像,方便下次使用

导出方式一:docker commit -m "信息" -a "作者" [容器Id] [镜像名称]:[镜像版本]

导出方式二:
    先导出:docker export [容器Id] > xxx.tar.gz

    再导入为镜像:cat xxx.tar.gz | docker import - [镜像名称]

13.load和import的区别

load不能指定名称,import可以

 


版权声明:本文为qq_36414739原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。