Docker 入门笔记
DockerDocker是通过内核虚拟化技术实现的,来提供容器的资源隔离和安全保障等。基于Go语言Docker.com 官网docker的管理工具:swarm,mesos,k8s,kubernetes生产环境:1.规划2.基础镜像,centos,yum install wgetDocker组成:Docker ClientDocker ServerDocker组件镜像 Image容器 Contain
·
Docker
Docker是通过内核虚拟化技术实现的,来提供容器的资源隔离和安全保障等。
基于Go语言
Docker.com 官网
docker的管理工具:swarm,mesos,k8s,kubernetes
生产环境:
1.规划
2.基础镜像,centos,yum install wget
Docker组成:
Docker Client
Docker Server
Docker组件
镜像 Image
容器 Container
仓库 Repository
docker中国站点镜像加速https://www.docker-cn.com/registry-mirror
安装Docker
yum install -y docker
service docker start
docker images 查看docker镜像
docker pull centos 下载一个centos镜像
docker save centos > /opt/centos.tar.gz 将centos导出,一般用于转移
docker load < /opt/centos.tar.gz 镜像的导入
如果镜像创建容器,是不能被删除的
docker rm (IMAGE ID) 删除docker
测试运行docker(前提是有镜像)
docker run centos /bin/echo "hehe"
docker run -help 查看运行帮助
docker ps -a 查看正在运行的镜像
docker run --name mydocker -t -i centos /bin/bash
--name起一个名字
-t是分配一个登录终端
-i是这个容器保持打开
-t才可以登录
/bin/bash 是执行这个命令
docker search 搜索镜像
docker pull 获取镜像
docker images 查看镜像
docker rm 删除镜像
netstat -ntlp | grep docker 筛选出docker的网络进程
启动容器
docker run --name -h hostname
docker start 7f72d290fe1e
停止容器
docker stop 7f72d290fe1e
安装的插件可以让docker后台运行
nsenter
如果没有按照则执行
yum install util-linux
查看容器
docker ps -a -l
获取进程:
docker start 7f72d290fe1e
docker inspect --format "{{.State.Pid}}" 7f72d290fe1e
如果是0的话没有启动,正常启动的话会有ID
nsenter -t 19702 -u -i -n -p 19702是进程
这时exit退出,docker ps 还会看到个的进程在运行
nsenter --help 查看运行帮助
Options:
-t, --target <pid> target process to get namespaces from
-m, --mount[=<file>] enter mount namespace
-u, --uts[=<file>] enter UTS namespace (hostname etc)
-i, --ipc[=<file>] enter System V IPC namespace
-n, --net[=<file>] enter network namespace
-p, --pid[=<file>] enter pid namespace
-U, --user[=<file>] enter user namespace
-S, --setuid <uid> set uid in entered namespace
-G, --setgid <gid> set gid in entered namespace
--preserve-credentials do not touch uids or gids
-r, --root[=<dir>] set the root directory
-w, --wd[=<dir>] set the working directory
-F, --no-fork do not fork before exec'ing <program>
-Z, --follow-context set SELinux context according to --target PID
-h, --help display this help and exit
-V, --version output version information and exit
进入容器
docker exec | docker attach
删除容器
docker rm 3172730eb009
删除一个正在运行的容器(不建议)
docker rm -f 3172730eb009
容器运行完成后自动删除
docker run --rm centos /bin/echo "haha"
查看:docker ps -a
查看正在运行的docker
docker ps -a -q
docker logs 0854ccf5ad7a
查看docker logs 日志,后面跟id
退出所有正在运行的docker(生产时候不能用)
docker kill $(docker ps -a)
列出当前运行的docker ID
docker ps -a -q
docker挂载文件
docker run -it -v /opt:/opt:/opt centos
自己制作docker镜像
1,首先有基础镜像
docker pull centos
2,docker run --name mynginx -it centos
这个仓库的名字是mynginx 实在centos基础上,在直接进入仓库
3,安装nginx
4,退出docker后
docker ps -a
查看mynginx是否在运行
5,打包镜像
docker commit -m "my nginx" 8439894432 oldboyedu/mynginx:v1
输出一串字符
oldboyedu/mynginx oldboyedu是用户名,可以自定义
6,进入自己的打包
docker run -it --name nginxv1 oldboyedu/mynginx:v1
docker commit -m "my nginx" a437e5926962 oldboyedu/mynginx:v1
生成:sha256:44f08b39fa4d8d86ad8f3144d3c78a0437459f4a5d354845f3b36bed470031a2
这时候输入docker images 会发现自己生成的镜像
注意:docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d86a0ddb862 oldboyedu/mynginx:v1 "/bin/bash" About a minute ago Exited (0) 7 seconds ago nginxv1
docker run -it --name nginxv1 oldboyedu/mynginx:v1
docker start 0d86a0ddb862
docker attach 0d86a0ddb862
https://opsx.alibaba.com/mirror
https://mirrors.aliyun.com/epel/
下载:https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
执行:rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum install -y nginx
vi /etc/nginx/nginx.conf
添加:nginx设置 daemon off;
exit
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d86a0ddb862 oldboyedu/mynginx:v1 "/bin/bash" 5 minutes ago Exited (0) 3 seconds ago nginxv1
生成v2
docker commit -m "mynginx" 0d86a0ddb862 oldboyedu/mynginx:v2
sha256:cfdcce95fa69eb148c320f079c29b2204e7c5f85fad601f900ea5e12a2d5c93b
[root@iZm5e5ynf23pd7w4j5ie7xZ docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oldboyedu/mynginx v2 cfdcce95fa69 8 seconds ago 358 MB
oldboyedu/mynginx v1 44f08b39fa4d 13 minutes ago 358 MB
docker run -d -p 90:80 oldboyedu/mynginx:v2 nginx (-d 后台,-p指定端口 nginx是命令)
686f252703d4cc686902eacefa4e8438a183f2f5d06fb035c820a2efa2ee5f17
控制面板开放端口90端口
访问:ip:90 就可以打开nginx页面
netstat -ntl
查看网络端口映射
docker run -it --name volume-test1 -v /data centos
docker inspect 544d36dec210 查看挂载信息
"Mounts": [
{
"Type": "volume",
"Name": "84e4c89134c8e1275c6a8dde1fcea544cefbfe510a8bdc17934e0592273da346",
"Source": "/var/lib/docker/volumes/84e4c89134c8e1275c6a8dde1fcea544cefbfe510a8bdc17934e0592273da346/_data", //挂载到主机节点
"Destination": "/data", //目录
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
进入/var/lib/docker/volumes/84e4c89134c8e1275c6a8dde1fcea544cefbfe510a8bdc17934e0592273da346/_data 目录
创建touch 123
这时候在容器查看 :ls -l /data
也会生成:123
常用docker与主机文件输出
docker run -it --name volume-test1 -v /data centos 将文件夹共享到主机
docker run -it -v /opt:/opt centos 直接挂载目录方式
数据卷容器:一个docker访问另外一个docker的文件
docker run -d --name nfs -v /data centos //创建nfs的容器
docker run -it --name test1 --volumes-from nfs centos //创建一个test1的容器,自动进入,使用nfs里面的卷
Dockerfile构建容器
基础镜像信息
维护者信息
镜像操作指令
容器启动时执行指令
1,docker build /opt/nginx/Dockerfile 注意大写
#This docker file
#VERSION 1
#Author:Jesse
#Base image
FROM centos
#Maintainer
MAINTAINER jesse.Hao lampjesse@163.com
#Commands
RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUM yum install -y nginx
ADD index.html /usr/share/nginx/html/index.html
RUN echo "daemon off:" >> /etc/nginx/nginx.conf
EXPOSE 80
#对外的端口是80
CMD ["nginx"]
开始创建
mkdir /opt/dockerfile/nginx -p
cd /opt/dockerfile/nginx
mkdir index.html #写入测试信息
vim Dockerfile
FROM centos
#Maintainer
MAINTAINER jesse.Hao lampjesse@163.com
#Commands
RUN rpm -ivh http://xxxx.rpm RUN yum install -y nginx
ADD index.html /usr/share/nginx/html/index.html
RUN echo "daemon off:" /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx"]
保存退出
docker build -t oldboyedu/mynginx:v3 /opt/dockerfile/nginx/
Docker run -d -p 83:80 oldboyedu/mynginx:v3
构建DockerHub私有仓库,类似github
1, docker images
在目录的最下面显示docker.io/registry
默认是5000端口
docker run -d -p 5000:5000 registry
生成一串字符
测试 curl 192.168.56.11:5000/v1/search
成功的话可以访问上面
docker tag oldboyedu/mynginx:v3 192.168.56.11:5000/oldboyedu/mynginx:latest
docker push 192.168.56.11:5000/oldboyedu/mynginx:latest
有时候push不行,必须使用https
yum install -y nginx
宝塔安装测试:
docker run --name mydocker -t -i centos /bin/bash
docker run --name BTtest2 -t -i -d -p 20:20 -p 77:77 -p 21:21 -p 80:80 -p 90:22 -p 443:443 -p 3306:3306 -p 188:8888 centos /bin/bash
Docker是通过内核虚拟化技术实现的,来提供容器的资源隔离和安全保障等。
基于Go语言
Docker.com 官网
docker的管理工具:swarm,mesos,k8s,kubernetes
生产环境:
1.规划
2.基础镜像,centos,yum install wget
Docker组成:
Docker Client
Docker Server
Docker组件
镜像 Image
容器 Container
仓库 Repository
docker中国站点镜像加速https://www.docker-cn.com/registry-mirror
安装Docker
yum install -y docker
service docker start
docker images 查看docker镜像
docker pull centos 下载一个centos镜像
docker save centos > /opt/centos.tar.gz 将centos导出,一般用于转移
docker load < /opt/centos.tar.gz 镜像的导入
如果镜像创建容器,是不能被删除的
docker rm (IMAGE ID) 删除docker
测试运行docker(前提是有镜像)
docker run centos /bin/echo "hehe"
docker run -help 查看运行帮助
docker ps -a 查看正在运行的镜像
docker run --name mydocker -t -i centos /bin/bash
--name起一个名字
-t是分配一个登录终端
-i是这个容器保持打开
-t才可以登录
/bin/bash 是执行这个命令
docker search 搜索镜像
docker pull 获取镜像
docker images 查看镜像
docker rm 删除镜像
netstat -ntlp | grep docker 筛选出docker的网络进程
启动容器
docker run --name -h hostname
docker start 7f72d290fe1e
停止容器
docker stop 7f72d290fe1e
安装的插件可以让docker后台运行
nsenter
如果没有按照则执行
yum install util-linux
查看容器
docker ps -a -l
获取进程:
docker start 7f72d290fe1e
docker inspect --format "{{.State.Pid}}" 7f72d290fe1e
如果是0的话没有启动,正常启动的话会有ID
nsenter -t 19702 -u -i -n -p 19702是进程
这时exit退出,docker ps 还会看到个的进程在运行
nsenter --help 查看运行帮助
Options:
-t, --target <pid> target process to get namespaces from
-m, --mount[=<file>] enter mount namespace
-u, --uts[=<file>] enter UTS namespace (hostname etc)
-i, --ipc[=<file>] enter System V IPC namespace
-n, --net[=<file>] enter network namespace
-p, --pid[=<file>] enter pid namespace
-U, --user[=<file>] enter user namespace
-S, --setuid <uid> set uid in entered namespace
-G, --setgid <gid> set gid in entered namespace
--preserve-credentials do not touch uids or gids
-r, --root[=<dir>] set the root directory
-w, --wd[=<dir>] set the working directory
-F, --no-fork do not fork before exec'ing <program>
-Z, --follow-context set SELinux context according to --target PID
-h, --help display this help and exit
-V, --version output version information and exit
进入容器
docker exec | docker attach
删除容器
docker rm 3172730eb009
删除一个正在运行的容器(不建议)
docker rm -f 3172730eb009
容器运行完成后自动删除
docker run --rm centos /bin/echo "haha"
查看:docker ps -a
查看正在运行的docker
docker ps -a -q
docker logs 0854ccf5ad7a
查看docker logs 日志,后面跟id
退出所有正在运行的docker(生产时候不能用)
docker kill $(docker ps -a)
列出当前运行的docker ID
docker ps -a -q
docker挂载文件
docker run -it -v /opt:/opt:/opt centos
自己制作docker镜像
1,首先有基础镜像
docker pull centos
2,docker run --name mynginx -it centos
这个仓库的名字是mynginx 实在centos基础上,在直接进入仓库
3,安装nginx
4,退出docker后
docker ps -a
查看mynginx是否在运行
5,打包镜像
docker commit -m "my nginx" 8439894432 oldboyedu/mynginx:v1
输出一串字符
oldboyedu/mynginx oldboyedu是用户名,可以自定义
6,进入自己的打包
docker run -it --name nginxv1 oldboyedu/mynginx:v1
docker commit -m "my nginx" a437e5926962 oldboyedu/mynginx:v1
生成:sha256:44f08b39fa4d8d86ad8f3144d3c78a0437459f4a5d354845f3b36bed470031a2
这时候输入docker images 会发现自己生成的镜像
注意:docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d86a0ddb862 oldboyedu/mynginx:v1 "/bin/bash" About a minute ago Exited (0) 7 seconds ago nginxv1
docker run -it --name nginxv1 oldboyedu/mynginx:v1
docker start 0d86a0ddb862
docker attach 0d86a0ddb862
https://opsx.alibaba.com/mirror
https://mirrors.aliyun.com/epel/
下载:https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
执行:rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum install -y nginx
vi /etc/nginx/nginx.conf
添加:nginx设置 daemon off;
exit
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0d86a0ddb862 oldboyedu/mynginx:v1 "/bin/bash" 5 minutes ago Exited (0) 3 seconds ago nginxv1
生成v2
docker commit -m "mynginx" 0d86a0ddb862 oldboyedu/mynginx:v2
sha256:cfdcce95fa69eb148c320f079c29b2204e7c5f85fad601f900ea5e12a2d5c93b
[root@iZm5e5ynf23pd7w4j5ie7xZ docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oldboyedu/mynginx v2 cfdcce95fa69 8 seconds ago 358 MB
oldboyedu/mynginx v1 44f08b39fa4d 13 minutes ago 358 MB
docker run -d -p 90:80 oldboyedu/mynginx:v2 nginx (-d 后台,-p指定端口 nginx是命令)
686f252703d4cc686902eacefa4e8438a183f2f5d06fb035c820a2efa2ee5f17
控制面板开放端口90端口
访问:ip:90 就可以打开nginx页面
netstat -ntl
查看网络端口映射
docker run -it --name volume-test1 -v /data centos
docker inspect 544d36dec210 查看挂载信息
"Mounts": [
{
"Type": "volume",
"Name": "84e4c89134c8e1275c6a8dde1fcea544cefbfe510a8bdc17934e0592273da346",
"Source": "/var/lib/docker/volumes/84e4c89134c8e1275c6a8dde1fcea544cefbfe510a8bdc17934e0592273da346/_data", //挂载到主机节点
"Destination": "/data", //目录
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
进入/var/lib/docker/volumes/84e4c89134c8e1275c6a8dde1fcea544cefbfe510a8bdc17934e0592273da346/_data 目录
创建touch 123
这时候在容器查看 :ls -l /data
也会生成:123
常用docker与主机文件输出
docker run -it --name volume-test1 -v /data centos 将文件夹共享到主机
docker run -it -v /opt:/opt centos 直接挂载目录方式
数据卷容器:一个docker访问另外一个docker的文件
docker run -d --name nfs -v /data centos //创建nfs的容器
docker run -it --name test1 --volumes-from nfs centos //创建一个test1的容器,自动进入,使用nfs里面的卷
Dockerfile构建容器
基础镜像信息
维护者信息
镜像操作指令
容器启动时执行指令
1,docker build /opt/nginx/Dockerfile 注意大写
#This docker file
#VERSION 1
#Author:Jesse
#Base image
FROM centos
#Maintainer
MAINTAINER jesse.Hao lampjesse@163.com
#Commands
RUN rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUM yum install -y nginx
ADD index.html /usr/share/nginx/html/index.html
RUN echo "daemon off:" >> /etc/nginx/nginx.conf
EXPOSE 80
#对外的端口是80
CMD ["nginx"]
开始创建
mkdir /opt/dockerfile/nginx -p
cd /opt/dockerfile/nginx
mkdir index.html #写入测试信息
vim Dockerfile
FROM centos
#Maintainer
MAINTAINER jesse.Hao lampjesse@163.com
#Commands
RUN rpm -ivh http://xxxx.rpm RUN yum install -y nginx
ADD index.html /usr/share/nginx/html/index.html
RUN echo "daemon off:" /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx"]
保存退出
docker build -t oldboyedu/mynginx:v3 /opt/dockerfile/nginx/
Docker run -d -p 83:80 oldboyedu/mynginx:v3
构建DockerHub私有仓库,类似github
1, docker images
在目录的最下面显示docker.io/registry
默认是5000端口
docker run -d -p 5000:5000 registry
生成一串字符
测试 curl 192.168.56.11:5000/v1/search
成功的话可以访问上面
docker tag oldboyedu/mynginx:v3 192.168.56.11:5000/oldboyedu/mynginx:latest
docker push 192.168.56.11:5000/oldboyedu/mynginx:latest
有时候push不行,必须使用https
yum install -y nginx
宝塔安装测试:
docker run --name mydocker -t -i centos /bin/bash
docker run --name BTtest2 -t -i -d -p 20:20 -p 77:77 -p 21:21 -p 80:80 -p 90:22 -p 443:443 -p 3306:3306 -p 188:8888 centos /bin/bash
更多推荐
已为社区贡献5条内容
所有评论(0)