docker常用命令

安装docker

本文使用的是centOS7,然后su切换到root用户运行docker。
使用脚本安装docker,执行这个脚本会添加 docker.repo 源并安装 Docker,这个大概需要几分钟。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

启动docker进程,下载一个测试的镜像验证 docker 是否安装成功。

$ sudo systemctl start docker
$ sudo docker run hello-world
$ docker images

因为网络问题,可以镜像加速,打开配置文件,没有该文件的话,可以创建一个,这个是用网易的镜像地址:

vi  /etc/docker/daemon.json

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

镜像的使用

查看本机镜像

 $  docker images  

在这里插入图片描述
REPOSITORY:镜像的仓库名

TAG:镜像的标签

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

因为仓库原较多,我们使用 REPOSITORY:TAG 来定义不同的镜像,使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

$ docker run -it ubuntu:15.10 /bin/bash 

-it:这是两个参数,一个是-i:允许你对容器内的标准输入 (STDIN) 进行交互,-t:在新容器内指定一个伪终端或终端,bash是获得一个可操作的 Shell,然后我们就进入容器的终端了,run是运行,如果没有就进行下载。
现在进入一个 ubuntu15.10系统的容器,可以ls查看里面的文件等信息,然后使用exit命令或者CTRL+D来退出。

还可以使用这个下载最新的Ubuntu,因为没有指定版本,默认最新的(latest)

  $ docker run ubuntu

列出所有镜像

  $ docker images

根据仓库名列出镜像

  $ docker images ubuntu

根据仓库名和标签列出镜像

  $ docker images ubuntu:15.10

在这里插入图片描述
查看所有镜像,包括停止的镜像

 $ docker images -a

查看镜像,容器,数据卷所占用的空间

 $ docker system df

在这里插入图片描述
第一行代表的是images,TOTAL有三个,ACTIVE是有三个运行数量
第二行代表容器,总共有六个,没有运行的。
第三行数据卷,是空的。
查看所有容器,包括停止的容器,status的确没有运行的

$  docker ps -a

在这里插入图片描述
删除容器docker rm CONTAINER ID ,也可以使用仓库名:标签。

$   docker rm 45df3ba63d84

删除镜像docker rmi CONTAINER ID ,也可以使用仓库名:标签。注意:如果容器和镜像关联了,可以先删除容器,在删除镜像。

  $  docker rmi a2a15febcdf3

容器的常用操作

docker start [OPTIONS] CONTAINER [CONTAINER…]
docker stop [OPTIONS] CONTAINER [CONTAINER…]
docker restart [OPTIONS] CONTAINER [CONTAINER…]
列如对容器hello进行操作

    $ docker start hello 	 		    #启动容器
    $ docker stop hello 		    	#停止容器
    $ docker restart hello	        #重启容器
    $ docker exec -it hello bash		#进入容器
    $ docker rm hello     	        #删除容器
    $ docker rm -f $(docker ps -q -a)   #删除所有容器

commit镜像构成

下载一个nginx容器,命名为webnginx,-d表示在后台运行,-p是指定端口映射,映射到80端口,然后使用docker ps查看正在运行的容器。

$ docker run --name webserver -d -p 80:80 nginx
$ docker ps

打开web,我这边使用的是虚拟机centos的地址,根据情况使用你自己的虚拟机、本机、云服务器等地址,如果因为防火墙问题, centos7可使用:
firewall-cmd --state #查看默认防火墙状态(关闭后是notrunning,开启后是running)
systemctl start firewalld.service #开启防火墙
systemctl stop firewalld.service #关闭防火墙
systemctl disable firewalld.service #禁止开机启动。
在这里插入图片描述
进入webserver,更改里面的内容, bash 命令是获得一个可操作的 Shell

[root@bogon ~]# docker exec -it webserver bash
root@1f68c945c81f:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
root@1f68c945c81f:/# exit

在这里插入图片描述
因为修改了文件,也就是修改了容器的存储层,可以使用diff查看webserver容器的改动

  $  docker diff webserver

使用commit将容器保存为镜像,docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

$ docker commit   --author "<xxxxx@163.com>"     --message "8.21修改了默认网页"   webserver webserver:v1

-a :提交的镜像作者( --author)
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字( --message)
-p :在commit时,将容器暂停

然后使用docker images进行查看
在这里插入图片描述
使用docker history 具体查看镜像内的历史记录

  $  docker history webserver:v1

在这里插入图片描述
上面commit已经生成了本地镜像,如果想提交到docker hub仓库,需要docker hub账号,然后使用docker push [OPTIONS] NAME[:TAG]

$ docker login							#首先需要登录
$ docker push  账号名/镜像名称:标签       #进行上传
$ docker pull  账号名/镜像名称:标签    	 #进行下载

数据卷

数据卷是存储数据的,可以在多个容器之间进行数据共享,这里使用的是volumes ,
volumes里面的数据默认都存储在/var/lib/docker/volumes。
docker volume 子命令:
create 创建数据卷
inspect 显示数据卷的详细信息
ls 列出所有的数据卷
prune 删除所有未使用的 volumes
rm 删除一个或多个未使用的 volumes

使用volumes创建数据卷容器dbdata,挂载到/dbdata 目录

$ docker run -itd -v /dbdata --name dbdata ubuntu

在其他容器中使用–volumes-from来挂载dbdata容器中的数据卷

$ docker run -itd --volumes-from dbdata --name db1 ubuntu

$ docker run -itd --volumes-from dbdata --name db2 ubuntu

使用docker ps 查看已运行的容器,然后使用下面的命令进入容器,把a1aced6711c5替换成你的CONTAINER ID

$ docker exec -it a1aced6711c5 bash

在里面/dbdata 目录下创建一个test目录,然后在其他两个容器里面的dbdata下面也会有test目录,然后exit退出,在/var/lib/docker/volumes/随机名/_data这个目录下面就是你的dbdata里面的内容。

1.备份

使用下面的命令来备份dbdata数据卷容器内的数据卷:

$ docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata

首先利用ubuntu镜像创建了一个容器worker。使用–volumes-from dbdata参数来让worker容器挂载dbdata容器的数据卷(即dbdata数据卷),使用-v $(pwd):/backup参数来挂载本地的当前目录到worker容器的/backup目录。worker容器启动后,使用了tar cvf /backup/backup.tar /dbdata命令来将/dbdata下内容备份为容器内的/backup/backup.tar,即宿主主机当前目录下的backup.tar。

参考资料:https://yeasy.gitbooks.io/docker_practice/image/commit.html
参考资料:https://www.cnblogs.com/wade-luffy/p/6542539.html
参考资料:https://docs.docker.com/storage/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值