Docker - 容器和镜像操作

容器化方案Docker

思考
• FastDFS的安装步骤非常的多,涉及的依赖包也很多,当新的机器需要安装FastDFS时,是否需要从头开始安装。
• 在工作中,如何高效的保证开发人员写代码的开发环境与应用程序要部署的生产环境一致性。如果要部署一台新的机器,是否需要从头开始部署。
结论
• 上述思考的问题,都涉及到相同的工作是否需要重复做。
• 避免相同的工作重复做是容器化技术应用之一。
容器化方案
• Docker
• Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让我们的应用程序具备可移植性、易于构建、并易于协作。
Docker介绍
• Docker中文社区文档
• Docker 是一个开源的软件部署解决方案。
• Docker 也是轻量级的应用容器框架。
• Docker 可以打包、发布、运行任何的应用。
• Docker 就像一个盒子,里面可以装很多物件,如果需要某些物件,可以直接将该盒子拿走,而不需要从该盒子中一件一件的取。
• Docker 是一个客户端-服务端(C/S)架构程序。
• 客户端只需要向服务端发出请求,服务端处理完请求后会返回结果。

Docker 包括三个基本概念:
• 镜像(Image)
• Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
• 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了MySQL或用户需要的其它应用程序。
• 容器(Container)
• Docker容器是由Docker镜像创建的运行实例,类似VM虚拟机,支持启动,停止,删除等。
• 每个容器间是相互隔离的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
• 仓库(Repository)
• Docker的仓库功能类似于Github,是用于托管镜像的。

Docker安装(ubuntu 16.04)

.下载Filezilla 上传器,IP  用户名:密码 端口:22 连接已安装的Ubuntu, 上传文件docker.zip
 .如果已安装需要重新安装 可执行命令删除
	rm -r docker.zip
. 解压docker.zip
 	unzip docker.zip
 .解压完成后
 	cd docker
 	ls
 .读readme.txt
 	cat readme.txt

1.源码安装Docker CE
cd docker源码目录
sudo apt-key add gpg     (本地安装)
sudo dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb   (源码安装,如果出错提示进程加锁可重启)
2.检查Docker CE是否安装正确
sudo docker run hello-world
sudo docker image ls
3.启动与停止
• 安装完成Docker后,默认已经启动了docker服务。
# 启动docker
sudo service docker start
# 重启docker
sudo service docker restart
# 停止docker
sudo service docker stop

Docker镜像操作

1.镜像列表
$ sudo docker image ls
* REPOSITORY:镜像所在的仓库名称 
* TAG:镜像标签 
* IMAGEID:镜像ID 
* CREATED:镜像的创建日期(不是获取该镜像的日期) 
* SIZE:镜像大小

2.从仓库拉取镜像
# 官方镜像  (速度比较慢 可见后连接解决方案)
sudo docker image pull 镜像名称 或者 sudo docker image pull library/镜像名称
sudo docker image pull ubuntu 或者 sudo docker image pull library/ubuntu
sudo docker image pull ubuntu:16.04 或者 sudo docker image pull library/ubuntu:16.04

速度慢解决方案-->换源
xshll中安装 sudo apt install vim
新建vim文件  sudo /vim/etc/docker/daemon.json
打开daemon.json,配置
{
		"registry-mirrors" : ["https://almtd3fa.mirror.aliyuncs.com"]
}
退出后重启docker
sudo service docker restart

# 个人镜像
sudo docker image pull 仓库名称/镜像名称
sudo docker image pull ellen/fastdfs
3.删除镜像(需要先删除容器里的id,再删除镜像id)
sudo docker image rm 镜像名或镜像ID
sudo docker image rm hello-world
sudo docker image rm fce289e99eb9

删除容器id: ellen@ellen-virtual-machine:~$ sudo docker container rm 54bfc863a267
再删除镜像id: sudo docker image rm bf756fb1ae65

Docker容器操作
(所有的命令前要加sudo,否则要报权限问题。)
1.容器列表
# 查看正在运行的容器
sudo docker container ls
# 查看所有的容器
sudo docker container ls --all

