前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker的安装、常用命令介绍及Docker Compose的简单使用

Docker的安装、常用命令介绍及Docker Compose的简单使用

作者头像
NorthS
发布2023-03-21 21:26:09
5700
发布2023-03-21 21:26:09
举报
文章被收录于专栏:北冥博客

在Centos上安装Docker

卸载旧版本(如果有的话)

旧版本的 Docker 名称为dockerdocker-engine。在尝试安装新版本之前卸载任何此类旧版本以及相关的依赖项

代码语言:javascript
复制
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装方法

设置存储库

安装yum-utils包(提供yum-config-manager 实用程序)并设置存储库。

代码语言:javascript
复制
sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
这里用的是国外的存储库地址,速度比较慢,可以更换为国内的镜像地址
yum-config-manager \ 
	 --add-repo \ 

安装 Docker 引擎

要安装最新版本,请运行:

代码语言:javascript
复制
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动Docker

代码语言:javascript
复制
sudo systemctl start docker

通过运行hello world镜像验证是否安装成功

代码语言:javascript
复制
sudo docker run hello-world

卸载方法

卸载 Docker Engine、CLI、containerd 和 Docker Compose 包:

代码语言:javascript
复制
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

主机上的图像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷:

代码语言:javascript
复制
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Docker的常用命令

帮助命令

代码语言:javascript
复制
docker version	# docker版本信息
docker info		# 系统级别的信息,包括镜像和容器的数量
docker 命令 --help 

镜像命令

代码语言:javascript
复制
docker images  #列出所有的镜像
可选项:
--all , -a	# 列出所有镜像
--quiet , -q	# 只显示镜像的id

docker search 镜像名  #搜索镜像
可选项:
--filter=STARS=3000		# 搜素出来的镜像就是STARS大于3000的

docker pull 镜像名[:tag] #下载镜像 分层下载
#不写tag默认就是latest(最新版)
#例如下载5.7版本的mysql:docker pull mysql:5.7

docker rmi -f 镜像ID或者名称 #删除指定镜像
docker rmi -f 镜像ID 镜像ID #删除多个镜像
docker rmi $(docker images -aq) #删除全部容器

#commit镜像
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

容器命令

代码语言:javascript
复制
docker run [可选参数] images

#参数说明
--name="Name"  容器名字 tomcat01 tomcat02 ,用来区分容器
-d             后台方式运行
-it            使用交互方式运行,进入容器查看内容
-p             指定容器端口  -p 8080:8080 还可以和主机映射起来
      -p ip:主机端口:容器端口
      -p 主机端口:容器端口(常用)
      -p 容器端口
-P             随机指定端口

docker ps #列出运行中的镜像
可选项:
-a	# 列出正在运行的容器包括历史容器
-n=?	# 显示最近创建的容器
-q	# 只显示当前容器的编号

#退出容器
exit 		# 直接退出容器并关闭
Ctrl + P + Q	# 容器不关闭退出

#删除容器
docker rm -f 容器id			# 删除指定容器
docker rm -f $(docker ps -aq)		# 删除所有容器
docker ps -a -q|xargs docker rm -f	# 删除所有的容器

#启动和停止容器的操作
docker start 容器id			# 启动容器
docker restart 容器id			# 重启容器
docker stop 容器id			# 停止当前正在运行的容器
docker kill 容器id                       # 强制停止当前的容器

其他常用命令

后台启动容器

代码语言:javascript
复制
docker run -d 镜像名

例如:docker run -d centos
# 问题 docker ps, 发现centos停止了
# 常见的坑, docker 容器使用后台运行, 就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx, 容器启动后,发现自己没有提供服务,就会立即停止,就是没有程序了

查看日志

代码语言:javascript
复制
docker logs -tf --tail 条数 容器id

查看容器中的进程信息

代码语言:javascript
复制
docker top 容器id

查看镜像的元数据

代码语言:javascript
复制
docker inspect 容器id

从容器中拷贝文件到主机

代码语言:javascript
复制
docker cp 容器id:容器内路径	目的地主机路径

使用Dockerfile

