Docker实践:CaaS
服务计算作业:Docker 容器技术
准备docker环境(win10)
- 进入控制面板-程序-启用或关闭window功能,开启Hyper-V功能
- 从官网下载docker installer
下载完之后,双击运行installer,进行安装。一路按照指引即可。安装完之后,右下角有个小船图标,右键-setting-daemon
- 安装完之后检查是否安装成功。打开命令行,输入
docker version
,出现如下情况代表安装成功。
运行第一个容器:hello-world
运行镜像
显示本地镜像库内容
常见的指令有
docker ps -a
:显示所有容器(包含已中止)docker ps
:显示运行中的容器docker restart frosty_goodall
:重启原来的容器docker attach frosty_goodall
:进入容器- 如果忘记了指令,可以使用
docker --help
获取帮助
Mysql安装
运行:docker pull mysql:5.7
查看镜像,发现已经成功安装了mysql
构建镜像并运行
创建文件夹mydock,并在该文件夹下新建dockerfile文件,内容如下
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
构建镜像并运行
docker build . -t hello
docker run -it --rm hello -H
Mysql与容器化
启动服务器:
docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
启用mysql:
docker run -it --net host mysql:5.7 "sh"
mysql -h127.0.0.1 -P3306 -uroot -proot
Docker网络
查看网络docker network ls
备制支持 ifconfig 和 ping 命令的 ubuntu 容器:docker run --name unet -it --rm ubuntu bash
启动另一个命令窗口,由容器制作镜像: docker commit unet ubuntu:net
创建自定义网络: docker network create mynet
在两个窗口创建 u1,u2 容器网络,并使用以下命令 :
~]# docker run --name u1 -it -p 8080:80 --net mynet --rm ubuntu:net bash
~]# docker run --name u2 --net mynet -it --rm ubuntu:net bash
~]# docker info u1
~]# docker network connect bridge u1
~]# docker network disconnect mynet u1
Docker仓库
常用操作有:
登陆 docker login --username=<your account> registry.cn-shenzhen.aliyuncs.com
标签 docker tag hello-world registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world
上传 docker push registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world
下载 docker push registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world
标签 docker tag registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world hello-world
删除 docker rmi registry.cn-shenzhen.aliyuncs.com/pmlpml/repo:hello-world
运行 docker run --rm hello-world
退出 docker logout registry.cn-shenzhen.aliyuncs.com
容器监控与日志
- 检查docker的状态:
docker info
- 查看容器内进程
docker top [containner]
coker stats
- 容器详细信息
命令:docker inspect [id/name]
,例如docker inspect 4749edd754a3
展示相关信息
[
{
"Id": "4749edd754a3fccbb45f8c299d55509d33daf72111af651f41bb84bf478956e9",
"Created": "2019-12-15T12:05:05.4431303Z",
"Path": "bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 3512,
"ExitCode": 0,
"Error": "",
"StartedAt": "2019-12-15T12:05:07.1230823Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:775349758637aff77bf85e2ff0597e86e3e859183ef0baba8b3e8fc8d3cba51c",
"ResolvConfPath": "/var/lib/docker/containers/4749edd754a3fccbb45f8c299d55509d33daf72111af651f41bb84bf478956e9/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/4749edd754a3fccbb45f8c299d55509d33daf72111af651f41bb84bf478956e9/hostname",
"HostsPath": "/var/lib/docker/containers/4749edd754a3fccbb45f8c299d55509d33daf72111af651f41bb84bf478956e9/hosts",
"LogPath": "/var/lib/docker/containers/4749edd754a3fccbb45f8c299d55509d33daf72111af651f41bb84bf478956e9/4749edd754a3fccbb45f8c299d55509d33daf72111af651f41bb84bf478956e9-json.log",
"Name": "/unet",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
- 查看日志
命令:docker logs [id/name]
,例如docker logs 0ebafc8005b3