安装

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

docker 基础命令

查看当前镜像 docker images搜索镜像 docker search执行docker search centos 会从dockerhub上搜索镜像下载镜像 docker pull centosdocker 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 carcatdocker rm -f carcatdocker run --rm centos /bin/echo "test"docker ps -a

启动容器

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

查看启动容器

docker ps -aps指的是正在运行的容器-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,有可能会对容器造成一些意外的影响

12-07 10:04