docker快速入门
一、安装docker
以下演示在centos7下安装docker:
##不是最新版本
yum install docker
#最新版安装
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce
查看是否安装成功:
docker version/docker info
docker服务启动停止:
service docker start|stop|restart
设置开启启动
chkconfig docker on
二、docker 安装tomcat服务并启动
1.从官网搜索tomcat镜像
docker search tomcat
2.从官网拉取tomcat镜像(OFFICIAL标记为OK的代表docker官网)
docker pull tomcat
3.运行tomcat
docker run -dit --name tomcat1 tomcat -p 8080:8080
4.测试是否成功
curl localhost:8080 或浏览器访问
三、将本地images推送到 docker hub
1.首先需要到docker官网注册docker hub的账号,创建仓库:mk-hub-docker
2.给镜像hello-world打标签1657486787/mk-hub-docker:hw001
docker tag hello-world 1657486787/mk-hub-docker:hw001
3.登录官网的hub docker,输入用户名,密码
docker login
4.推送
docker push 1657486787/mk-hub-docker:hw001
四、搭建私有仓库registry
docker search registry
pull仓库
docker pull registry
启动私有仓库
docker run -dit --name mk-reg -p 5000:5000 registry
检查是否安装成功:
curl localhost:5000/v2/_catalog
输出:{"repositories":[]} 代表安装成功
注意:私服默认只能使用https,需要配置开放http 。步骤
1.新建daemon.json
vi /etc/docker/daemon.json 内容如下:
{
"registry-mirrors":["https://registry.docker-cn.com"],
"insecure-registries":["localhost:5000"]
}
2. 重启
systemctl daemon-reload
systemctl restart docker
3.验证
查询镜像:http://localhost:5000/v2/_catalog
查询hello版本: http://localhost:5000/v2/hello/tags/list
注意:本地搭建的仓库没有设置用户密码。
五、创建自己的镜像,以centos安装nginx为例
1.先从官网拉取centos : docker pull centos
2.创建一个centos容器名字为cent并进入该系统
docker run -it --name cent centos /bin/bash
3.cent容器内安装nginx
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum search nginx
yum install -y nginx
查看nginx 在哪
whereis nginx
容器启动nginx服务
/usr/sbin/nginx
4.ctrl+q+p 退出容器,在宿主机内校验nginx是否正常
5.curl 172.17.0.3 (这个ip地址可以通过 docker inspect cent查看)
6.使用commit服务为一个nginx镜像
docker commit cent cent-ng:v1
查看是否成功docker images
7.启动nginx镜像 cent-ng:v1
docker run -it --name ng cent-ng:v1 /bin/bash
8.容器内启动nginx
/usr/sbin/nginx
9.ctrl+q+p 退出容器,在宿主机内校验nginx是否正常
curl 47.107.146.57
10.如果要再次进入cenos : docker exec -it 容器id /bin/bash
注意:现在我们希望启动容器时,直接启动nginx服务,怎么做
docker run -d --name nx2 cent-ng:v1 /usr/sbin/nginx -g "daemon off;"
nginx -g这个参数是指可以在外面添加指令到nginx的配置文件中,
daemon off是指nginx服务不运行在后端,而是在前台运行(container中的服务必须运行在前台)
六、volume文件挂载
1.启动容器data 并挂载
docker run --name data -v /opt/data -it centos /bin/bash
在宿主机查看data的信息Mounts挂载信息
docker inspect data
"Source": "/var/lib/docker/volumes/eb8316d6bc046cd87ba0ece94f5374a31adef805a1bfb97edfd314431d70c3dd/_data",
"Destination": "/opt/data",
Source代表宿主机的路径,Destination代表容器中的路径 ,他们两已经一一对应好了,也就是将容器/opt/data挂载到了宿主机
2.备份/恢复数据卷
备份:docker run --rm --volumes-from data -v $(pwd):/backup centos tar cvf /backup/data.tar /opt/data
恢复:docker run --rm --volumes-from data -v $(pwd):/backup centos tar xvf /backup/data.tar -C /
释义:
docker run --rm ----- 启动一个新的容器,执行完毕删除
--volumes-from data ------- data容器中挂载卷
-v $(pwd):/backup --------挂载当前目录到容器中为backup
cvf /backup/data.tar /opt/data --------- 备份/opt/data目录(即卷中所有的数据)为data.tar
xvf /backup/data.tar -C / ---------- 解压data.tar 到根目录/ ,因tar归档中已包含了/opt/data路径
3.删除数据卷
docker rm -v data
七、DockerFile
1.创建好名为Dockerfile的文件,内容如下:
FROM centos
#CMD echo "hello cmd"
CMD ["/bin/bash", "-c", "echo 'hello cmd!'"]
2.创建一个名为cmd的镜像
docker build -t cmd /sgy/soft/docker/dockerfile/cmd
3.使用该镜像运行一个容器
docker run -it cmd