养成良好的记录习惯
作者:黄黄
小知识:
Docker daemon
运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互
Docker client
Docker 命令行工具,是用户使用Docker的主要方式,Docker client与Docker daemon通信并将结果返回给用户,Docker client也可以通过socket或者RESTful api访问远程的Docker daemon
Docker image
镜像是只读的,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container;镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。
Docker container
容器是Docker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。
Docker hub/registry
共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为 https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
镜像就相当于打包好的版本,镜像启动之后运行在容器中,仓库就是装存储镜像的地方。
docker常用命令
镜像
docker rmi [image-id] #删除镜像
docker rmi $(docker images -q) #删除所有镜像
docker rmi $(sudo docker images --filter "dangling=true" -q --no-trunc) #删除无用镜像
docker rmi -f [repository]:[tag] #删除tag镜像
docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') #停止容器
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }') #删除容器
docker rmi $(docker images | grep "none" | awk '{print $3}') #删除none镜像
增:
docker build -t friendlyname . #使用此目录的“Dockerfile”创建镜像
docker push 192.168.1.52:5000/zabbix #提交镜像到本地私有
docker pull ubuntu:13.10 #下载ubuntu:13.10镜像
删:
docker rmi <image id> #从机器中移除指定镜像
docker rmi $(docker image ls -aq) #从机器上移除所有镜像
docker rmi [REPOSITORY]:[TAG] #删除tag
查:
docker images #列出机器上所有镜像
docker search httpd #通过 docker search 命令搜索 httpd 来寻找适合我们的镜像
注意:
1. 删除前需要保证容器是停止的 stop
容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) #启动所有的容器
docker stop Name/ID #停止一个容器
docker start Name/ID #启动一个容器
docker kill Name/ID #杀死容器
docker exec -it 7752222e1e1 /bin/bash #进入容器
docker run -i -t image_name /bin/bash #交互式进入容器中
查:
docker ps #查看我们正在运行的容器
docker ps -l #查询最后一次创建的容器
docker ps -a #查询所有创建的容器
docker logs <container id> #查看容器内的标准输出
docker logs <container name> #查看容器内的标准输出
docker port <container name/id> <port> #查看容器端口的映射情况
增:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...] #创建一个新的容器但不启动它
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] #创建一个新的容器并运行一个命令
进:
docker exec -it <container name/id> #不会像attach方式因为退出,导致整个容器退出
docker attach <container name/id> #进入虚拟机,如果从这个stdin中exit,会导致容器的停止
删:
docker rm $(docker ps -aq) #删除所有容器
docker stop $(docker ps -q) & docker rm $(docker ps -aq) #强制关闭所有容器并删除所有容器
docker rm <container name/id> #删除指定容器
运:
docker run -d -p 127.0.0.1:4000:80/udp friendlyname #后台运行"friendlyname" 镜像并将4000 端口映射到80端口
docker-compose
docker-compose up -d nginx #构建建启动nignx容器
docker-compose exec nginx bash #登录到nginx容器中
docker-compose down #删除所有nginx容器,镜像
docker-compose ps #显示所有容器
docker-compose restart nginx #重新启动nginx容器
docker-compose run --no-deps --rm php-fpm php -v #在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose build nginx #构建镜像 。
docker-compose build --no-cache nginx #不带缓存的构建。
docker-compose logs nginx #查看nginx的日志
docker-compose logs -f nginx #查看nginx的实时日志
docker-compose config -q #验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx #以json的形式输出nginx的docker日志
docker-compose pause nginx #暂停nignx容器
docker-compose unpause nginx #恢复ningx容器
docker-compose rm nginx #删除容器(删除前必须关闭容器)
docker-compose stop nginx #停止nignx容器
docker-compose start nginx #启动nignx容器
其他常用命令
docker login #使用您的Docker凭据登录此CLI会话
systemctl start docker #启动
sudo systemctl daemon-reload #守护进程重启
systemctl restart docker #重启docker服务
sudo service docker restart #重启docker服务
service docker stop #关闭docker服务
systemctl stop docker #关闭docker服务
ps -ef|grep docker #查看docker进程