京东-优惠雷达
无畏Pro 14限量抢购
冷藏饮料节
最高12期免息再送支架
自营热卖

001-docker的基础概念

给不起的温柔 1年前   阅读数 111 0

安装

yum install docker;systemctl status docker 我们启动docker的时候,docker会帮我们创建一个docker 0的网桥

docker 基础命令

查看当前镜像 docker images 搜索镜像 docker search 执行docker search centos 会从dockerhub上搜索镜像 下载镜像 docker pull centos docker pull nginx 导出镜像 docker save -o [镜像名称] [镜像] docker save -o centos.tar centos 导入镜像 docker load --input centos.tar 删除镜像 docker rmi [docker ID IMAGE ID] docker rmi 0f3e07c0138f

root@3:/data# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos        latest              0f3e07c0138f        2 months ago        220 MB
docker.io/hello-world   latest              fce289e99eb9        11 months ago       1.84 kB

提示:如果镜像已经创建了一个容器,那么将无法进行删除

删除容器

docker rm carcat docker rm -f carcat docker run --rm centos /bin/echo "test" docker ps -a

启动容器

docker run centos docker run centos /bin/echo 'Hello Word' 我们可以看到,现在容器并没有启动。因为docker启动需要在前台启动一个进程。容器的名称可以我们指定或自动生成 提示: 管理docker容器可以通过名称也可以通过ID

查看启动容器

docker ps -a ps指的是正在运行的容器 -a 指的是显示不运行

docker的管理案例

我要新建一个testdocker的容器,它的镜像是centos 包含三个参数 容器起一个名称 -t 分配一个伪终端 -i 让docker的标准输入打开{input} docker run --name testdocker -t -i centos /bin/bash 提示:最后的/bin/bash可以省略,但是最后一个如果不是命令,那就是镜像的名称

进入容器

docker attach testdocker 这种类似于linux系统中的单用户模式 生产场景不用docker attach 用nsenter这个工具,这个工具包含在util-linux软件包里面

生产场景进入镜像的方法

root@jenkins:/data/jenkins# docker start testdocker
testdocker
root@jenkins:/data/jenkins# docker inspect -f "{{ .State.Pid }}" testdocker
120574
root@jenkins:/data/jenkins# nsenter -t 120574 -m -u -i -n -p

#每一个容器都有.State.Pid,所以这个命令除了容器的id需要我们根据docker ps -a去查找,其他的全部为固定的格式 nsenter --target上面查到的进程id --mount --uts --ipc --net --pid #输入该命令便进入到容器中

* –mount参数是进去到mount namespace中 
* –uts参数是进入到uts namespace中 
* –ipc参数是进入到System V IPC namaspace中 
* –net参数是进入到network namespace中 
* –pid参数是进入到pid namespace中 
* –user参数是进入到user namespace中

便捷进入docker环境

#!/bin/bash
docker_in(){
NAME=$1
PID=$(docker inspect -f "{{ .State.Pid }}" $NAME)
nsenter -t $PID -m -u -i -n -p
}
docker_in $1
root@jenkins:/data/docker# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b4c57453d79e        centos              "/bin/bash"         8 minutes ago       Up 7 minutes                            testdocker
e5f27a377ce8        centos              "/bin/bash"         19 minutes ago      Up 10 minutes                           abcdocker
root@jenkins:/data/docker# sh docker_in.sh testdocker
[root@b4c57453d79e /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

我们也可以不进入容器进行查看 docker exec testdocker ps -ef 提示:可以使用exec参数,不进入容器查看内容 用下面命令进入容器中 docker exec -it abcdocker /bin/bash 但是最好还是少使用exec,有可能会对容器造成一些意外的影响


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: