Docker的基本用法

docker ps
docker image ls
docker container ls
docker history ubuntu:latest
docker run -it -p 8000:8000 yhyang/andt_pro:dev_v1
docker exec -it 3d780bd64783 /bin/bash

docker ps -a | grep "Exited" | awk '{print 1 }'|xargs docker stop docker ps -a | grep "Exited" | awk '{print1 }'|xargs docker rm
docker images|grep none|awk '{print $3 }'|xargs docker rmi

  • docker rm $(docker ps --all -q -f status=exited)

build ant-design-pro的开发环境

docker build -t yhyang/andt_pro:dev_v1 . -f Dockerfile.dev

从镜像,新建一个container:
#docker create --name extract antdesign/ant-design-pro
257542f7d1da69882dfae31a184045a9ddba7cdd8e50e527e0359e40cfc538b0
查看所有的containers:
#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
257542f7d1da antdesign/ant-design-pro "nginx -g 'daemon of…" 6 minutes ago Created extract
1bc8a28db815 antdesign/ant-design-pro "nginx -g 'daemon of…" 12 hours ago Exited (0) 12 hours ago competent_elion
abf162888509 antdesign/ant-design-pro "nginx -g 'daemon of…" 12 hours ago Exited (0) 12 hours ago reverent_pasteur
0c9df62dac7f ubuntu "cat /etc/os-release" 15 hours ago Exited (0) 15 hours ago frosty_murdock

1. dokcer,没有后台进程的概念,都是以前台程序的方式启动的。

对于容器而言,其启动程序就是容器应用进程,容器就是为了主进程而存在的,主进程退出,容器就失去了存在的意义,从而退出,其它辅助进程不是它需要关心的东西。

正确的做法是直接执行 nginx 可执行文件,并且要求以前台形式运行。比如:
CMD ["nginx", "-g", "daemon off;"]

2. 将镜像打包成本地文件

docker save antdesign/ant-design-pro -o antd_pro.tar
docker save antdesign/ant-design-pro | gzip > antd_pro.tar.gz

3. 解压镜像文件

docker load -i antd_pro.tar.gz

总结一下docker save和docker export的区别:
  1. docker save保存的是镜像(image),docker export保存的是容器(container);
  2. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
  3. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

3. 运行一个容器

$ docker run -t -i ubuntu:18.04 /bin/bash
root@af8bae53bdd3:/#

其中, -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入
上, -i 则让容器的标准输入保持打开。

4.导出容器快照

$ docker export 3d3ed269ddbd > ubuntu.tar

5.导入容器快照

$ cat ubuntu.tar | docker import - test/ubuntu:v1.0

$ docker image ls

注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

6. Volume

docker volume create ubuntu_lun001
docker volume ls
docker volume inspect ubuntu_lun001
docker volume rm ubuntu_lun001

7.将volume挂载的容器

$ docker run -d -P
--name web
# -v my-vol:/wepapp
--mount source=ubuntu_lun001,target=/webapp
antdesign/ant-design-pro

8. 挂载本机的本地目录

docker run -d -P
--name web
# -v /src/webapp:/opt/webapp
--mount type=bind,source=/src/webapp,target=/opt/webapp
training/webapp
python app.py

9. 查找删除None的inamge

docker images -f "dangling=true"
docker rmi $(docker images -f "dangling=true" -q)

docker images | grep none | awk '{print $3}' | xargs docker rmi

10. 删除Exit的容器

docker ps -a | grep "Exited" | awk '{print 1}' | xargs docker stop docker ps -a | grep "Exited" | awk '{print1}' | xargs docker rm

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容