一、docker常用语句
1.进入docker容器
docker ps -a #查看所有在运行的容器
docker exec -it 775c7c9ee1e1 /bin/bash #775c7c9ee1e1为容器ID
2.从docker容器中退出

对于直接使用exit和快捷 方式(Ctrl+D)退出的容器,如果还想重新启动,需要使用命令 docker start 容器id或容器名称
3.docker run命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- –name=“nginx-lb”: 为容器指定一个名称;
- –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h “mars”: 指定容器的hostname;
- -e username=“ritchie”: 设置环境变量;
- –env-file=[]: 从指定文件读入环境变量;
- –cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
- **-m 😗*设置容器使用内存最大值;
- –net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- –link=[]: 添加链接到另一个容器;
- –expose=[]: 开放一个端口或一组端口;
- –volume , -v: 绑定一个卷
- –restart参数,故障处理,支持三种逻辑实现:
</pre><pre name="code" class="html">no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
实例:redis
docker run --name redis-server --restart=always -p 6379:6379 -v /mnt/data/docker/redis/data:/data -d redis redis-server --appendonly yes
参数说明:
--name redis-server 容器名redis-server
--restart=always 遇到故障总是重启
-p 6379:6379 端口映射,主机端口6379,容器端口6369
-v /mnt/data/docker/redis/data:/data 映射数据目录 , 宿主机文件/目录:容器里对应的文件/目录。其中,宿主机上的文件/目录是要提前存在的,容器里对应的文件/目录会自动创建。
-d redis redis-server 后台运行
--appendonly yes:开启持久化
实例:rabbit
docker run -d --name rabbitmq-server --restart=always -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:3-management
参数说明:
-d 后台运行
--name 容器名称
-e RABBITMQ_DEFAULT_USER=admin 设置环境变量,初始用户名:admin
-e RABBITMQ_DEFAULT_PASS=123456 设置环境变量, 初始密码:123456
镜像名:rabbitmq 标签名为:3-management
实例:minio
docker run -d -p 9001:9001 -p 9002:9002 --restart=always --name minio-server -v /mnt/data/docker/minio/data:/data -v /mnt/data/docker/minio/config:/root/.minio -e MINIO_ROOT_USER=adminadmin -e MINIO_ROOT_PASSWORD=123456123456 minio/minio server --address :9001 --console-address :9002 /data
参数说明:
--name 容器名称
-d 后台运行*
-e 环境变量 MINIO_ROOT_USER 用户名 MINIO_ROOT_PASSWORD 密码(设置密码时候注意长度 否则会抛出 Access key length should be at least 3, and secret key length at least 8 characters)
-v 挂载持久化数据和配置文件
server作为minio子命令,而/data作为其参数,参见官方文档
http://docs.minio.org.cn/docs/master/minio-docker-quickstart-guide
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmrQmyjC-1637574367292)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211122145832449.png)]
实例:mysql
docker run --name mysql-server --restart=always -v /mnt/data/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -d -p 3306:3306 mysql:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
参数说明:
--name 容器名
-v 挂载储存卷 将容器内的/var/lib/mysql目录挂载到宿主机的/mnt/data/docker/mysql/data目录 也可以自己指定路径如
-v /usr/app/mysql/data:/var/lib/mysql
-e 环境变量 MYSQL_ROOT_PASSWORD ROOT密码
-d 后台运行
-p 宿主机与容器的端口映射 主机端口:容器端口
--character-set-server 字符集
--collation-server 排序规则
实例:nacos
docker run --restart=on-failure:3 --name nacos-server -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=mysql-server -e MYSQL_SERVICE_DB_NAME=ry-config -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=123456 -e MYSQL_SERVICE_PORT=3306 -p 8848:8848 -p 9848:9848 -p 9849:9849 -d --network=ruoyi-network nacos/nacos-server
参数说明:
--restart=on-failure:3 容器故障退出(返回值非零)时重启,且最大容忍3次;
--network=ruoyi-network 配置网络为ruoyi-network ()有服务发现及服务间相互调用问题 在Docker中我们不能使用IP地址,因为每次重新启动Docker将重新分配IP,所以我们使用容器的名称做连接地址 如mysql-server那么我们在配置之后就可以将mysql的ip换成mysql-server,在同一个network中他们是可以访问到的,也就是说我们可以新建一个network 在docker run 时候加上 --network 最后命令看起来可能是这样的 **docker run -d -p 80:80 --name=ruoyi-ui --network=ruoyi-network 我们在同一个项目中将所有服务都划分到一个network中使其能相互访问)
#创建 network
docker network create ruoyi-network
#此操作可行,nacos可用
docker run --name JCXX_nacos --network host -p 8848:8848 --restart always -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:latest
4.dockerfile命令
注意文件名为Dockerfile
命令详见 https://www.cnblogs.com/dazhoushuoceshi/p/7066041.html
实例
#进入创建的 python 目录,创建 Dockerfile
#以buildpack-deps:jessie为基础镜像
FROM buildpack-deps:jessie
# 删除旧的 python
#RUN 执行后面跟着的命令行命令
#apt-get remove 会删除软件包而保留软件的配置文件
#apt-get purge 会同时清除软件包和软件的配置文件
RUN apt-get purge -y python.*
# 使用 UTF-8 编码
#ENV 设置环境变量
ENV LANG C.UTF-8
ENV PYTHON_VERSION 3.6.5
# if this is called "PIP_VERSION", pip explodes with "ValueError: invalid truth value '<VERSION>'"
ENV PYTHON_PIP_VERSION 10.0.1
#set 设置shell
#curl 从链接下载文件
#make
#用&& 符号连接命令,这样执行后,只会创建 1 层镜像;
RUN set -ex \
&& curl -fSL "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz \
&& mkdir -p /usr/src/python \
&& tar -xJC /usr/src/python --strip-components=1 -f python.tar.xz \
&& rm python.tar.xz \
\
&& cd /usr/src/python \
&& ./configure --enable-shared --enable-unicode=ucs4 \
&& make -j$(nproc) \
&& make install \
&& ldconfig \
&& pip3 install --no-cache-dir --upgrade --ignore-installed pip==$PYTHON_PIP_VERSION \
&& find /usr/local -depth \
\( \
\( -type d -a -name test -o -name tests \) \
-o \
\( -type f -a -name '*.pyc' -o -name '*.pyo' \) \
\) -exec rm -rf '{}' + \
&& rm -rf /usr/src/python ~/.cache
# make some useful symlinks that are expected to exist
RUN cd /usr/local/bin \
&& ln -s easy_install-3.5 easy_install \
&& ln -s idle3 idle \
&& ln -s pydoc3 pydoc \
&& ln -s python3 python \
&& ln -s python3-config python-config
CMD ["python3"]
在 Dockerfile 文件的存放目录下,执行构建动作。
#bulid -t **:** 构建镜像名称:tag
#最后的 . 代表本次执行的上下文路径.不可少
docker build -t python:3.10 .
5.docker停止命令
#停止docker中容器
docker stop 容器ID
#停止docker服务
systemctl stop docker
# 重启docker
systemctl restart docker
6.docker logs命令
docker logs : 获取容器的日志
docker logs [OPTIONS] CONTAINER
OPTIONS说明:
- -f : 跟踪日志输出
- **–since 😗*显示某个开始时间的所有日志
- -t : 显示时间戳
- **–tail 😗*仅列出最新N条容器日志
7.docker 删除容器命令
#root用户删除容器
docker rm 容器名称
#非root用户删除容器
sudo docker rm 容器名称
8.docker create network命令
docker network create命令用于创建一个新的网络连接;
docker network create [OPTIONS] NETWORK
选项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cjKNzBm3-1637574367294)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211122153259916.png)]
二、docker安装Rabbitmq时的问题
安装rabbitmq访问不了web管理页面,访问被拒绝;
首先确定服务是运行的,端口是正常监听的,防火墙也是开放了端口的
#查看容器的端口映射情况,在容器外执行
docker port 容器ID 或者 docker port 容器名称
#查找要修改容器的容器Id
#docker inspect 获取容器/镜像的元数据
docker inspect f244 |grep Id
进入到该容器中运行以下语句
rabbitmq-plugins enable rabbitmq_management
此命令会启动三个插件,然后就可以正常访问了.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVRjX2ld-1637574367295)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211122141639289.png)]
三、Linux系统的常用命令
1.防火墙相关
#查看防火墙状态
systemctl status firewalld
#开启防火墙
systemctl start firewalld
#关闭防火墙
systemctl stop firewalld
#开启防火墙
service firewalld start
#禁止开机启动防火墙
systemctl disable firewalld.service
2.netstat 命令
用于显示网络状态
#查看相应端口的服务是否启动成功
netstat -tunlp | grep 8848
经常用**netstat -tunlp**查看端口占用情况,tunlp是什么意思呢?
t:表示查看tcp
u:表示查看udp
n:表示端口以数字形式表示,没有n直接显示服务名。
l:表示显示所监听的端口
p:表示占用端口的进程
防火墙
systemctl stop firewalld
#开启防火墙
service firewalld start
#禁止开机启动防火墙
systemctl disable firewalld.service
### 2.netstat 命令
用于显示网络状态
```shell
#查看相应端口的服务是否启动成功
netstat -tunlp | grep 8848
经常用**netstat -tunlp**查看端口占用情况,tunlp是什么意思呢?
t:表示查看tcp
u:表示查看udp
n:表示端口以数字形式表示,没有n直接显示服务名。
l:表示显示所监听的端口
p:表示占用端口的进程
本文详细介绍了Docker常用命令,包括如何进入和退出容器,`docker run`命令的各种选项,以及通过实例展示了如何部署Redis、Rabbitmq、Minio、MySQL和Nacos。还提到了在安装Rabbitmq时遇到的问题及其解决方法,以及Linux系统中的防火墙和`netstat`命令的使用。
326

被折叠的 条评论
为什么被折叠?



