创建与启动容器
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
打包成镜像后的容器并没有获取到宿主机的文件内容,因此该打包的镜像没有挂载目录里面的内容
进行运行镜像(不使用挂载 将宿主机的文件移动到容器里面)