微服架构基础设施环境平台搭建 -(五)Docker常用命令

微服架构基础设施环境平台搭建 -(五)Docker常用命令

本文主要列出了Docker常用的命令

微服架构基础设施环境平台搭建 系列文章


微服架构基础设施环境平台搭建 -(一)基础环境准备
微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建
微服架构基础设施环境平台搭建 -(三)Docker+Kubernetes集群搭建
微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台
微服架构基础设施环境平台搭建 -(五)Docker常用命令

目录

  • 微服架构基础设施环境平台搭建 -(五)Docker常用命令
  • 一、Docker命令
    • 1、重启docker服务
    • 2、Docker镜像操作命令
    • 3、Docker端口操作命令
    • 4、Docker挂载操作
    • 5、Docker日志操作
    • 6、Docker容器操作
  • 二、docker-compose命令
  • 三、与镜像仓库相关命令
  • 四、Dockerfile
    • 1、Dockerfile文件
    • 2、Docker镜像编译命令
    • 1、下载mysql镜像
    • 2、启动镜像
    • 3、配置mysql参数
    • 4、将my.cnf上传到mysql_5.7容器中
    • 5、重新构建新的mysql镜像文件
    • 6、重新启动新的镜像
    • 6、将打包的hxyl_mysql:5.7镜像上传Harbor私仓

一、Docker命令

下面是关与Docker常用命令,与当前部署操作无关,不需要在服务器上执行,不需要了解的可以跳过


1、重启docker服务

systemctl restart docker

2、Docker镜像操作命令

# 下载镜像
docker pull name:tag

# 查看本地已下载
docker images

# 删除镜像
docker rmi imageId

# 镜像busybox工具
docker run -it --name test-nginx2 busybox sh
docker run -it --name test-nginx2 --link test-nginx busybox sh

3、Docker端口操作命令

# 容器端口映射
docker run --name test-nginx -d -p 8080:80 nginx
# 主机网络映射,将容器的所有端口全部映射到宿主机,此方法未做宿主机与容器隔离
docker run --rm --network host --name test-nginx2 nginx

说明:


端口映射
-p [宿主机端口]:[容器里的端口],例如: -p 8080:80
-p [宿主机起始端口-宿主机结束端口]:[容器里的起始端口-容器里的结束端口],例如: -p 80-90:80-90
–rm 参数是容器退出后自动删除

4、Docker挂载操作

docker run --name test-nginx2 -d -p 8081:80 -v /data:/usr/share/nginx/html nginx

说明:


目录映射参数
-v [宿主机目录]:[容器里的目录]

5、Docker日志操作

docker logs -f test-nginx

说明:


实时输出Docker容器的日志
docker logs -f 容器ID

6、Docker容器操作

# 查看本地docker容器
docker ps -a

# 如果已经创建或通过docker run --name [容器名称] [镜像名称]启动容器而创建成功容器后,后来容器被停止后想要再重启该容器执行下面命令
# 命令格式: docker start [容器名称]/[容器ID]
docker start test-nginx
docker restart test-nginx

# 查看docker详细信息,包括网络
docker inspect test-nginx

# 进入容器执行命令
docker exec -it test-nginx sh

# 删除容器
docker rm -f test-nginx

说明:


-i 标准输入
-t 终端


二、docker-compose命令

相关操作


# 进入容器执行命令
# 构建镜像
docker-compose build .

# 启动服务
docker-compose up -d

# 停止服务、删除所有的镜像
docker-compose down --rmi all -v

# 查看日志
docker-compose logs -f

三、与镜像仓库相关命令

相关操作


# 登录
docker login 192.168.2.146

# 上传至Harbor公开仓库
docker tag nginx:latest 192.168.2.146/pub/nginx:0.0.1
docker push 192.168.2.146/pub/nginx:0.0.1

# 上传至Harbor私有仓库
# 私有仓库的上传和下载都需要先登录,公有库只有上传需要先登录
docker tag mysql:5.7 192.168.2.146/prv/mysql:0.0.1
docker push 192.168.1.146/prv/mysql:0.0.1

# 退出Harbor
docker loginout 192.168.1.146

四、Dockerfile

1、Dockerfile文件

# 制作base image 基础镜像,尽量使用官方的image作为基础镜像
FROM moxm/java:1.8-full

# 容器元信息,帮助信息,类似于注释
LABEL version="1.0"
LABEL maintainer="作者"

