一、安装docker
apt -get install -y docker.io //安装系统自带的docker包
Or
yum -y install docker-io
curl -s https://get.docker.com|sh //从网页下载最新版
cocker version //查看版本
service docker start //启动服务
二、制作镜像
docker images //查看本地的镜像
docker build -t minge67/my-repository:tcp4 //创建镜像
docker build -t minge67/my-repository:tcp102301 /home //指定文件夹下运行dockerfile
三、拉取镜像&启动一个指定镜像的容器
docker pull hello-world //拉取hello-world镜像
docker run hello-world //运行hello-world镜像
docker pull hub.c.163.com/library/nginx:latest //从网页上拉取最新版本的nginx镜像
docker run -d hub.c.163.com/library/nginx //后台运行nginx镜像并返回容器id
docker run <相关参数> <镜像 ID> <初始命令> //启动一个指定镜像的容器
docker run -d --name jenkins -p 8686:8686 jenkins //启动一个制定镜像的容器并映射端口,并将容器命名为jenkins
docker rename 原容器名 新容器名 //docker 重命名
docker run -d -p 8080:80 hub.c.163.com/library/nginx //将容器内的80端口映射到主机上的8080端口,nginx服务访问是经过80端口
docker run -d -P hub.c.163.com/library/nginx //开放容器内的所有端口映射到主机的一个随机端口
如下图:主机的32769端口映射到容器的80端口,主机的32768端口映射到容器的443端口。可通过访问主机上的端口来访问容器内相应的应用服务。
docker run -d -p 8080:8080 minge67/my-repository:v4 bash //启动一个指定镜像的容器,映射容器端口到宿主机端口,并执行 “ bash” 命令
docker run -i -t -v /opt/RunJAR/container1:/mnt/software/ 5182e96772bf /bin/bash
其中,相关参数包括:
- -i:表示以“交互模式”运行容器
- -t:表示容器启动后会进入其命令行
- -v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
三、查看进程
docker ps
docker exec -it containerid bash
docker stop containerid //停止docker
Which nginx //docker内部命令,查看文件路径
四、停止、删除容器
docker stop 容器id/容器名
docker rm 容器名 //删除容器,我们不能删除一个正在运行的容器,必须先docker stop或者docker kill后我们才能删除
docker rm $(docker ps -a -q) // 删除所有的容器(只删除单个时把后面的变量改为image id即可)
五、重启docker
docker restart 91d4a0b95eec(container id) //重启docker
六、获取容器IP
docker inspect controller|grep IPAddress
七、容器端口转发
a, 获取容器ip
docker inspect $container_name | grep IPAddress
b. 添加转发规则
iptables -t nat -A DOCKER -p tcp --dport $host_port -j DNAT --to-destination $docker_ip:$docker_port
eg: iptables -t nat -A DOCKER -p tcp --dport 8000 -j DNAT --to-destination 172.17.0.2:8001
c. 获取规则编号
iptables -t nat -nL --line-number
d. 根据编号删除规则
iptables -t nat -D DOCKER $num