构建步骤

  • 编写一个dockerFile文件
  • docker build 构建成为一个镜像
  • docker run 运行镜像
  • docker push 发布镜像(DockerHub)

Dockerfile指令说明

代码语言:javascript
复制
FROM			# 基础镜像,一切从这里开始构建
MAINTAINER		# 镜像是谁写的, 姓名+邮箱
RUN			# 镜像构建的时候需要运行的命令
ADD			# 步骤, tomcat镜像, 这个tomcat压缩包!添加内容
WORKDIR			# 镜像的工作目录
VOLUME			# 挂载的目录
EXPOSE			# 保留端口配置
CMD			# 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT		# 指定这个容器启动的时候要运行的命令, 可以追加命令
ONBUILD			# 当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令
COPY			# 类似ADD, 将我们文件拷贝到镜像中
ENV 			# 构建的时候设置环境变量!

CMD 和ENTRYPOINT区别

代码语言:javascript
复制
CMD			# 指定这个容器启动的时候要运行的命令,只有最后一个会生效可被替代
ENTRYPOINT		# 指定这个容器启动的时候要运行的命令, 可以追加命令

Docker Compose

简介

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。

描述

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack 中的 Heat 十分类似。 其代码目前在 https://github.com/docker/compose 上开源。 Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,其前身是开源项目 Fig。 我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容 器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目, 除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。 Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定 义一组相关联的应用容器为一个项目(project)。 Compose 中有两个重要的概念: 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。 Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。 Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台 支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

Docker Compose使用

Docker-compose创建容器

通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目 (project)。

yml格式描述:

  • yml文件以缩进代表层级关系
  • 缩进不允许使用tab只能使用空格
  • 空格的个数不重要,只要相同层级的元素左对齐即可(建议2个)
  • 大小写敏感
  • 数据格式为,名称:(空格)值

示例

用compose的方式管理一个Tomcat容器和MySQL:

代码语言:javascript
复制
version: '3.1'
services:
  mysql: # 服务的名称
    restart: always # 只要docker启动,容器会随着启动
    image: daocloud.io/library/mysql:5.7.6 # 指定镜像路径信息(默认官方镜像地址)
    container_name: mysql-3306 # 指定容器名称 --name
    ports:
      - 3306:3306 #指定端口号映射
    environment:
      MYSQL_ROOT_PASSWORD: root #指定MYSQL ROOT用户的密码
      TZ: Asiz/Shanghai #指定时区
    volumes:
      - /opt/docker_mysql_tomcat/mysql/data:/var/lib/mysql #映射mysql的数据目录到宿主机,保存数据
      - /opt/docker_mysql_tomcat/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
      #把mysql的配置文件映射到容器的相应目录
tomcat:
  restart: always
  image: daocloud.io/library/tomcat:8.5.15-jre8
  container_name: tomcat-8080
  ports:
    - 8080:8080
  environment:
    TZ: Asiz/Shanghai
  volumes:
    - /opt/docker_mysql_tomcat/tomcat/webapps:/usr/local/tomcat/webapps
    - /opt/docker_mysql_tomcat/tomcat/logs:/usr/local/tomcat/logs

温馨提示:本文最后更新于2023-02-28,若文件或内容有错误或已失效,请在下方留言。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年02月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在Centos上安装Docker
    • 卸载旧版本(如果有的话)
      • 安装方法
        • 设置存储库
        • 安装 Docker 引擎
        • 启动Docker
        • 通过运行hello world镜像验证是否安装成功
      • 卸载方法
        • 卸载 Docker Engine、CLI、containerd 和 Docker Compose 包:
        • 主机上的图像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷:
    • Docker的常用命令
      • 帮助命令
        • 镜像命令
          • 容器命令
            • 其他常用命令
              • 后台启动容器
              • 查看日志
              • 查看容器中的进程信息
              • 查看镜像的元数据
              • 从容器中拷贝文件到主机
          • 使用Dockerfile
            • 构建步骤
              • Dockerfile指令说明
                • CMD 和ENTRYPOINT区别
                  • Docker Compose
                    • 简介
                    • 描述
                  • Docker Compose使用
                    • Docker-compose创建容器
                    • 示例
                相关产品与服务
                容器镜像服务
                容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档