1.安装的docker版本
1 | docker -v |
2.查看本地的镜像
1 | docker images |
3.拉取镜像
1 | docker pull centos:7 |
4.编写Dockerfile
1 | FROM nginx |
5.build Dockerfile
1 | docker build -t . xxx # 镜像的名字 |
或者
1 | docker build -f ./Dockerfile . -t xxx:xxxx |
bash
1 | docker run -i -t ubuntu:15.10 /bin/bash |
将容器中的8080端口映射到本机的18080端口
1 | docker run -p 18080:8080 -it xxxx:v1.0.0dev /bin/bash |
如果是多个端口,使用多个-p
1 | -p 18080:8080 -p 18081:8081 |
参数
1 | -it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。 |
6.运行
1 | docker run xxx # 镜像的名字 |
7.查看自己镜像的id
1 | docker ps |
8.列出所有的容器,包括exit状态的容器
1 | docker ps -a |
9.查看内网ip地址等运行情况
1 | docker inspect id | grep IP |
9.请求nginx
1 | curl 172.17.0.5:80 |
10.如果想要镜像不退出,然后进行镜像中
1 | # run |
sleep.sh内容
1 | #!/usr/bin/env bash |
或者
1 | ENTRYPOINT ["/bin/bash","-c","while true; do sleep 10000; done"] |
然后执行
1 | docker run --network=host xxxx |
查看id
1 | docker ps |
进入镜像中
1 | docker exec -it xxxx bash |
11.删除container,先停再删
1 | docker stop 3f6822d8f262 |
12.使用docker命令从pod向宿主机拷贝文件
1 | docker cp pod_id:/tmp/abc /tmp/ |
使用docker命令从宿主机向pod中拷贝文件
1 | docker cp ./xx-xx pod_id:/home/xxx |
13.mac使用docker的时候配置仓库
1 | https://registry.docker-cn.com |
注意:mac版本docker升级到高版本后Daemon选项没了,需要在docker engine中填写json配置
14.ubuntu配置docker仓库,在/etc/docker目录下新建daemon.json,内容
1 | { |
重启docker服务
1 | sudo systemctl restart docker |
14.查看docker的磁盘使用情况
1 | lintong@master:~$ docker system df |
清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)
1 | docker system prune |
如果有2个镜像的id相同,则删除的时候会报
1 | docker rmi 85f602b72c3c |
此时应该找到2个id相同的镜像,然后一个个进行删除
1 | docker images | grep 85f602b72c3c |
删除第一个
1 | docker rmi xxxxx:v0.9.1 |
再删除另一个
1 | docker rmi 85f602b72c3c |
1 | https://developers.redhat.com/blog/2016/02/24/10-things-to-avoid-in-docker-containers/ |
1.不要在容器中存储数据 – 容器可能被停止,销毁,或替换。
2.不要将你的应用发布两份 – 一些人将容器视为虚拟机。
3.不要创建超大镜像 – 一个超大镜像只会难以分发。
4.不要使用单层镜像
5.不要为运行中的容器创建镜像
6.不要只使用“最新”标签
7.不要在单一容器中运行超过一个进程
8.不要在镜像中存储凭据
9.使用非root用户运行进程
10.不要依赖IP地址