docker命令大全

创建与启动容器

docker create --name test-container centos:centos7 ps -A
docker create -ti --name test-container2 centos /bin/bash

创建了两个容器 docker ps -a

创建交互式容器 docker run -it --name=mycentos centos:7 /bin/bash
创建守护式容器 docker run -di --name=mycentos2 centos:71
登录守护式进程 docker exec -it mycentos2 /bin/bash(exit退出时,容器不会停止)

容器创建并启动容器

创建并启动(run)

参数:

-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
--name :为创建的容器命名。如果不写,会自动分配一个名字(英文人名)
-v:表示目录映射关系(前者是宿主机目录,后者是容器目录,映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。(下述单独演示)
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射 (下述单独演示)

例子:run

docker run -it --name=myredis redis  # 这时就会启动redis容器并进去redis容器  
docker run -id --name=oursql mysql  # 这时就不会进入mysql容器,再后台运行

注意,docker run 镜像

使用该命令:如果本地没有,会先pull,再run

docker run -it --name=myredis redis 拉取镜像后直接进入运行redis ctrl +c退出容器 容器就停止运行了 一般需要后台运行
docker run -id --name=myredis2 redis 启动了redis 但是没有进入该容器终端 相当于后台运行 —进入容器 docker exec -it myredis2 /bin/bash-----

==========
1.在我们使用 -it 参数直接进入该容器的时候,使用exit退出的时候这个容器就会自动结束。
- 此时后台就没有该运行中的容器。

-id 进入容器退出(前台容器自动结束【后台正常运行】)

2.如果使用 -id 后台运行容器的时候,使用 docker exec进入该容器,此时使用exit退出该容器的话,只是退出该容器,并没有从后台结束该容器,该容器还会在后台运行这

==========
如何进入容器

方式1:

1.查询机器上运行的容器
docker ps
2.进入容器
docker exec -it 容器id/bin/bash
docker exec -it 427 /bin/bash

第二种:ssh连接(容器内部装ssh服务端)(不常用)

停止正在运行的容器
docker stop myredis2
启动已经运行过容器
docker start myredis2
将宿主机的d盘的hello.py文件拷贝到容器内部的home路径下
docker cp hello.py myredis2:/home
root@DESKTOP-102J1M3:/mnt/d/tomcat# docker cp index.html  4e7cbc47ba42:/home                   本地复制到容器
root@DESKTOP-102J1M3:/mnt/d/tomcat# docker cp 4e7cbc47ba42:home/2.txt /mnt/d/tomcat/   容器内容复制到本地
在myredis的home下创建文件夹 1.txt
将容器的1.txt文件拷贝到宿主机d盘  并起别名
docker cp myredis2:home/1.txt a.txt   (命令位置一定要在好   宿主机  /mnt/d)
==========重要   创建容器的时候进行挂载到宿主机    不能创建容器后再进行挂载
root@DESKTOP-102J1M3:/mnt/e# docker run -id --name=myredis3 -v /mnt/e/testMapper:/home redis

docker run --name aiyolov7 -id -v /home/tuolong/project/aiyolov7:/yolov7 -v /home/tuolong/project/dataset_aiyolo:/dataset -p 10022:22 --gpus all --ipc=host fe1c0c11f804

docker run --name aiyolov -id -v /mnt/d/yolov7/OLED_PCB:/root/yolov7  -p 10022:8008 --gpus all --ipc=host ee7eeee3486e
docker run --name aiyolov7s -id -v /dev:/root/yolov7s  -p 10023:8008 --gpus all  077f3eefbd49

 entrypoint: 'wait_run -d km_mysql:3306,km_redis:6379 -c "nohup java -Xms1024m -Xmx1024m -Xss1024m -XX:PermSize=1024m -XX:MaxPermSize=1024m -jar ./target/pcb-admin.jar"'
    restart: always
查看该容器的ip地址 docker inspect   --format='{{.NetworkSettings.IPAddress}}'  myredis3    或者docker inspect myredis3    (networking 下面的ipaddress)
进入该容器使用命令
apt-get install yum            ifconfig  查看容器的网关============没解决
删除docker rm 

将运行的容器保存为一个镜像 docker commit mysql11(运行的容器名) mysql22(更改后的镜像名)
镜像备份 root@DESKTOP-102J1M3:~# docker commit mysql11 mysql22
sha256:78ea07d28d61645e03865a5707ad114c42f139f35df999a9e38dc226d5a750f7
root@DESKTOP-102J1M3:~# docker save -o mysql22.tar mysql22
root@DESKTOP-102J1M3:~# ls
anaconda3 mysql22.tar

镜像恢复与迁移
先删除镜像 通过压缩包生成镜像
docker rmi -f mysql22 docker load -i mysql22.tar

docker file
使用脚本创建镜像
在root下创建一个jdk8文件夹  mkdir -p jdk8

将本机的jdk软件复制到文件夹下  cp /mnt/d/soft/linuxService/jdk/jdk-8u333-linux-x64.tar.gz  /root/jdk8
vi Dockerfile  放在dockerjdk8中  和压缩包在一起


powersell可以直接访问wsl系统  既ubutn系统 进行docker 
如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器
service docker start
service docker stop 
service docker status
docker info
docker version
docker --help
docker pull --help  拉去代码
docker images  查看自己服务器中docker镜像列表

搜索镜像
docker search 镜像名
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像  



拉取镜像 不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名 
docker pull 镜像名:tag
E:\CalmingVision\CalMingVision_x64\DLImage\



 docker exec -it d8be98c7f691  bash    关闭 Ctrl d


docker inspect d8be98c7f691 | grep IPAddress 查看docker 中的mysql的容器ip


sqlserver
拉取镜像
 docker pull mcr.microsoft.com/mssql/server:2022-latest
创建容器
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Password@' -p 1433:1433  --name sqlserver -d mcr.microsoft.com/mssql/server:2017-latest
启动进入容器
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=P@ssw0rd" \
   -p 1433:1433 --name sqlserver --hostname sqlserver \
   -d \
   mcr.microsoft.com/mssql/server:2022-latest



tomcat
docker pull tomcat:9.0  启动  docker run -d -p 3355:8080 --name tomcat01 tomcat    进入容器 docker exec -it tomcat01 /bin/bash    
webapps添加内容  cp  -r webapps.dist/* webapps




docker exec -it sqlserver /opt/mssql-tools/bin/sqlcmd    -S localhost -U SA -P 'P@ssw0rd'    -Q 'RESTORE DATABASE kmzsk211021 FROM DISK = "/var/opt/mssql/backup/kmzsk211021.bak" WITH MOVE "kmzsk" TO " D:\sqldata\mssql\calming.mdf", MOVE "kmzsk_log" TO "D:\sqldata\mssql\calming_log.ldf"'


拉取镜像
docker pull 624647769/logist-web:v0.1.1_beta
直接运行
docker run -it -p 8079:8000 624647769/logist-web:v0.1.1_beta

#所有镜像和容器都删除的命令
docker system prune -a

#查看镜像
docker images 

#删除单个镜像
docker rmi -f  <镜像id>

#删除所有镜像,不删除容器
docker rmi $(docker images -q)

删除容器
首先需要停止所有的容器(只停止单个时把后面的变量改为image id即可)
docker stop $(docker ps -a -q)

删除所有的容器(只删除单个时把后面的变量改为image id即可)
docker rm $(docker ps -a -q)

#查看镜像
docker images

#删除镜像名称
docker rmi 镜像ID

#查看运行中的容器
docker ps 

#查看所有容器
docker ps -a

#强制删除容器
docker rm -f 容器IDit 
docker run --name nginxs -p 8082:80 nginx
创建nginx容器
docker run --name nginxs -p 8083:80 -v /home/km/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -v /home/nginx/html:/usr/share/nginx/html -d nginx

运行容器6639accbc678
docker run --name nginx -p 8082:80 -d nginx
docker run --name nginxs -p 8082:80 -v /home/km/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -v /home/nginx/html:/usr/share/nginx/html -d nginx
docker run --name h5nginx -p 8086:80 -v /home/nginxh5/conf.d:/etc/nginx/conf.d -v /home/nginxh5/h5:/usr/share/nginx/html -d nginx

流程

一创建配置文件   在/home/nginx/conf.d/ 文件夹    再添加default.conf文件   
(listen       80;
    listen  [::]:80;
    server_name  localhost;)

二 创建容器并运行
docker run --name nginx1 -p 8084:80 -v /home/nginx/conf.d:/etc/nginx/conf.d -v /home/nginx/html:/usr/share/nginx/html -d nginx


三 修改配置服务器项目文件路径

四 重新启动
docker start 容器名

docker run \
-p 8086:80 \
--name nginxh5 \
-v /home/nginxweb/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginxweb/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginxweb/log:/var/log/nginx \
-v /home/nginxweb/html:/usr/share/nginx/html \
-d nginx



===========类别部署   先部署一个vue页面    这个直接将dist文件夹放到 home/nginxweb/html/下


重启容器 docker restart 容器id  或者 容器名称

进入容器
docker exec -it 容器id bin/bash

查看该容器的日志
docker logs 容器id /容器名
——————

docker cp kmzsk211021.bak sqlserver:/var/opt/mssql/backup
这个脚本文件怎么搞到ubuntn
df-h   进行将windows文件移动到docker中


放开文件的权限  chmod 777    default.conf


docker exec -it sqlserver /opt/mssql-tools/bin/sqlcmd    -S localhost -U SA -P 'P@ssw0rd'    -Q 'RESTORE DATABASE D2C_ShipperBoxOptimization FROM DISK = "/var/opt/mssql/backup/D2C_ShipperBoxOptimization.bak" WITH MOVE "kmzsk" TO "/var/opt/mssql/data/kmzsk.mdf", MOVE "kmzsk_log" TO "/var/opt/mssql/data/kmzsk.ldf"'

f860df7fa795
给分类加一个类型  
每次启动unbutnIP地址将变   启动容器   启动容器的软件    seqserver     docker restart 容器id  b77d8cd50d67    启动容器    docker  start  sqlserver


pip show torch 查看包位置

1.拉镜像  2.运行挂载镜像  3.查看conda4.创建conda虚拟环境4.激活环境(暂时无法进行激活新建的env)5直接下载运行项目   
1.docker pull footprintai/yolov7-objectdetector:v0.0.2
2.docker run --name aiyolov7s -id -v /mnt/d/yolov7/OLED_PCB:/root/yolov7s  -p 10023:8008 --gpus all  077f3eefbd49
3.nvidia-smi   conda -V   conda env list
4. pip install sqlalchemy -i https://pypi.mirrors.ustc.edu.cn/simple/
5. python test.py

chown -R km /opt
docker 
docker load -i cao.tar

查看docker的位置docker info | grep -i "docker root dir"
查看使用空间df -hl /var/lib/docker 
docker run --name aiyolov7tao -id   -p 10023:8008  077f3eefbd49

运行镜像
docker run --name aiyolov7tao -id   -p 10023:8008 --gpus all  077f3eefbd49



nginx
docker  search nginx
docker pull linuxserver/nginx
docker run --name nginxtest1 -id -v /mnt/d/nginxguazai:/root/nginxtest  -p 8010:80   2cc3ac828a37

docker run -id -p 8079:8080 -v /mnt/d/tomcat:/home/tomcattest --name=tomcattest1 ef6a7c98d192
docker run -d -p 8088:8080 --name tomcat111 tomcat:8.0


root@DESKTOP-102J1M3:/mnt/d/tomcat# docker cp index.html  4e7cbc47ba42:/home                    docker cp tomcat cd352a3979e8:/home/cao1/                 docker cp OLED_PCB/. f0dcf17a1227:/root/yolov7   本地复制到容器(没有-r 命令)
root@DESKTOP-102J1M3:/mnt/d/tomcat# docker cp 4e7cbc47ba42:home/2.txt /mnt/d/tomcat/   容器内容复制到本地

打包容器   
将运行的容器保存为一个镜像  docker commit mysql11(运行的容器名) mysql22(更改后的镜像名)   docker  commit f0dcf17a1227  yolov7:v1
docker commit 0f54e83d8a43 nginx:v0   
镜像备份  root@DESKTOP-102J1M3:~# docker commit nginx:v0 nginxbeifen
sha256:78ea07d28d61645e03865a5707ad114c42f139f35df999a9e38dc226d5a750f7
root@DESKTOP-102J1M3:~# docker save -ols nginxtest.tar nginx:v0
root@DESKTOP-102J1M3:~# ls
anaconda3  mysql22.tar
811 185 638   111 222
docker load -i nginxtest.tar


docker run --name nginxtest1 -id -v /mnt/d/nginxguazai:/root/nginxtest  -p 8010:80   nginx:v0
docker run -id yolov7_flask  -10222:8008 --name=yolov7test
docker run --name nginxtest2 -id  -p 8010:80   nginx:v0
打包运行挂载目录的容器为镜像
1.首先是挂载本机目录进行docker run --name nginxtest1 -id -v /mnt/d/nginxguazai:/root/nginxtest  -p 8010:80   nginx:v0
打包成镜像后的容器并没有获取到宿主机的文件内容,因此该打包的镜像没有挂载目录里面的内容
进行运行镜像(不使用挂载  将宿主机的文件移动到容器里面)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值