Docker安装--及基本操作

Docker安装
 
1、直接添加阿里源,官方源慢
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
2、查看可用版本
yum list docker-ce --showduplicates
 
3、安装指定版本
yum -y install docker-ce-[VERSION]
安装最新版
yum -y install docker-ce
 
4、启动&开机启动
systemctl start docker
systemctl enable docker
 
5、当前版本信息
docker version
详细信息
docker info
 
6、镜像的查找
docker search centos:7
 

 
  • Docker使用C/S结构,即客户端/服务器体系结构。
  • Docker客户端与Docker服务器进行交互,Docker服务端负责构建,运行和分发Docker镜像。
  • Docker客户端和服务端可以运行在一台机器上,也可以通过RESTful,stock或网络接口与远程Docker服务端进行通信。
 
7、远程连接docker
默认情况下只能使用本机客户端连接, 如果希望远程客户端连接, 可以修改服务端启动文件:
[root@docker ~]# vim /usr/lib/systemd/system/docker.service
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker
 
客户端测试
 

* 注意, 这样会带来安全隐患!!!

暴露了2375端口的Docker主机,因为没有任何加密和认证过程,知道了主机IP以后,任何人都可以管理这台主机上的容器和镜像.
非测试开发环境如果一定要开启远程访问的话,请务必要开启需要安全认证的tcp端口.
 
 

 
 

Docker镜像(image)

 
Docker 把应用程序及其依赖,打包在 image 文件里面.只有通过这个文件,才能生成 Docker 容器.
Image 文件可以看作是容器的模板. Docker 根据 image 文件生成容器的实例. 同一个 image 文件,可以生成多个同时运行的容器实例.
 
Image 是二进制文件. 实际开发中, 一个 image 文件往往通过继承另一个 image 文件, 加上一些个性化设置而生成.
举例来说,你可以在 centos 的 image 基础上,往里面加入 Apache 服务器, 形成你的 image.
 
Image 文件是通用的, 一台机器的 image 文件拷贝到另一台机器, 照样可以使用.
一般来说, 为了节省时间, 我们应该尽量使用别人制作好的 image 文件, 而不是自己制作.
即使要定制, 也应该基于别人的 image 文件进行加工, 而不是从零开始制作.
 
为了方便共享,image 文件制作完成后,可以上传到网上的仓库 .Docker 的官方仓库 Docker Hub 是最重要、最常用的 image 仓库.
 
查看本机的image
# docker image ls
# docker images
 
获取image
# docker search centos # 此命令会在docker官方仓库查找所需镜像,速度较慢.
# docker pull centos # 从默认仓库拉取centos镜像最新版
---------------------------------------------------------------------------------------------------------
Docker加速
方法1: 修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值并重启docker.
# vim  /etc/docker/daemon.json
{
"registry-mirrors": ["https://pf5f57i3.mirror.aliyuncs.com"]
}
# systemctl daemon-reload
# systemctl restart docker
 
PS. 可以登录阿里云控制台, 搜索容器镜像服务, 来获取自己的镜像加速地址
 
方法2: 修改docker服务的启动命令:在启动时传入"--registry-mirror=xxx"参数实现
# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --registry-mirror=https://pf5f57i3.mirror.aliyuncs.com
# systemctl daemon-reload
# systemctl restart docker
---------------------------------------------------------------------------------------------------------
 
删除image
# docker image rm 镜像 #镜像指 镜像ID 或 镜像名称:tag
# docker rmi 镜像
 
查看image的详细信息
# docker inspect [选项] 镜像
 
Docker容器(container)
 
Docker 利用容器来运行应用.
容器是从镜像创建的运行实例. 它可以被启动, 开始, 停止, 删除. 每个容器都是相互隔离的、保证安全的平台.
可以把容器看做是一个简易版的 Linux 环境(包括 root 用户权限、 进程空间、用户空间和网络空间等)和运行在其中的应用程序.
*注: 镜像是只读的,容器在启动的时候创建一层可写层作为最上层.
docker容器启动后,会生成一个容器ID号,一旦容器内前台运行的程序结束后,容器就会关闭.
如果不希望容器自动结束,我们需要在容器启动时给它一个前台运行的,不会自动结束的进程.
 
查看容器
# docker ps # 查看正在运行的容器
# docker ps -a # 查看所有容器
 
启动容器
# docker run -itd -h centos.docker.qf.com --name centos centos
常用选项:
-i # 允许你对容器内的标准输入 (STDIN) 进行交互
-t # 在新容器内指定一个伪终端或终端
-d # 在后台运行容器,返回容器ID
-h # 指定容器的主机名,如果不指定,会随机生成一个
--rm # 容器停止后删除掉,默认不会删除
--name # 指定容器的名称
--network # 指定容器的网络连接方式,默认为NAT.
--ip # 指定容器的IP地址
-p <宿主端口>:<容器端口> # 端口映射,将容器指定端口映射到宿主机的指定端口. 可以用多个-p选项指定多个端口映射
-p 80 # 将容器的80端口映射到宿主机的随机端口
-P # 将容器的所有端口映射到宿主机的随机端口
-v <宿主目录>:<容器目录> #将宿主机的指定目录映射到容器的指定目录
--privileged #需要修改某些特定的参数需要加上此选项, 正常运行一个容器不建议开放这个权限
 
其他容器操作命令
# docker create [选项] 镜像 # 创建一个容器但不运行,选项基本和run命令相同
# docker ps [-a] # 查看运行的容器 [-a 所有容器]
# docker top 容器 # 查看容器的进程信息
# docker stop|start|restart|kill 容器 # 启停容器
# docker pause|unpause 容器 # 暂停|恢复容器
# docker rm 容器 # 删除容器
# docker rm `docker ps -a -q` # 删除所有容器
# docker logs 容器 # 查看容器日志
# docker cp container:src_file dst_path # 将容器中的文件复制到宿主机上
# docker cp src_file container:dst_path # 将宿主机上的文件复制到容器中
# docker inspect [选项] 容器 # 以json格式显示出容器的具体信息
 
 
连接容器
对于正在运行的容器,我们可以在宿主机上连接容器
# docker exec -it centos /bin/bash # 可用exit命令退出,不影响容器
# docker attach centos # 通过attach连接容器,使用exit退出后容器会关闭,当多个窗口同时使用该命令进入该容器时,
所有的窗口都会同步显示.如果有一个窗口阻塞了,那么其他窗口也无法再进行操作(不建议)
# 若不想退出后停止容器,可通过快捷键ctrl+pq退出
容器 ---> 镜像!!!
对容器所作的修改保存在容器中, 一旦容器被删除了, 修改也没有了.
为了永久保存, 可以将容器打包成镜像:
# docker commit -m "描述信息" 容器 镜像名[:tag]

 
 

导入导出

  • 基于镜像

导出:
[root@docker ~]# docker save centos:latest > /bak/docker-centos_latest.bak
导入:
# docker load < /bak/docker-centos_latest.bak
  • 基于容器

导出:
# docker export centos7 > /bak/docker-centos7.bak
导入:
# docker import /bak/centos7.bak centos7 #导入了镜像  import导入没有指定名称则null
!无论是基于镜像还是基于容器,最终导入的都是镜像
 
posted @ 2020-10-20 19:10  梦里花落知多少sl  阅读(255)  评论(0)    收藏  举报