如何使用Docker命令安装配置常用服务?

2026-04-19 10:591阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2175个文字,预计阅读时间需要9分钟。

如何使用Docker命令安装配置常用服务?

@TOC一. 什么是Docker?Docker是一个开源的应用容器引擎,开发者可以将应用及其依赖打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。

@TOC

一. 什么是Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

二. Docker安装

下面是一个通用的docker安装命令, 使用aliyun镜像下载

$ curl -fsSL get.docker.com -o get-docker.sh $ sudo sh get-docker.sh --mirror Aliyun

三. Docker常用命令

(1) 配置阿里云加速--拉取镜像时用国内的更快

$ sudo mkdir -p /etc/docker $ sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["lz2nib3q.mirror.aliyuncs.com"] // 自己的镜像加速链接 } EOF $ sudo systemctl daemon-reload $ sudo systemctl restart docker

(2) 启动docker

$ sudo systemctl enable docker $ sudo systemctl start docker

(3) 镜像相关命令

docker images // 查看docker镜像 docker pull tomcat // 拉取镜像 不加版本号则拉取最新版本 docker image rm 镜像名/image id // 删除没有运行过的容器 docker image rm -f 镜像名/image id // 强制删除容器 docker image -q // 查看所有容器的id docker image tomcat -q // 查看所有tomcat容器的id docker ps -qa // 查询所有容器的id

(4) 容器相关命令

// 运行一个容器 例如:docker run tomcat9.0 docker run 镜像名|镜像id docker stop 镜像id|容器名称 // 停止容器 docker start 镜像id|容器名称 // 开启容器 docker restart 容器id|容器名称 // 重启容器 docker pause 容器id|容器名称 // 暂停容器 docker unpause 容器id|容器名称 // 恢复容器 docker kill 镜像id|容器名称 // 杀死容器 docker rm 容器id|容器名称 // 删除已经停止的容器 docker rm -f 容器id|容器名称 // 强制删除容器 docker rm -f $(docker ps -qa) // 删除所有容器 // 查看运行的容器 docker ps // 查看所有的容器 docker ps -a // docker进入容器终端, 其中数字为容器id docker exec -it 容器id bash // 退出容器 exit // 查看容器内运行进程 docker top 容器id|容器名称 // 查看容器内细节指令 docker inspect 容器id|容器名称

(5) 容器日志相关命令

// OPTIONS为可添加的参数 docker logs [OPTIONS] 容器id或容器名 // 实时监控容器内的服务日志 docker logs -f 容器id或容器名

(6) 容器和宿主机之间的文件拷贝

// 将容器中指定文件和目录拷贝到宿主机 docker cp 容器id:容器中文件或目录 主机目录 // 将宿主机文件和目录拷贝到容器中 docker cp 主机目录 容器id:容器中文件或目录

(7) 容器数据卷机制

数据卷 Data Volume 用来实现容器中数据和宿主机中数据进行映射(同步)

第一次启动容器时需要指定

  • 使用绝对路径设置数据卷

docker run -v 宿主机绝对路径:容器内路:ro 镜像名 docker run -d --name tmocat01 -v /root/apps:/usr/local/tomcat/webapps:ro tomcate:9.0

ro: read only 如果在设置数据卷时指定ro, 代表容器内路径是只读的

  • 使用别名方式设置数据卷

docker run -v a:容器路径 docker run -v a:/usr/local/tomcat/webapps tomcat:9.0

a是docker数据卷中的别名 当这个别名在docker中存在,则直接使用, 否则自动创建, 创建的路径默认在: /var/lib/docker/volumes 使用别名方式保留容器路径原始内容, 前提别名对应路径不能存在内容

(8) 将容器打包成一个镜像

docker commit -m "webapps" -a "swei" 容器id|容器名称 镜像名:版本 -m 信息 -a 作者信息 docker commit -m "webapps" -a "swei" e77 tomcatdemo:9.0

(9) 备份镜像和恢复

  • 备份镜像

docker save 镜像名: Tag -o (镜像名-tag).tar docker save tomcat:9.0 -o /root/tomcat-9.0.tar

  • 恢复镜像

docker load -i /root/tomcat-9.0.tar

四. Docker常用服务

1. mysql服务

(1) 拉取mysql

docker pull mysql:5.6

(2) 运行mysql, 首次安装mysql需要密码

