From e371fd5e20ce78c9d20b7edb6ce82f52ff6dd90c Mon Sep 17 00:00:00 2001 From: Administrator <450292408@qq.com> Date: Mon, 2 Aug 2021 07:26:51 +0000 Subject: [PATCH] docs: create docker-use --- docker-use.md | 262 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 docker-use.md diff --git a/docker-use.md b/docker-use.md new file mode 100644 index 0000000..9085b86 --- /dev/null +++ b/docker-use.md @@ -0,0 +1,262 @@ +--- +title: docker的使用 +description: docker的简单使用 +published: true +date: 2021-08-02T07:26:50.035Z +tags: docker +editor: markdown +dateCreated: 2021-08-02T07:26:50.035Z +--- + +# 容器使用 + +## 拉取镜像 + +```bash +$ docker pull ubuntu +``` + + + + ## 启动新容器 + +### 交互式启动 + +```bash +$ docker run -it 镜像 /bin/bash +``` + +参数说明: + +- -i:交互式操作 +- -t:终端 +- /bin/bash:在镜像后的是命令,这里希望交互式Shell。 + +### 后台启动 + +```bash +$ docker run -itd --name 容器名称 镜像 /bin/bash +``` + +参数说明: + +- -d:默认不会进入容器 + +## 查看现有容器 + +```bash +$ docker ps -a +``` + +## 启动已经停止的容器 + +```bash +$ docker start 容器的ID或名称 +``` + +## 停止容器 + +```bash +$ docker stop 容器ID或名称 +``` + +## 重启容器 + +```bash +$ docker restart 容器ID或名称 +``` + +## 进入容器 + +### docker attach + +进入正在执行的命令行,退出后容器停止 + +```bash +$ docker attach 容器ID或名称 +``` + +### docker exec + +打开新的命令行,退出后容器不停止 + +```bash +docker exec -it 容器ID或名称 bash +``` + +## 导出容器 + +```bash +$ docker export 容器ID或名称 > 导出文件名.tar +``` + +## 导入容器 + +### 指定文件 + +```bash +$ cat 要导入的镜像.tar | docker import - 导入后的镜像名称:TAG +``` + +或 + +```bash +$ docker import - 导入后的镜像名称:TAG +``` + +### 通过URL导入 + +```bash +$ docker import http://example.com/exampleimage.tgz example/imagerepo +``` + +## 导出镜像 + +```bash +$ docker save 镜像ID或名称 > 导出名称.tar +``` + +## 导入镜像 + +```bash +$ docker load < 导入名称.tar +``` + +## 删除容器 + +```bash +$ docker rm -f 容器ID或名称 +``` + +# mongo + +## 运行容器 + +```bash +$ docker run -p 27017:27017 --name MongoDB -v /root/docker/mongo/db:/data/db -d mongo +``` + +# nginx + +## 运行容器 + +```bash +$ docker run --name Nginx1 -p 9091:80 -v /root/docker/nginx/www1:/usr/share/nginx/html -v /root/docker/nginx/conf1:/etc/nginx -d nginx +``` + +# mysql + +## 运行容器 + +```bash +$ docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 +``` + +```bash +$ docker run --name MySQL --network service -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/db/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci +``` + +说明: +1. 将MySQL加入service网络 +2. 指定了配置文件卷 +3. 指定了数据库卷 +4. 指定了ROOT用户密码 +5. 指定了utf8mb4字符集(如果用配置文件可省略) + +## 脱离my.cnf文件配置 + +```bash +$ docker run --name mysql57 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci +``` + +# nexus3 +## 创建目录并授权 +```bash +$ mkdir /root/docker/nexus/nexus-data && chown -R 200 /root/docker/nexus/nexus-data +``` +## 运行容器 +```bash +$ docker run -p 9898:8081 --name Nexus -e INSTALL4J_ADD_VM_PARAMS="-Xms200m -Xmx500m -XX:MaxDirectMemorySize=500m" -v /root/docker/nexus/nexus-data:/nexus-data -d sonatype/nexus3:latest +``` + +# 卷与数据持久化 + +## 新卷 + +```bash +$ docker volume create 卷名 +``` + +## 查看卷列表 + +```bash +$ docker volume ls +``` + +## 查看卷详情 + +```bash +$ docker volume inspect 卷名 +``` + +## 删除所有未使用的卷 + +```bash +$ docker volume prune +``` + +## 删除一个或多个 + +```bash +$ docker volume rm 卷名... +``` + +## 挂载卷 + +```bash +$ docker run --name 容器名称 -d -p 8080:80 -v 卷名或者绝对路径:/usr/share/nginx/html/ nginx:v2 +``` + +## 挂载配置文件 + +```bash +$ docker run --name 容器名称 -d -p 8080:80 -v 配置文件:/etc/nginx/nginx.conf nginx:v2 +``` + +-v 可以有多个配置 + +挂载配置文件的前提是配置文件需提前存在 + +# 拷贝 + +## 拷贝文件到容器中 + +```bash +$ docker cp /root/nginx/conf/config/conf 容器名:/etc/nginx/conf +``` + +## 从容器中拷贝出文件 + +```bash +$ docker cp 容器名:/etc/nginx/conf/config.cnf /root/nginx/conf/ +``` + +# 网络 + +## 查看网络 + +```bash +$ docker network ls +``` + +## 创建网络 + +```bash +$ docker network create 网络名称 +``` + +## 容器加入网络 + +```bash +$ docker run --network 网络名称 --network-alias 容器在网络中的别名(用于通信时直接使用) +``` \ No newline at end of file