docker容器概念:docker的容器创建需要先拉取镜像,比如创建一个Ubuntu容器:
有了Ubuntu镜像后,开始通过镜像创建Ubuntu容器
-it是通过前台交互式进行创建,--name给容器指定名字,/bin/bash创建容器后,返回容器内命令行操作
现在就在容器内操作。
退出容器分为两种,一个是exit直接退出,并关闭容器,另一个是Ctrl+p+q来退出容器,后台运行容器。
后台式启动容器
查看所有容器 docker ps -a
已后台方式启动 docker run -d Ubuntu
容器启动后需要操作容器内部
进入容器内部:docker exec -it 容器id /bin/bash
退出:exit ,可以看到容器依然存活
另外一种命令进入容器
可以看到以attach方式进入容器操作后退出,容器将停止运行,推荐使用docker exec -it 容器id
容器的内容复制到宿主机和容器复制宿主机
首先我们启动刚才停掉的容器(Ubuntu)
然后我们将容器的a.txt文件复制到宿主机
这样就将容器Ubuntu里面的a.txt复制了出来
将容器打包成镜像并发布到阿里云
在docker hub 上的Ubuntu没有vim命令,我们安装相关cmd后,通过
docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]
将添加了vim命令的Ubuntu打包成新镜像,再通过登录阿里云,进入选择控制台,进入容器镜像服务,选择个人实例-命名空间-仓库名称,进入管理界面获得脚本,然后通过阿里云指示的脚本命令将打包的新Ubuntu镜像发布到阿里云registry。
将添加ifconfig命令的新容器打包成新镜像,并发布到私有库
通过 docker pull registry 从docker hub 拉取私有库
运行docker hub 拉取的原始Ubuntu,原始Ubuntu的系统没有ifconfig命令,安装ifconfig命令后,通过docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]]将容器打包成新镜像。
验证私服是否有镜像
curl -XGET http://192.168.111.162:5000/v2/_catalog
使用命令将jzqubuntu:1.2修改为符合私服的
docker tag jzqubuntu:1.2 192.168.111.162:5000/jzqubuntu:1.2
因为docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。====> 修改完后如果不生效,建议重启docker
vim /etc/docker/daemon.json
{
//阿里云
"registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.111.162:5000"]
}
然后推送到私服库
docker push 192.168.111.162:5000/jzqubuntu:1.2
验证是否推送成功
curl -XGET http://192.168.111.162:5000/v2/_catalog
显示{"repositories":["jzqubuntu"]}则表示推送到私服库成功
推送成功后,我们拉取到本地再测试一下
docker pull 192.168.111.162:5000/jzqubuntu:1.2