2.创建容器
$ sudo docker run [option] 镜像名 [向启动容器中传入的命令]
常用可选参数说明:
* -i 表示以《交互模式》运行容器。
* -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
* --name 为创建的容器命名。
* -v 表示目录映射关系,即宿主机目录:容器中目录。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 
* -d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。 
* -p 表示端口映射,即宿主机端口:容器中端口。
* --network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。
* 
3.交互式容器
sudo docker run -it --name=ubuntu1 ubuntu /bin/bash
在容器中可以随意执行linux命令,就是一个ubuntu的环境。
当执行 exit 命令退出时,该容器随之停止。
4.守护式容器
# 开启守护式容器
sudo docker run -dit --name=ubuntu2 ubuntu
# 进入到容器内部交互环境
sudo docker exec -it 容器名或容器id 进入后执行的第一个命令
sudo docker exec -it ubuntu2 /bin/bash
如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。
在容器内部执行 exit 命令退出时,该容器也随之停止。
5.停止和启动容器
# 停止容器
sudo docker container stop 容器名或容器id
# kill掉容器
sudo docker container kill 容器名或容器id
# 启动容器
sudo docker container start 容器名或容器id
6.删除容器
• 正在运行的容器无法直接删除。
sudo docker container rm 容器名或容器id
7.容器制作成镜像
• 为保证已经配置完成的环境可以重复利用,我们可以将容器制作成镜像。
# 将容器制作成镜像
sudo docker commit 容器名 镜像名
# 镜像打包备份
sudo docker save -o 保存的文件名 镜像名
# 镜像解压
sudo docker load -i 文件路径/备份文件

安装Docker可能遇到的问题

虚拟机VMware15中安装Ubuntu18.04步骤

<https://blog.csdn.net/qq_33287871/article/details/99212352> 

Ubuntu18镜像文件

链接:https://pan.baidu.com/s/1Lr9HozYHYTZCRnnv4tI1pg 
提取码:6ht6 

Ubuntu 16.04安装docker详细步骤

<https://blog.csdn.net/jinking01/article/details/82490688> 

Xshell连接不上VM的Ubuntu18

sudo apt-get install openssh-server


在Ubuntu上安装Docker Engine(官网)

<https://docs.docker.com/engine/install/ubuntu/> 

Ubuntu:使用Docker安装FastDFS

<https://blog.csdn.net/weixin_44673477/article/details/88132623> 

Docker下载镜像太慢问题 

<https://www.cnblogs.com/spll/p/11828193.html> 

ubuntu18.04配置镜像源

<https://blog.csdn.net/qq_41822647/article/details/85122467> 

Windows的Python环境引入fdfs_client-py包遇到的问题

<https://blog.csdn.net/mingyuli/article/details/104171195> 

Fastdfs客户端ModuleNotFoundError: No module named 'mutagen._compat'问题 

<https://www.cnblogs.com/sewen-H/p/13362598.html> 



调整显示分辨率信命令:xrandr
在这里插入图片描述
现在使用的是 :
在这里插入图片描述

如果需要更改,执行命令:
在这里插入图片描述

查看当前容器:
在这里插入图片描述
查看所有容器:
在这里插入图片描述
查看镜像:
在这里插入图片描述
交互模式指定名字运行容器 退出exit
在这里插入图片描述
守护式容器 (执行守护式命令中 -dit 而交互式-it 区别是多了一个d)
执行结果与交互式不同,Up是开启,在容器内部执行exit命令退出,需要长期运行容器适合创建守护 式,如:MySQL运行
在这里插入图片描述
进入刚才创建的容器ubuntu2再退出操作
在这里插入图片描述
上面操作只是退出并未结果程序
在这里插入图片描述
停止容器 …stop id
在这里插入图片描述
删除容器 (正在操作的容器不能删除)
删除ubuntu2
在这里插入图片描述
将容器制作成镜像 (sudo docker commit 容器名 镜像名)
将容器名为ubuntu1的容器制作成镜像,镜像名ubuntu_tum01自己取
查看 sudo docker image ls 可以看到ubuntu_tum01已创建成功
在这里插入图片描述
镜像打包备份
sudo docker save -o 保存的文件名 镜像名
将上图中的ubuntu_tmp01镜像打包成ubuntu_tmp01.tar压缩文件操作
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45905671/article/details/114986590