Docker hub:
usr:yuyixiong
pw: yuyixiong
email: 900925.com
hub 查看 :https://www.runoob.com/docker/docker-repository.html
1:docker login
2: docker search
3: docker pull image_name:tag —> docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Docker:
容器管理命令:
docker container --help
eg: top, ls, rename, rm ,etc。。。。
后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
$ docker run -itd --name ubuntu-test(name) ubuntu(image) /bin/bash
停止docker
$ docker stop <容器 ID>
重启docker
$ docker restart <容器 ID>
进入容器:
docker exec eg:docker exec -it mynginx(容器ID) /bin/sh
docker attach 容器id, 退出容器终端, 会导致容器停止(不推荐)
删除容器:
docker rm -f 1e560fca3906
下载/拉取镜像:
docker pull ubuntu(image name):13.10(version)
查找镜像:
docker search 镜像名称
查看镜像:
docker images
删除镜像
docker rmi 镜像名称
创建镜像:
当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
1、从已经创建的容器中更新镜像,并且提交这个镜像
2、使用 Dockerfile 指令来创建一个新的镜像
a:创建Dockerfile
b:docker build -t runoob/centos:6.7(image name) .(dockerfile dir)
参数说明:
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
c: docker run -t -i runoob/centos:6.7 /bin/bash 使用新的镜像来创建容器
设置镜像标签:
docker tag 860c279d2fec(tag name) runoob/centos:dev(new tag)
docker tag 镜像ID,这里是 860c279d2fec ,用户名称、镜像源名(repository name)和新的标签名(tag)。
查看docker实例:
docker ps
docker ps -a --no-trunc 可以查看完整的COMMAND
export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。
你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。
快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。
docker save 保存的是镜像(image),docker export 保存的是容器(container);
docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;
docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。
问题:
docker报错:Cannot connect to the Docker daemon. Is the docker daemon running on this host?
查看docker 服务是否启动:systemctl status docker.service 然后restar一下
下载镜像:
docker pull ubuntu
docker pull ubuntu:18.04
docker pull ubuntu@sha256:82becede498899ec668628e7cb0ad87b6e1c371cb8a1e597d83a47fac21d6af3
docker pull 下来的镜像文件存放的位置: /var/lib/docker/containers/
Docket Compose:
Compose 使用的三个步骤:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
docker-compose up -d 后台执行。
docker commit :从容器创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
例1
docker commit -a “runoob.com” -m “my apache” a404c6c174a2 mymysql:v1
例2
docker commit -m "" -a "" [CONTAINER ID] [给新的镜像命名]
docker commit -m "" -a "" aa myelasticsearch:1.0
adc7d969aa15 registry.sensetime.com/viperlite/viper-lite:v2.3.0-dd32e2e-nolic-arm64-cuda10 “bash -c './bin/vide…” 22 hours ago Up 4 hours 0.0.0.0:8132->8132/tcp vps-worker-face
be14290e6cdcfec0f42d89a908f69d3ab7fb3231a14ab579799de9e0211b8b34 mysql/mysql-server:8.0-aarch64 “/entrypoint.sh --default-authentication-plugin=mysql_native_password”
mysqld --default-authentication-plugin=mysql_native_password --user=mysql
/run/mysqld/
/usr/sbin/mysqld
/lib/libssl.so.1.1
find: ‘/proc/1/task/5593/fdinfo/368’: No such file or directory
/usr/lib/aarch64-linux-gnu/libssl.so.1.1
Docker 网络:
sensetime@sensetime-desktop:/$ docker network ls
NETWORK ID NAME DRIVER SCOPE
5a25ffa22446 bridge bridge local
f47a015ec643 compose_default bridge local
0afd801763ec host host local
efda02e01096 none null local
0c4b4c164320 shisy_default bridge local
db37d9ee5bf7 viper-lite bridge local
查看某个网络的详细信息:
docker network inspect viper-lite
创建网络:
docker network create -d bridge viper-lite
sensetime@sensetime-desktop:/$ ip link show docker0 docker中默认网络的bridge
docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:e3:77:cf:b4 brd ff:ff:ff:ff:ff:ff
docker启动时, 可以通过--network来指定采用那个网络
Docker 卷与数据持久化:docker卷数据在主机的/var/lib/docker/volume目录下,持久化, 卷的数据不会因为容器被删除, 数据就会删除, 与容器的生命周期是解耦的
docker volume create
docker volume ls
docker volume insprect
docker volume prune :谨慎使用,会删除未被容器或者服务副本使用的全部卷。
docker volume rm
docker load:
docker load -i v3.0.1-20210919.all.M8.tar.gz
docker load < v3.0.1-20210919.all.M8.tar.gz
docker load : 导入使用 docker save 命令导出的镜像。
语法
docker load [OPTIONS]
OPTIONS 说明:
--input , -i : 指定导入的文件,代替 STDIN。
--quiet , -q : 精简输出信息。
Dockerfile 编写:
官网:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
菜鸟教程:https://www.runoob.com/docker/docker-dockerfile.html
ADD
ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:
ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。
CMD
类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:
CMD 在docker run 时运行。
RUN 是在 docker build。
####注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。####
1、创建一个文件夹 viper-lite,并解压到其中
2、执行install.sh
强制删除所有容器:
docker container rm -f $(docker ps -a -q)
删除所有镜像:
docker image rm -f $(docker images)
查看Docker 指定容器启动日志:
docker logs nebula-mini
license CA:
:扩容信息, 路数的视频流信息。qutoa信息。
nebula 笔记:
创建目录:/home/yuyixiong/go/gopath/src/gitlab.sz.sensetime.com/senseNebula-m/nebula-mini
make arm=1
打镜像:
1:web.zip rootfs.tar 拷贝到nebula-mini西瓜分支代码目录
2:解压unzip web.zip
3:在代码根目录(/home/yuyixiong/go/gopath/src/gitlab.sz.sensetime.com/senseNebula-m/nebula-mini)中执行:./pack.sh ./ ./web ./rootfs.tar
安装docker-compose:
https://docs.docker.com/compose/install/#install-using-pip
主要是装Nginx的教程都是centOS的,Ubuntu的完全找不到...
于是就抄着“yum -y install openssl openssl-devel”改成“apt-get install openssl openssl-devel”撸了一下...
这个原因很简单,乌班图根本没这个软件,下载下面几个就行了
sudo apt-get install libpcre3 libpcre3-dev
//有可能用到
On ubuntu 16.04 you can use official apt package without install any other ppa repository.
sudo apt install rustc
... and don't forget cargo
sudo apt install cargo
standard_init_linux.go:211: exec user process caused "exec format error"
sensetime@sensetime-desktop:/usr/local/bin$ sudo ln -s /home/sensetime/.local/bin/docker-compose /usr/local/bin/docker-compose
ln: failed to create symbolic link '/usr/local/bin/docker-compose/docker-compose': File exists
sensetime@sensetime-desktop:/usr/local/bin$ ls
docker-compose nsys
sensetime@sensetime-desktop:/usr/local/bin$ sudo rm -rf docker-compose
sensetime@sensetime-desktop:/usr/local/bin$ sudo ln -s /home/sensetime/.local/bin/docker-compose /usr/local/bin/docker-compose
sensetime@sensetime-desktop:/usr/local/bin$ docker
docker docker-compose dockerd docker-init docker-proxy
sensetime@sensetime-desktop:/usr/local/bin$ docker-compose --version
docker-compose version 1.29.2, build unknown
原理解释:
您可以docker inspect <image-id>查看一下你所docker pull下来的镜像架构("Architecture"属性),一般出现这种问题,表示镜像架构与运行时架构不匹配导致的。
单独启动一个容器 by yaml
docker-compose -f infra.yaml -p dms up -d