个人docker相关笔记

`删除镜像
docker rmi -f     800294d91e31 #  可以是镜像id 或者镜像名称
进入容器内部
docker exec -it nginx /bin/bash  # nginx 位要进入的容器名称
exit   #` 退出容器内部

将镜像打包
docker save -o rabbitmq.tar rabbitmq  # rabbitmq.tar 将要指定的镜像打成 rabbitmq.tar格式,rabbitmq 是给新打的报命名
将新打的镜像包复制到宿主机上
 cp rabbitmq.tar /data/   #   /data/   是指定的目录
 在宿主机上使用docker load命令将镜像文件加载为镜像
 docker load -i rabbitmq.tar   #在宿主机上,找到具体文件具体目录下 执行命令
 
老版本的 minio
docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z
docker run -p 9002:9000 --name minio1 -di\
  -e "MINIO_ROOT_USER=minio" \
  -e "MINIO_ROOT_PASSWORD=minio" \
  -v /data/work/minio/data:/data \
  -v /data/work/minio/config:/root/.minio \
  /** 指定镜像 minio/minio:RELEASE.2021-06-17T00-10-46Z*/
  /** server /data   映射到宿主机上/data/work/minio/data 目录下的位置*/
  minio/minio:RELEASE.2021-06-17T00-10-46Z server /data
//mysql 数据库 部署
/**拉取指定版本的mysql镜像*/
docker pull mysql:5.7.30  
//初次安装
docker run -d -p 3306:3306 --name mysql --privileged=true 
// /data/work/mysql/data    是宿主机目录, /var/lib/mysql 是映射mysql容器的地址
 -v /data/work/mysql/data:/var/lib/mysql
 // 密码 , 9cfcce23593a 是mysql镜像的id,也可以镜像名称
 -e MYSQL_ROOT_PASSWORD=root 9cfcce23593a
//把配置文件复制到宿主机上  /etc/mysql/conf.d 容器内的路劲,/data/work/mysql/conf 宿主机的目录
docker cp mysql:/etc/mysql/conf.d /data/work/mysql/conf
// 给文件授权
chmod -R 755 /data/work/mysql/
//删除 刚刚创建 mysql容器 ,然后把配置文件挂载到宿主机上   ##容器创建的时候把注释去掉
docker run -p 3306:3306 --name mysql --restart always \
//把配置文件挂载指定目录
-v /data/work/mysql/conf/conf.d:/etc/mysql/conf.d \
//把日志挂载出来
-v /data/work/mysql/logs:/logs \
-v /data/work/mysql/data:/var/lib/mysql \
-v --privileged=true \
-e MYSQL_ROOT_PASSWORD=123自己设置数据库登录密码 -d 9cfcce23593a

/**redis用docker部署*/
//下载的redis镜像是没有redis.conf (我是没有找到),我是在linux下载 
[root@hecs-284005 ~]#  wget https://download.redis.io/releases/redis-6.2.6.tar.gz
//解压   
[root@hecs-284005 ~]#  tar -zxvf redis-6.2.6.tar.gz 
 // 进入目录 把 redis.conf  复制到宿主机指定目录下。  ../  是当前目录的上一级目录
[root@hecs-284005 ~]#  cp redis.conf ../../data/work/redis/conf
 //然后删除下载的redis-6.2.6.tar.gz
[root@hecs-284005 ~]#  rm -rf  redis-6.2.6.tar.gz
//拉取redis镜像
[root@hecs-284005 ~]#  docker pull redis:6.2.6
//用镜像创建容器
docker run -p 6399:6379 --name redis --sysctl net.core.somaxconn=1024 \
-v /data/work/redis/data:/data \
-v /data/work/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai" \
-d --restart=always 3c3da61c4be0 redis-server /usr/local/etc/redis/redis.conf \
--appendonly yes

    docker run: Docker的命令,用于启动一个新的容器。
    -p 6399:6379: 端口映射设置。它将容器内部的6379端口映射到宿主机的6399端口。
    --name redis: 为容器指定一个名称,这里命名为“redis”。
    --sysctl net.core.somaxconn=1024: 这是Linux的一个内核参数设置,用于增加系统调用队列的大小。这对于高并发的Redis服务器可能是有用的。
    -v /data/work/redis/data:/data: 卷映射设置。它将宿主机上的/data/work/redis/data目录映射到容器内的/data目录。这意味着你可以在宿主机上持久化Redis的数据。
    -v /data/work/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf: 将宿主机上的配置文件redis.conf映射到容器内的相应位置,从而允许你使用自定义的配置文件。
    -e TIME_ZONE="Asia/Shanghai" -e TZ="Asia/Shanghai": 环境变量设置,用于设置时区为上海。
    -d: 在后台运行容器。
    --restart=always: 容器总是会在退出后自动重启。
    3c3da61c4be0: 这是Docker镜像的ID或名称。在这里,它指向一个名为“redis-server”的Docker镜像,并使用ID 3c3da61c4be0来指定具体的镜像版本。
    redis-server /usr/local/etc/redis/redis.conf --appendonly yes: 这是容器启动时要执行的命令。这里,它启动Redis服务器并使用前面映射的自定义配置文件。--appendonly yes参数表示Redis将数据追加写入到一个持久化的日志文件中,这提供了数据持久化的功能。

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2cf613483f9f41e7932cf6f3a69fa1ba.png#pic_center)

 #出错解决
 1.
 //在Linux服务的/etc/sysctl.conf 添加 net.core.somaxconn = 1024  添加保存退出后,执行sysctl -p,才起作用,用root权限操作
 net.core.somaxconn = 1024 
 //我的不起作用,docker run -p 6399:6379 --name redis **--sysctl net.core.somaxconn=1024 \**
