基本概念
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
组件
image(镜像)
container(容器)
repository(仓库)
安装docker
[root@hjy ~]# yum -y install docker #安装docker
[root@hjy ~]# systemctl start docker #启动docker
[root@hjy ~]# systemctl status docker #查看docker的状态
镜像操作
下载,导入,保存
[root@hjy ~]# docker pull centos:7 #下载网上的镜像
[root@hjy ~]# docker load --input centos.tar #导入镜像
[root@hjy ~]# docker save -o centos:7 centos #保存镜像
查看镜像等
[root@hjy ~]# docker images #查看镜像列表
[root@hjy ~]# docker rmi ff426288ea90 删除镜像
[root@hjy ~]# docker ps -a #查看docker运行过的进程
容器操作
基本操作
[root@hjy ~]# docker run --name mydocker -t -i centos "/bin/bash" #创建一个容器,伪终端,打开标准输入
[root@hjy ~]# docker start mydocker #启动停止的容器
[root@hjy ~]# docker stop mydocker #停止启动的容器
[root@hjy ~]# docker attach mydocker #进入容器mydocker
[root@hjy ~]# docker inspect -f "{{ .State.Pid }}" mydocker #获取进程的pid
[root@hjy ~]# nsenter -t 14799 -m -u -i -n -p #进入容器里面
[root@hjy ~]# docker exec mydocker "whoami" #不进入容器执行命令
[root@hjy ~]# docker run -d nginx #把容器运行在后台
[root@hjy ~]# docker kill $(docker ps -a -q) #杀死所有容器
docker命令详解
--help #帮助
run #创建容器
--rm #运行完后删除容器
start #开始一个容器
stop #停止一个容器
kill #杀死容器
pull #推入镜像仓库
load #加载镜像
save #保存镜像
images #列表出所有镜像
rmi #删除镜像
rm #删除容器,强制删除使用-f
attach #进入一个运行的容器
inspect #查看容器运行的pid
exec #不进入容器执行命令
port #查看端口映射
ps #查看容器运行的容器
-a 是所有的容器,不加-a是显示运行的容器
-q 显示容器的id
--name #运行容器的别名
--input #导入的文件名
-t #打开一个伪终端
-i #打开标准输入
-o #打开标准输出
-d #把容器运行在后台,并输出id
-m #创建镜像时的描述
-p #随机映射端口
-p hostPort:containerPort #指定端口映射
-p ip:hostPort:containerPort #指定ip和端口映射
-p ip::containerPort #指定ip映射
-p hostPort:containerPort:udp #指定端口映射到协议端口
-v #挂载数据卷,-v src:dst
nsenter命令详解
--help 帮助
-t #运行容器的pid
-m #mnt
-i #ipc
-n #net
-u #uts
-p #pid
进入docker脚本(推荐)
[root@hjy ~]# cat docker_in.sh
#!/bin/bash
#Use nsenter to access docker
docker_in(){
NAME_ID=$1
PID=$(docker inspect -f "{{ .State.Pid }}" $NAME_ID)
nsenter -t $PID -m -u -i -n -p
}
docker_in $1
常见功能
1端口映射
[root@hjy ~]# docker run -d -P nginx #启动nginx容器,并随机映射端口
[root@hjy ~]# docker run -d -p 192.168.1.30:80:80 --name mynginx nginx
[root@hjy ~]# docker port mynginx #查看端口映射
2docker挂载宿主机的文件
[root@hjy ~]# docker run --rm -it -v /root/.bash_history:/.bash_history nginx /bin/bash
#挂载本地/root/.bash_history文件到docker的/.bash_history上
3docker挂载逻辑卷
[root@hjy ~]# docker run -d --name volume-test1 -v /data/docker-volume-nginx/:/data nginx
#挂载本地目录/data/docker-volume-nginx/到docker上/data
[root@hjy ~]# docker run -it --name volume-test50 --volumes-from volume-test1 centos /bin/bash
#挂载上面volume-test1的逻辑卷,只能读不能写,volume-test1停止了也能用
4自定义docker镜像
[root@hjy ~]# docker commit -m "My Nginx" 9e6cfa230c67 hjy/mynginx:v1
#自己创建镜像,hjy是仓库名,mynginx是镜像名,v1是版本,9e6cfa230c67是容器的id,通过容器创建镜像
[root@hjy ~]# docker run --name mynginxv1 -d -p 81:80 hjy/mynginx:v1 nginx
#启动自定义的容器
网友评论