docker run -d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --name mysql01 --restart=always mysql5.6 -e MYSQL_ROOT_PASSWORD=root // 指定环境密码 --resart=always // 总是运行

(3) 使用数据卷持久化数据到宿主机

docker run -d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --name mysql01 -v /root/data:/var/lib/mysql --restart=always mysql5.6

(4) 数据库备份, 利用mysql官方命令mysqldump

// 备份数据库所有的表信息 docker exec mysql容器id sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql // 备份指定库的表 docker exec mysql容器id sh -c 'exec mysqldump --databases ems -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/ems.sql // 备份指定库中的结构 docker exec mysql容器id sh -c 'exec mysqldump --no-data --databases ems -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/ems.sql

使用navicat可以直接导出sql表数据

如何使用Docker命令安装配置常用服务?

2. redis服务

(1) 拉取redis

docker pull redis:5.0.12

(2) redis启动

docker run -d -p 6379:6379 --name redis01 --restart=always redis:5.0.12

(3) 进入redis服务

// 进入docker中redis的工作目录 docker exec -it e1 bash // 进入redis服务 redis-cli

(4) redis内存数据持久化

  1. aof持久化; redis服务器将所有redis客户端的写操作以命令方式记录到日志文件中
  2. rdb持久化: 快照redis服务器将某一时刻数据以快照文件形式写入到磁盘

docker run -d -p 6379:6379 --name redis01 -v /root/redisdata:/data --restart=always redis-server --appendonly yes redis:5.0.12 --appendonly yes // 开启持久化

(5) 自定义配置文件启动redis

  1. 下载对应版本找到配置文件 进行修改 使用完整配置文件启动
  2. 创建指定文件名称直接修改需要的属性即可
  3. 上传配置文件到宿主机指定目录: 我们指定/root/rediscnfig/redis.conf
  4. 启动redis, 将配置文件映射到容器, 并且配置为持久化文件

docker run -d -p 6379:6379 --name redis01 --restart=always -v /root/rediscfig:/data redis-server /data/redis.conf yes redis:5.0.12

注意: 外部连接时, 需要将配置文件中的bind设为bind: 0.0.0.0 但是本次配置文件为完整文件, 在日常开发中, 我们并不需要完整的配置, 所以我们需要自己配置一个部分需要的配置文件

3. nginx服务

(1) 拉取nginx

docker pull nginx:1.19.10

(2) 启动nginx

docker run -p 80:80 -d --restart=always --name nginx01 nginx:1.19.10

(3) 加载指定nginx配置启动

docker run -p 80:80 -d --restart=always --name nginx01 -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf nginx:1.19.10

  1. 实现反向代理 负载均衡

// 拷贝文件 docker cp 容器id:/etc/nginx/nginx.conf /root/nginxconf docker run -p 80:80 -d --restart=always --name nginx01 -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf nginx1.19.10

  1. nginx服务器

docker run -p 8081:80 -d --restart=always --name nginx02 -v /root/html:/usr/share/nginx/html nginx1.19.10

  1. nginx服务器和负载均衡使用

docker run -p 8081:80 -d --restart=always --name nginx02 -v /root/html:/usr/share/nginx/html -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf nginx1.19.10

五. Dockerfile使用

Dockerfile是镜像描述文件, 通过Dockerfile文件构建一个属于自己的镜像

Dockerfile命令

保留字

作用

FROM

当前镜像是基于哪个镜像的

MAINTAINER

镜像维护者的姓名和邮箱地址

RUN

构建镜像时需要运行的指令

EXPOSE

当前容器对外暴露出的端口号

WORKDIR

指定在创建容器后, 终端默认登录进来的工作目录, 一个落脚点

ENV

用来在构建镜像过程中设置环境变量

ADD

将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包

COPY

类似于ADD, 拷贝文件和目录到镜像中, 将从构建上下文目录中原路径的文件/目录复制到新的一层的镜像内的目标路径位置

VOLUME

容器数据卷, 用于数据保存和持久化工作

CMD

指定一个容器启动时要运行的命令, Dockerfile中可以有多个CMD指令, 但只有最后一个生效, CMD会被docker run之后的参数替换

ENTRYPOINT

指定一个容器启动时要运行的命令, ENTRYPOINT的目的和CMD一样, 都是在指定容器启动程序及其参数

标签:安装TOC

