mirror of
https://github.com/eon01/DockerCheatSheet.git
synced 2024-11-16 00:58:57 +02:00
9.0 KiB
9.0 KiB
如你如见,最近这个仓库在 GIthub 上变的流行。不久的将来,我们会进一步完善它。
感谢你的支持。
点击 网址.
目录
安装
Linux
查看 这里 获取更多信息。
curl -sSL https://get.docker.com/ | sh
Mac
查看 这里 获取更多信息
使用下面连接下载 dmg 文件.
https://download.docker.com/mac/stable/Docker.dmg
Windows
查看 这里 获取更多信息
通过 msi 文件安装:
https://download.docker.com/win/stable/InstallDocker.msi
Docker 仓管中心和仓库
登录镜像仓库
docker login
docker login localhost:8080
从镜像仓库退出登录
docker logout
docker logout localhost:8080
搜索镜像
docker search nginx
docker search --filter stars=3 --no-trunc nginx
拉取镜像
docker image pull nginx
docker image pull eon01/nginx localhost:5000/myadmin/nginx
推送镜像
docker image push eon01/nginx
docker image push eon01/nginx localhost:5000/myadmin/nginx
运行容器
创建并运行一个简单的容器
- 启动ubuntu:latest 镜像
- 绑定容器的
80
端口到宿主机的3000
端口- 将主机
/data
目录挂载到容器中- 注意: 在 windows 系统中,你需将
-v ${PWD}:/data
改为-v "C:\Data":/data
docker container run --name infinite -it -p 3000:80 -v ${PWD}:/data ubuntu:latest
创建容器
docker container create -t -i eon01/infinite --name infinite
运行容器
docker container run -it --name infinite -d eon01/infinite
重命名容器
docker container rename infinite infinity
删除容器
docker container rm infinite
容器只有停止后才可被删除,通过 docker stop
命令停止容器。为避免这个可在容器启动时加上--rm
选项。
更新容器配置
docker container update --cpu-shares 512 -m 300M infinite
在运行的容器中执行命令
docker exec -it infinite sh
上例中,如果报错可将 bash
可替换为 sh
.
启动 & 停止容器
启动
docker container start nginx
停止
docker container stop nginx
重启
docker container restart nginx
暂停
docker container pause nginx
取消暂停
docker container unpause nginx
阻塞容器
docker container wait nginx
杀掉容器
docker container kill nginx
发送其他信号
docker container kill -s HUP nginx
连接现有容器
docker container attach nginx
获取容器相关详细
查看运行的容器
简写:
docker ps
或者:
docker container ls
查看所有容器
docker ps -a
docker container ls -a
查看容器日志
docker logs infinite
追踪容器日志
docker container logs infinite -f
检查容器
docker container inspect infinite
docker container inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -q)
查看容器事件
docker system events infinite
查看容器端口
docker container port infinite
运行进程
docker container top infinite
查看容器资源使用情况
docker container stats infinite
检查容器文件系统上文件或目录的更改情况
docker container diff infinite
操作镜像
列示镜像
docker image ls
构建镜像
docker build .
docker build github.com/creack/docker-firefox
docker build - < Dockerfile
docker build - < context.tar.gz
docker build -t eon/infinite .
docker build -f myOtherDockerfile .
curl example.com/remote/Dockerfile | docker build -f - .
删除镜像
docker image rm nginx
从压缩文件中导入镜像
docker image load < ubuntu.tar.gz
docker image load --input ubuntu.tar
将镜像保存为 Tar 包
docker image save busybox > ubuntu.tar
展示镜像历史
docker image history busybox
将容器保存为镜像
docker container commit nginx
给镜像打标签
docker image tag nginx eon01/nginx
推送镜像
docker image push eon01/nginx
网络
创建网络
docker network create -d overlay MyOverlayNetwork
docker network create -d bridge MyBridgeNetwork
docker network create -d overlay \
--subnet=192.168.0.0/16 \
--subnet=192.170.0.0/16 \
--gateway=192.168.0.100 \
--gateway=192.170.0.100 \
--ip-range=192.168.1.0/24 \
--aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \
--aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
MyOverlayNetwork
删除某网络
docker network rm MyOverlayNetwork
列示现有网络
docker network ls
获取网络信息
docker network inspect MyOverlayNetwork
将运行中的容器接入某一网络
docker network connect MyOverlayNetwork nginx
启动容器时,将其接入某一网络
docker container run -it -d --network=MyOverlayNetwork nginx
将容器从某网络中断开连接
docker network disconnect MyOverlayNetwork nginx
暴露端口
使用 Dockerfile, 你可以暴露容器端口:
EXPOSE <port_number>
你还可以通过下面方式,将容器端口映射为宿主机端口:
docker run -p $HOST_PORT:$CONTAINER_PORT --name <container_name> -t
例如
docker run -p $HOST_PORT:$CONTAINER_PORT --name infinite -t infinite
镜像安全性
构建安全镜像的一些指导建议
- 选择最精简的基础镜像
- 创建用户并分配使其用镜像基础权限
- 署名并校验镜像以避免中间人攻击(MITM) 攻击
- 寻找、修复和关注开源漏洞
- 不要在镜像中泄露敏感信息
- 使用明确固定的镜像标签
- 使用 COPY 代替 ADD
- 为元数据创建标签
- 采用多阶段构建以获得小且安全的镜像
- 使用 linter
详细内容参考 Snyk 的 10 Docker Image Security Best Practices blog
清理 Docker
删除容器
docker container rm nginx
删除容器和其数据卷
docker container rm -v nginx
删除所有退出(Exited)容器
docker container rm $(docker container ls -a -f status=exited -q)
删除所有退出(Stopped)容器
docker container rm `docker container ls -a -q`
删除镜像
docker image rm nginx
删除悬空(Dangling)镜像
docker image rm $(docker image ls -f dangling=true -q)
删除所有镜像
docker image rm $(docker image ls -a -q)
删除所有无标签镜像
docker image rm -f $(docker image ls | grep "^<none>" | awk "{print $3}")
停止 & 删除所有镜像
docker container stop $(docker container ls -a -q) && docker container rm $(docker container ls -a -q)
删除悬空(Dangling)数据卷
docker volume rm $(docker volume ls -f dangling=true -q)
删除所有 (容器、镜像、网络和数据卷)
docker system prune -f
清理所有
docker system prune -a
Docker Swarm
安装 Docker Swarm
curl -ssl https://get.docker.com | bash
初始化 Swarm
docker swarm init --advertise-addr 192.168.10.1
将工作节点加入 Swarm
docker swarm join-token worker
将管理节点加入 Swarm
docker swarm join-token manager
列示服务
docker service ls
列示节点
docker node ls
新建服务
docker service create --name vote -p 8080:80 instavote/vote
列示 Swarm 任务
docker service ps
伸缩服务
docker service scale vote=3
更新服务
docker service update --image instavote/vote:movies vote
docker service update --force --update-parallelism 1 --update-delay 30s nginx
docker service update --update-parallelism 5--update-delay 2s --image instavote/vote:indent vote
docker service update --limit-cpu 2 nginx
docker service update --replicas=5 nginx
附录
该文章首发于 Painless Docker Course