# 执行系统命令,每个RUN都会使镜像增加一层,所以要避免无用的分层,多条命令用反斜线换行,合成一条命令
RUN yum update && yum install -y vim \
    nginx

# 改变目录,相当于cd命令,如果目录不存在会自动创建并改变为当前目录
WORKDIR /test

# ADDCOPY要优先使用COPYADD除了复制的功能还有解压功能
# 将当前目录的app.tar.gz添加到容器/test/目录下,并解压
ADD app.tar.gz /test
# 将当前目录下复制到容器/test/目录下
COPY app.jar /test 

# 环境变量,设置一个mysql的常量
ENV MYSQL_VERSION 5.7

# 声明容器对外暴露8080端口
EXPOSE 8080

2、Docker镜像编译命令

# 执行当前目录下的Dockerfile中的编译执令,并输出为Docker镜像,名称为-t参数指定的名称
docker build -t 镜像名称 .

五、将官方mysql镜像参数修改后重新构建成新的镜像

1、下载mysql镜像

# 下载mysql5.7官方镜像
docker pull mysql:5.7
# 显示本地的所有镜像
docker images

微服架构基础设施环境平台搭建 -(五)Docker常用命令_第1张图片

2、启动镜像

# 启动mysql:5.7镜像,并以名称为“mysql_5.7”的容器运行
# 将容器的3306的端口映射到宿主机的3306端口
# 将容器的/var/lib/mysql(mysql在容器中的数据文件存放目录)
docker run -itd --name mysql_5.7 -p 3306:3306 -v /nfsdata/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

# 查看当前系统中正在运行的容器
docker ps -a

微服架构基础设施环境平台搭建 -(五)Docker常用命令_第2张图片

3、配置mysql参数

cat > my.cnf << EOF
[client] 
default-character-set=utf8mb4

[mysql]
port = 3306
default-character-set=utf8mb4
 
[mysqld]
port = 3306
default_storage_engine=InnoDB
datadir = /var/lib/mysql
character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
max_connections = 2000
max_allowed_packet = 128M
innodb_file_per_table = 1
tmp_table_size = 134217728
max_heap_table_size = 134217728

lower_case_table_names=1

log-bin = mysql-bin
max_binlog_size = 1024M
expire_logs_days = 1
log_slave_updates = 1
server-id = 1

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
EOF

4、将my.cnf上传到mysql_5.7容器中

# 将my.cnf上传到mysql_5.7容器中
docker cp my.cnf mysql_5.7:/etc/my.cnf

# 进入容器mysql_5.7的命令行
docker exec -it mysql_5.7 sh
# 查看my.cnf是否修改成功
cat /etc/my.cnf

微服架构基础设施环境平台搭建 -(五)Docker常用命令_第3张图片

5、重新构建新的mysql镜像文件

# 停止正在运行中的容器mysql_5.7
docker stop mysql_5.7
# 查看容器mysql_5.7的状态
docker ps -a

# 将一个容器进行提交成一个新的镜像副本
# docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG]
docker commit mysql_5.7 hxyl_mysql:5.7
docker images

微服架构基础设施环境平台搭建 -(五)Docker常用命令_第4张图片

6、重新启动新的镜像

# 启动hxyl_mysql:5.7镜像,并以名称为“hxyl_mysql_5.7”的容器运行
# 将容器的3306的端口映射到宿主机的3306端口
# 将容器的/var/lib/mysql(mysql在容器中的数据文件存放目录)
docker run -itd --name hxyl_mysql_5.7 -p 3306:3306 -v /nfsdata/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 hxyl_mysql:5.7

微服架构基础设施环境平台搭建 -(五)Docker常用命令_第5张图片
微服架构基础设施环境平台搭建 -(五)Docker常用命令_第6张图片

6、将打包的hxyl_mysql:5.7镜像上传Harbor私仓

说明:
关与Docker镜像私仓Harbor的搭建请参见
微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建

# 登录Harbor私仓
docker login 192.168.2.146

# 将hxyl_mysql:5.7上传至Harbor
docker tag hxyl_mysql:5.7 192.168.2.146/pub/hxyl_mysql:5.7
docker push 192.168.2.146/pub/hxyl_mysql:5.7

# 退出登录Harbor
docker logout 192.168.2.146

微服架构基础设施环境平台搭建 -(五)Docker常用命令_第7张图片
微服架构基础设施环境平台搭建 -(五)Docker常用命令_第8张图片

你可能感兴趣的:(微服务,docker,架构,运维)