安装
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,有可能会对容器造成一些意外的影响