本文共计2175个文字,预计阅读时间需要9分钟。

如何使用Docker命令安装配置常用服务?

@TOC一. 什么是Docker?Docker是一个开源的应用容器引擎,开发者可以将应用及其依赖打包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。

@TOC

一. 什么是Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

二. Docker安装

下面是一个通用的docker安装命令, 使用aliyun镜像下载

$ curl -fsSL get.docker.com -o get-docker.sh $ sudo sh get-docker.sh --mirror Aliyun

三. Docker常用命令

(1) 配置阿里云加速--拉取镜像时用国内的更快

$ sudo mkdir -p /etc/docker $ sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["lz2nib3q.mirror.aliyuncs.com"] // 自己的镜像加速链接 } EOF $ sudo systemctl daemon-reload $ sudo systemctl restart docker

(2) 启动docker

$ sudo systemctl enable docker $ sudo systemctl start docker

(3) 镜像相关命令

docker images // 查看docker镜像 docker pull tomcat // 拉取镜像 不加版本号则拉取最新版本 docker image rm 镜像名/image id // 删除没有运行过的容器 docker image rm -f 镜像名/image id // 强制删除容器 docker image -q // 查看所有容器的id docker image tomcat -q // 查看所有tomcat容器的id docker ps -qa // 查询所有容器的id

(4) 容器相关命令

// 运行一个容器 例如:docker run tomcat9.0 docker run 镜像名|镜像id docker stop 镜像id|容器名称 // 停止容器 docker start 镜像id|容器名称 // 开启容器 docker restart 容器id|容器名称 // 重启容器 docker pause 容器id|容器名称 // 暂停容器 docker unpause 容器id|容器名称 // 恢复容器 docker kill 镜像id|容器名称 // 杀死容器 docker rm 容器id|容器名称 // 删除已经停止的容器 docker rm -f 容器id|容器名称 // 强制删除容器 docker rm -f $(docker ps -qa) // 删除所有容器 // 查看运行的容器 docker ps // 查看所有的容器 docker ps -a // docker进入容器终端, 其中数字为容器id docker exec -it 容器id bash // 退出容器 exit // 查看容器内运行进程 docker top 容器id|容器名称 // 查看容器内细节指令 docker inspect 容器id|容器名称

(5) 容器日志相关命令

// OPTIONS为可添加的参数 docker logs [OPTIONS] 容器id或容器名 // 实时监控容器内的服务日志 docker logs -f 容器id或容器名

(6) 容器和宿主机之间的文件拷贝

// 将容器中指定文件和目录拷贝到宿主机 docker cp 容器id:容器中文件或目录 主机目录 // 将宿主机文件和目录拷贝到容器中 docker cp 主机目录 容器id:容器中文件或目录

(7) 容器数据卷机制

数据卷 Data Volume 用来实现容器中数据和宿主机中数据进行映射(同步)

第一次启动容器时需要指定

  • 使用绝对路径设置数据卷

docker run -v 宿主机绝对路径:容器内路:ro 镜像名 docker run -d --name tmocat01 -v /root/apps:/usr/local/tomcat/webapps:ro tomcate:9.0

ro: read only 如果在设置数据卷时指定ro, 代表容器内路径是只读的

  • 使用别名方式设置数据卷

docker run -v a:容器路径 docker run -v a:/usr/local/tomcat/webapps tomcat:9.0

a是docker数据卷中的别名 当这个别名在docker中存在,则直接使用, 否则自动创建, 创建的路径默认在: /var/lib/docker/volumes 使用别名方式保留容器路径原始内容, 前提别名对应路径不能存在内容

(8) 将容器打包成一个镜像

docker commit -m "webapps" -a "swei" 容器id|容器名称 镜像名:版本 -m 信息 -a 作者信息 docker commit -m "webapps" -a "swei" e77 tomcatdemo:9.0

(9) 备份镜像和恢复

  • 备份镜像

docker save 镜像名: Tag -o (镜像名-tag).tar docker save tomcat:9.0 -o /root/tomcat-9.0.tar

  • 恢复镜像

docker load -i /root/tomcat-9.0.tar

四. Docker常用服务

1. mysql服务

(1) 拉取mysql

docker pull mysql:5.6

(2) 运行mysql, 首次安装mysql需要密码

