一、软件安装


https://docs.docker.com/engine/install/ubuntu/

二、入门操作

1、下载镜像

docker pull ubuntu

2、创建一个CONTAINER

示例:

docker run --name helloword -it -v /home/主机路径:/home/container路径 ubuntu
  • 参数–name 设置CONTAINER名称,如果为空则随机生成
  • 参数-v 设置主机与CONTAINER的共享目录
  • 主机绝对路径:container绝对路径 这里 ubuntu对应的是镜像名称
  • bash是你要执行的命令

3、CONTAINER列表查询

docker ps -a

执行结果如下:

docker ps -a                                          [8:07:29]
CONTAINER ID   IMAGE     COMMAND   CREATED       STATUS                   PORTS     NAMES
7b04183a5d84   ubuntu    "bash"    7 hours ago   Up 7 hours                         helloword
7738a2fd18f1   ubuntu    "bash"    7 hours ago   Exited (0) 7 hours ago             quirky_mccarthy

进入CONTAINER
docker attach $NAMES
docker attach $CONTAINER ID
示例:
通过NAME 进入

docker attach helloword

通过CONTAINER ID进入

docker attach 7b04183a5d84

如果容器本身是后台运行的,比如:mysql的容器。

docker exec -it 276d1b225c0b bash

exec 命令
-i -t 参数 docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。 只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。 当 -i -t
参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

4、退出CONTAINER

  • 快捷键ctrl -p ctrl-q 退出并让CONTAINER后台运行
  • 命令exit退出,会直接让CONTAINER关机

5、删除CONTAINER(小心谨慎操作)

docker rm $NAMES
docker rm $CONTAINER ID

6、CONTAINER关机

docker stop $CONTAINER ID

通过-itd参数创建容器,docker exec -it name bash进入容器,exit退出就不会杀掉容器

7、CONTAINER开机

docker start $CONTAINER ID

8、查询空间占用情况

docker system df

9、查询空间占用细节

docker system df --verbose

10、查看CONTAINER空间占用

docker ps --size

11、查询镜像列表

docker images

12、删除image

格式:docker rmi $CONTAINER ID

docker rmi a404d6ba5c24

CONTAINER备份与还原(快照)

其实在一些场景中,我是把docker当成一种高效的虚拟机使用的。在使用虚拟机的过程中我是经常会用到虚拟机的快照功能的,那么docker是否有类似与快照的功能呢?我们这里只考虑本地备份与还原,不上传到Docker注册中心。

参考:
https://www.linuxidc.com/Linux/2015-08/121184.htm

1、备份

查CONTAINER ID 我们这里查到的是b660e10ca5d9

docker ps

2、 创建快照

格式:docker commit -p ${CONTAINER ID} ${备份的名称}

docker commit -p b660e10ca5d9 ubuntu-v0.1

稍等片刻,执行结果如下:

sha256:a404d6ba5c2468135e56012b6c02320f2f1125d97bf5508fa15717d6daa631d3

3、 查询快照

docker images

执行结果中就可以查看到我们刚才制作的快照了,变成一个镜像啦。

REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-v0.1 latest a404d6ba5c24 About a minute ago 1.06GB
ubuntu latest ba6acccedd29 6 weeks ago 72.8MB
有镜像了,就跟从网上下载的镜像一样使用就行了。
比如:

docker run --name demo -it -v /home/demo:/home/ ubuntu-v0.1 zsh

注意后面的ubuntu-v0.1

4、 快照分享

竟然我们的镜像做好了,能否分享呢?能否移植到其他的机器呢?

docker save -o ~/ubuntu-v0.1.tar ubuntu-v0.1

稍等片刻,过程中没有日志。运行结束后,我们发现~/目录下已经生成了镜像文件了。

5、 还原

既然上面生成了备份文件,那么可以还原镜像前面的备份才有意义可言。

docker load -i ~/ubuntu-v0.1.tar

结束后,执行:

docker images

发现我们的镜像已经成功了加载 了。

三、docker中管理所有的容器命令

docker中 启动所有的容器命令

docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 关闭所有的容器命令

docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 删除所有的容器命令

docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

docker中 删除所有的镜像

docker rmi $(docker p_w_picpaths | awk '{print $3}' |tail -n +2)

tail -n +2 表示从第二行开始读取

设置image的REPOSITORY和TAG
把id=82d2d47667cf的image设置成REPOSITORY=mysql和TAG=5.7.37

docker tag 82d2d47667cf mysql:5.7.37

通过REPOSITORY和TAG删除image
删除image

docker image rm mysql5.7.37:latest