//所以我在创建容器的时候加  --sysctl net.core.somaxconn=1024 \  解决问题

2.将vm.overcommit_memory = 1添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置
[root@hecs-284005 ~]# cd etc
[root@hecs-284005 etc]#   vim  sysctl.conf
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2e3f424835c74e949fe73e5813505f5c.png)

3.echo never > /sys/kernel/mm/transparent_hugepage/enabled 写入到 /etc/rc.local 中
[root@hecs-284005 etc]#   vim  sysctl.conf
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1f0be8087c594fbabffcf688c94b073d.png)
//当配置好的时候访问redis数据库时 ping不同的时候需要修改redis.conf配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f5f9be2418fb46219f3997f0e3f53bf5.png)
4.bind
bind指令。默认情况下,它可能设置为bind 127.0.0.1,这意味着Redis只监听本地回环地址
如果你想要Redis监听特定的IP地址,可以将bind指令设置为你希望监听的IP地址。例如,如果你想让Redis监听所有网络接口,可以注释掉bind指令(在行首加上#),或者将其设置为bind 0.0.0.05.设置密码
//给redis设置密码
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2e4208da766e47eca82ea62a74014172.png)
    打开redis.conf文件。
    查找requirepass指令。默认情况下,它可能是被注释掉的(前面有#)。
    取消注释requirepass指令(删除行首的#),并在其后面设置你想要的密码。例如:requirepass yourpassword。
    保存并关闭配置文件。
    重新启动Redis服务器以使更改生效。
    
    ##nginx用docker部署
docker run --name nginx -p 80:80 -p 443:443  -v /data/work/nginx/html:/usr/share/nginx/html  -v /data/work/nginx/nginx.conf:/etc/nginx/nginx.conf  -v /data/work/nginx/logs:/var/log/nginx -d f9c14fe76d50
//静态文件   访问text目录下的图片 http://ip/text/1704799555403.jpg  #-v /data/work/nginx/html 在宿主机映射的位置,text是html下的目录
-v /data/work/nginx/html:/usr/share/nginx/html  
//是nginx的配置文件,要提前把nginx.conf文件放在宿主机指定的目录里
-v /data/work/nginx/nginx.conf:/etc/nginx/nginx.conf 

#gitlab用docker部署
//拉取镜像
docker pull gitlab/gitlab-ce
//创建容器
docker run -itd  \
 -p 9980:80 \
 -p 9922:22 \
 -v /opt/soft/docker/gitlab/etc:/etc/gitlab  \
 -v /opt/soft/docker/gitlab/log:/var/log/gitlab \
 -v /opt/soft/docker/gitlab/opt:/var/opt/gitlab \
 --restart always \
 --privileged=true \
 --name gitlab \
 gitlab/gitlab-ce

命令解释
-i	 以交互模式运行容器,通常与 -t 同时使用命令解释
-t	 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d	 后台运行容器,并返回容器ID
-p 9980:80	将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
-p 9922:22	将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
-v /opt/soft/docker/gitlab/etc:/etc/gitlab	将容器/etc/gitlab目录挂载到宿主机/opt/soft/docker/gitlab/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
--restart always	容器自启动
--privileged=true	让容器获取宿主机root权限
--name gitlab	设置容器名称为gitlab
gitlab/gitlab-ce	镜像的名称,这里也可以写镜像ID





你可能感兴趣的:(docker,笔记,容器)