docker run -d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --name mysql01 --restart=always mysql5.6 -e MYSQL_ROOT_PASSWORD=root // 指定环境密码 --resart=always // 总是运行

(3) 使用数据卷持久化数据到宿主机

docker run -d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 --name mysql01 -v /root/data:/var/lib/mysql --restart=always mysql5.6

(4) 数据库备份, 利用mysql官方命令mysqldump

// 备份数据库所有的表信息 docker exec mysql容器id sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql // 备份指定库的表 docker exec mysql容器id sh -c 'exec mysqldump --databases ems -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/ems.sql // 备份指定库中的结构 docker exec mysql容器id sh -c 'exec mysqldump --no-data --databases ems -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/ems.sql

使用navicat可以直接导出sql表数据

如何使用Docker命令安装配置常用服务?

2. redis服务

(1) 拉取redis

docker pull redis:5.0.12

(2) redis启动

docker run -d -p 6379:6379 --name redis01 --restart=always redis:5.0.12

(3) 进入redis服务

// 进入docker中redis的工作目录 docker exec -it e1 bash // 进入redis服务 redis-cli

(4) redis内存数据持久化

  1. aof持久化; redis服务器将所有redis客户端的写操作以命令方式记录到日志文件中
  2. rdb持久化: 快照redis服务器将某一时刻数据以快照文件形式写入到磁盘

docker run -d -p 6379:6379 --name redis01 -v /root/redisdata:/data --restart=always redis-server --appendonly yes redis:5.0.12 --appendonly yes // 开启持久化

(5) 自定义配置文件启动redis

  1. 下载对应版本找到配置文件 进行修改 使用完整配置文件启动
  2. 创建指定文件名称直接修改需要的属性即可
  3. 上传配置文件到宿主机指定目录: 我们指定/root/rediscnfig/redis.conf
  4. 启动redis, 将配置文件映射到容器, 并且配置为持久化文件

docker run -d -p 6379:6379 --name redis01 --restart=always -v /root/rediscfig:/data redis-server /data/redis.conf yes redis:5.0.12

注意: 外部连接时, 需要将配置文件中的bind设为bind: 0.0.0.0 但是本次配置文件为完整文件, 在日常开发中, 我们并不需要完整的配置, 所以我们需要自己配置一个部分需要的配置文件

3. nginx服务

(1) 拉取nginx

docker pull nginx:1.19.10

(2) 启动nginx

docker run -p 80:80 -d --restart=always --name nginx01 nginx:1.19.10

(3) 加载指定nginx配置启动

docker run -p 80:80 -d --restart=always --name nginx01 -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf nginx:1.19.10

  1. 实现反向代理 负载均衡

// 拷贝文件 docker cp 容器id:/etc/nginx/nginx.conf /root/nginxconf docker run -p 80:80 -d --restart=always --name nginx01 -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf nginx1.19.10

  1. nginx服务器

docker run -p 8081:80 -d --restart=always --name nginx02 -v /root/html:/usr/share/nginx/html nginx1.19.10

  1. nginx服务器和负载均衡使用

docker run -p 8081:80 -d --restart=always --name nginx02 -v /root/html:/usr/share/nginx/html -v /root/nginxconfig/nginx.conf:/etc/nginx/nginx.conf nginx1.19.10

五. Dockerfile使用

Dockerfile是镜像描述文件, 通过Dockerfile文件构建一个属于自己的镜像

Dockerfile命令

保留字

作用

FROM

当前镜像是基于哪个镜像的

MAINTAINER

镜像维护者的姓名和邮箱地址

RUN

构建镜像时需要运行的指令

EXPOSE

当前容器对外暴露出的端口号

WORKDIR

指定在创建容器后, 终端默认登录进来的工作目录, 一个落脚点

ENV

用来在构建镜像过程中设置环境变量

ADD

将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包

COPY

类似于ADD, 拷贝文件和目录到镜像中, 将从构建上下文目录中原路径的文件/目录复制到新的一层的镜像内的目标路径位置

VOLUME

容器数据卷, 用于数据保存和持久化工作

CMD

指定一个容器启动时要运行的命令, Dockerfile中可以有多个CMD指令, 但只有最后一个生效, CMD会被docker run之后的参数替换

ENTRYPOINT

指定一个容器启动时要运行的命令, ENTRYPOINT的目的和CMD一样, 都是在指定容器启动程序及其参数

标签:安装TOC