Docker 复习 . 常用命令(待续)

docker 命令

docker build -t friendlyname . # Create image using this directory’s Dockerfile
docker run -p 4000:80 friendlyname # Run “friendlyname” mapping port 4000 to 80
docker run -d -p 4000:80 friendlyname # Same thing, but in detached mode
docker container ls # List all running containers
docker container ls -a # List all containers, even those not running
docker container stop # Gracefully stop the specified container
docker container kill # Force shutdown of the specified container
docker container rm # Remove specified container from this machine
docker container rm (docker container ls -a -q)         # Remove all containers  
docker image ls -a                             # List all images on this machine  
docker image rm             # Remove specified image from this machine  
docker image rm
(docker image ls -a -q) # Remove all images from this machine
docker login # Log in this CLI session using your Docker credentials
docker tag username/repository:tag # Tag for upload to registry
docker push username/repository:tag # Upload tagged image to registry
docker run username/repository:tag # Run image from a registry

docker stack ls # List stacks or apps
docker stack deploy -c # Run the specified Compose file
docker service ls # List running services associated with an app
docker service ps # List tasks associated with an app
docker inspect # Inspect task or container
docker container ls -q # List container IDs
docker stack rm # Tear down an application

docker swarm init # 初始化swarm
docker stack deploy -c docker-compose.yml getstartedlab #部署或更新一个stack的名称,已经replica数量等配置信息
docker service #用于管理service 有若干子命令
docker inspect –format=’{{.Status.ContainerStatus.ContainerID}}’ containerName
docker container ls -q

//停止app和swarm
docker stack rm getstartedlab
docker node ls
docker swarm leave –force

docker-machine create –driver virtualbox myvm1 //本地创建支持docker的host
docker-machine ls //列出所有的docker-machine

docker network ls //列出所有网络, 默认提供两种网络驱动类型bridge和overlay . bridge是默认的网络驱动类型
docker network inspect bridge //查看bridge网络的请求的配置信息
docker network disconnect bridge container_name // 将容器从网络中disconnect
docker network create -d bridge my_bridge //用-d指定网络驱动的类型
docker run -d –net=my_bridge //–net指定网络的名称, 将容器加入某个net中

multistage build

现在比较新的docker版本可以进行multistage builds.

docker部署最佳实践

精简images

  • 选用合适的base image . 例如如果需要JDK , 可以直接选用官方的openjdk , 而不是自己从ubuntu安装openjdk.
  • 使用 multistage builds . 例如 , 可使用maven image 来构建java application . 然后将java组件copy 到tomecat image中 部署 . 整个流程在一个Dockerfile中完成.
    • 如果docker版本没有提供multistage builds 功能. 尽量少写多个RUN命令 , 用一个shell && 来代替.
  • 如果多个image有相当重合的一部分 . 则创建自己的base image.
  • production应该尽量精简 , 但是任然需要能够有debug的功能 .
  • build image的时候 , 不要依赖默认的latest tag . 自己打标签 , 包括环境等信息 .

where and how 持久化应用数据

  • 避免将数据存在容器中 .
  • 用volumes存储数据
  • 开发的时候可以使用bind mount . 生产环境使用volumes .
  • 生产环境使用secrets存储敏感数据 , configs用于存储不敏感数据 .

https://docs.docker.com/ 稍后梳理

你可能感兴趣的:(Docker)