微服架构基础设施环境平台搭建 -(五)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详细信息,包括网络
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
# ADD 与 COPY要优先使用COPY,ADD除了复制的功能还有解压功能
# 将当前目录的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
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
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
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
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
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