第1章 课程简介
1-4 Linux安装
$ sudo wget -qO- https://get.docker.com/ | sh
# 大写O,不是数字0
# -q简单输出
# O-到标准输出,不是到文件
# 输出给sh
$ sudo usermod -aG docker imooc
# imooc用户名
# 加入用户名进docker组,不用sudo执行
# 只有root用户可以不用该命令
# imooc必须是已有用户,否则提示usermod: user '' does not exist
$ docker info
# 查看docker装填
和课程中正常显示不一样,告警如下:
应该是docker没有正常运行
输入:
sudo service docker restart
# 或:sudo systemctl start docker
docker info
可以正常查看了:

第2章 实践第一步
2-1 docker架构介绍与实战
HOST宿主机
docker daemon(守护进程)
docker run ubuntu echo hello docker
好像安装里什么奇怪的东西:

docker run centos echo hello docker
居然也可以,但也安装了什么奇怪的东西

docker run nginx
# 在docker中运行nginx
还是提示Unable to find image ‘nginx:latest’ locally
没找到这个image,docker看本地有没有容器需要的image(镜像)
docker images
# 查看已安装的images,目前有3个

docker run -p 8080:80 -d daocloud.io/nginx
把nginx80端口映射到localhost 8080 端口
docker ps
# 查看运行的容器

curl localhost:8080
访问本地8080

当前文件夹里放index.html
<html>
<h1>docker is funny</h1>
</html>
拷贝到容器内部的地址
docker cp index.html 9957b7b796b7://usr/share/nginx/html
# CONTAINER ID 下//usr/share/nginx/html
curl localhost:8080
# 可以查看index.html
停止docker
docker stop 9957b7b796b7 # CONTAINER ID
关闭了启动nginx的容器,就无法访问

再次通过docker开启nginx
无法访问刚才的index.html
docker内的地址都时暂时的,缺省设置时关闭了不会保存
docker commit -m ‘fun’ 9957b7b796b7
其实是保存了一个images

docker commit -m ‘fun’ 9957b7b796b7 nginx-fun
#nginx-fun 是images的名字

删除images
docker rmi 9957b7b796b7
停止当前运行的容器
docker ps -a
# 显示历史运行过的docker

docker rm 9957b7b796b7 9957b7b796b7
# 去除历史运行的容器记录,多id用空格分离
命令小结


image是镜像
container容器时镜像的实例
问题,怎么通过已有镜像启动container?
第3章 Dockerfile介绍
3-1 Dockerfile介绍
通过编写简单的文件自创docker镜像
(原来是用commit保存)
$ touch Dockerfile# 默认文件名
# 在当前文件夹下创建文件
文件内容:
FORM alpine:latest
MAINTAINER username
CMD echo ‘hello docker’
docker build -t hello_docker .
# 把当前文件夹下所有文件都建成hello_docker的image
docker run image_name
# 用image 运行docker
3-2 dockerfile实战
FROM ubuntu # 基础镜像
MAINTAINER username
RUN sed -i ‘s/archive.ubuntu.com/mirrors.ustc.edu.cn/g’ /etc/apt/sources.list # 切换镜像源
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx","-g",“daemon off;”] # 给出入口,off在前台执行不是作为守护进程
EXPOSE 80
注意:1、daemon
2、分号在引号里
3、本地80端口要确保没被占用
4、镜像中端口80不要改,nginx默认80,否则监听不到
# 生成镜像
docker build -t image_name .
# 把当前文件夹下所有文件都建成hello_docker的image
docker run -d -p 80:8000 image_name
# -d 后台运行一个container
# -p -p 3307:3306 将container中的3306端口映射到主机的3307端口(本地:docker)
# 本机所有ip的3307端口都被映射到container的3306。
curl http://localhost
语法小结


3-3 镜像分层
dockerfile中每一行都产生一个新层


RO只读,确保镜像原始命令不被修改
生成容器后,容器层是可以修改的RW
本文详细介绍了Docker的安装与基本操作,包括如何使用Dockerfile自定义镜像,实现容器化部署。从Docker的安装、运行镜像、管理容器,到深入解析Dockerfile指令,如FROM、MAINTAINER、CMD等,帮助读者掌握Docker的使用技巧。
1519

被折叠的 条评论
为什么被折叠?



