一、软件安装
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