Docker简易使用手册

1. Docker介绍

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

2. Docker的安装(ubuntu 16.04)

1. 安装Docker CE
  • 本地安装:
$ cd docker源码目录
$ sudo apt-key add gpg
$ sudo dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
  • 在线安装:
# 查看支持的docker版本
$ apt-cache madison docker-ce
# 安装docker
$ apt-get install docker-ce -y
2. 检查Docker CE是否安装正确
$ sudo docker run hello-world
3. 启动与停止
  • 安装完成Docker后,默认已经启动了docker服务。
# 启动docker
$ sudo service docker start
# 重启docker
$ sudo service docker restart
# 停止docker
$ sudo service docker stop
# 查看状态
$ sudo service docker status
4. docker基本目录简介
/etc/docker/            docker的认证目录
/var/lib/docker/        docker的应用目录

3. Docker镜像操作

它是一个只读的文件,就类似于我们安装操作系统时候所需要的那个iso光盘镜像。

这里的镜像就是一个能被docker运行起来的一个程序。

容器的部署依赖于镜像,但运行也依赖镜像。就像某些软件运行必须放光盘。

1.镜像列表
$ sudo docker search ubuntu # 搜索镜像
$ sudo docker image ls # 查看在运行的镜像
$ sudo docker image ls -all # 查看全部镜像
$ sudo docker images # 查看全部镜像
* REPOSITORY:镜像所在的仓库名称 
* TAG:镜像标签 
* IMAGEID:镜像ID 
* CREATED:镜像的创建日期(不是获取该镜像的日期) 
* SIZE:镜像大小
2.从仓库拉取镜像
# 从官方仓库中拉取镜像
$ sudo docker image pull 镜像名称
$ sudo docker image pull library/镜像名称
$ sudo docker image pull ubuntu:16.04 
$ sudo docker image pull library/ubuntu:16.04

# 从私有仓库中拉取镜像
$ sudo docker image pull 仓库名称/镜像名称
$ sudo docker image pull itcast/fastdfs

# 从镜像文件中导入镜像
$ sudo docker load -i 文件路径/备份文件
$ sudo docker load -i elasticsearch-ik-2.4.6_docker.tar
$ sudo docker load < nginx.tar
3. 镜像重命名
$ sudo docker tag [old_image]:[old_version] [new_image]:[new_version]
$ sudo docker tag nginx:latest sswang-nginx:v1.0
4. 删除镜像
$ sudo docker rmi [image_id/image_name:image_version]
$ sudo docker rmi 3fa822599e10
$ sudo docker image rm 镜像名或镜像ID
$ sudo docker image rm hello-world

4. Docker容器操作

容器就类似于我们运行起来的一个操作系统,而且这个操作系统启动了某些服务。
这里的容器指的是运行起来的一个Docker镜像。

1.容器列表

# 查看正在运行的容器
$ sudo docker container ls
# 查看所有的容器
$ sudo docker container ls --all
$ sudo docker ps

2.创建容器

$ sudo docker run [option] 镜像名 [向启动容器中传入的命令]
常用可选参数说明:
* --name 为创建的容器命名。
* -i 表示以《交互模式》运行容器。
* -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
* -v 表示目录映射关系,即宿主机目录:容器中目录。
     注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 
* -d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。 
* -p 表示端口映射,即宿主机端口:容器中端口。
* --network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。
# 新建 tracker 容器并将 运行目录 映射到宿主机的 /var/fdfs/tracker目录中。
$ sudo docker run -dit --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker

# 我们将 storage 运行目录映射到宿主机的 /var/fdfs/storage目录中。
# TRACKER_SERVER=Tracker的ip地址:22122
sudo docker run -dit --name storage --network=host -e TRACKER_SERVER=192.168.229.134:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage

3.交互式容器

$ sudo docker run -it --name=ubuntu1 ubuntu /bin/bash
在容器中可以随意执行linux命令,就是一个ubuntu的环境。
当执行 exit/ctrl+D 命令退出时,该容器随之停止。

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 exec -it 容器id /bin/bash
$ sudo docker exec -it d74fff341687 /bin/bash
# 退出容器:
方法一:exit
方法二:Ctrl + D

7.删除容器

  • 正在运行的容器无法直接删除。
$ sudo docker container rm 容器名或容器id

5. Docker镜像资源操作

制作备份镜像

# 将容器制作成镜像
$ sudo docker commit -m '改动信息' -a "作者信息" [container_id] [new_image:tag]
$ sudo docker commit 现容器名 新镜像名
# 镜像打包备份
$ sudo docker save -o 保存的文件名 镜像名

6. 日志、信息

# 查看容器运行日志
$ docker logs [容器id]
$ docker logs 7c5a24a68f96

# 查看容器详细信息
$ docker inspect [容器id]
$ docker inspect 930f29ccdf8a

# 查看容器网络信息
$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器id]

7. 仓库管理

仓库就类似于我们在网上搜索操作系统光盘的一个镜像站。

这里的仓库指的是Docker镜像存储的地方。

Docker的仓库有三大类:

公有仓库:Docker hub、Docker cloud、等
私有仓库:registry、harbor等
本地仓库:在当前主机存储镜像的地方。

和仓库相关的命令:

docker login [仓库名称]
docker pull [镜像名称]
docker push [镜像名称]
docker search [镜像名称]

创建仓库流程

​ 1、根据registry镜像创建容器

​ 2、配置仓库权限

​ 3、提交镜像到私有仓库

​ 4、测试

实施方案

# 下载registry镜像
$ docker pull registry

# 启动仓库容器
$ docker run -d -p 5000:5000 registry

# 检查容器效果
$ curl 127.0.0.1:5000/v2/_catalog

# 配置容器权限
$ vim /etc/docker/daemon.json
{"registry-mirrors": ["http://74f21445.m.daocloud.io"], "insecure-registries": ["192.168.8.14:5000"]}
注意:
私有仓库的ip地址是宿主机的ip,而且ip两侧有双引号

# 重启docker服务
$ systemctl restart docker
$ systemctl status docker

**效果查看**
# 启动容器
$ docker start 315b5422c699

# 标记镜像
$ docker tag ubuntu-mini 192.168.8.14:5000/ubuntu-14.04-mini

# 提交镜像
$ docker push 192.168.8.14:5000/ubuntu-14.04-mini

# 下载镜像
$ docker pull 192.168.8.14:5000/ubuntu-14.04-mini

8. 数据管理

数据卷

就是将宿主机的某个目录,映射到容器中,作为数据存储的目录,我们就可以在宿主机对数据进行存储

格式:-v 宿主机文件:容器文件

命令格式:
docker run -itd --name [容器名字] -v [宿主机目录]:[容器目录] [镜像名称] [命令(可选)]
docker run -itd --name test1 -v /tmp:/test1 nginx # 启动一个容器,挂载数据卷
docker run -itd --name [容器名字] -v [宿主机文件]:[容器文件] [镜像名称] [命令(可选)]
docker run -itd --name test2 -v /tmp/file1.txt:/nihao/nihao.sh nginx # 将文件同步
docker volume rm # 删除数据卷
docker volume prune # 删除数据卷

数据卷容器

将宿主机的某个目录,使用容器的方式来表示,然后其他的应用容器将数据保存在这个容器中,达到大批量应用数据同时存储的目的

**创建一个数据卷容器**

命令格式:
docker create -v [容器数据卷目录] --name [容器名字] [镜像名称] [命令(可选)]

执行效果:
docker create -v /data --name v-test nginx

**创建两个容器,同时挂载数据卷容器**

命令格式:
docker run --volumes-from [数据卷容器id/name] -tid --name [容器名字] [镜像名称] [命令(可选)]

执行效果:
创建 vc-test1 容器
docker run --volumes-from 4693558c49e8 -tid --name vc-test1 nginx /bin/bash

创建 vc-test2 容器
docker run --volumes-from 4693558c49e8 -tid --name vc-test2 nginx /bin/bash

**确认卷容器共享**
进入vc-test1,操作数据卷容器
~# docker exec -it vc-test1 /bin/bash
root@c408f4f14786:/# ls /data/
root@c408f4f14786:/# echo 'v-test1' > /data/v-test1.txt
root@c408f4f14786:/# exit

进入vc-test2,确认数据卷
~# docker exec -it vc-test2 /bin/bash
root@7448eee82ab0:/# ls /data/
v-test1.txt
root@7448eee82ab0:/# echo 'v-test2' > /data/v-test2.txt
root@7448eee82ab0:/# exit

回到vc-test1进行验证
~# docker exec -it vc-test1 /bin/bash
root@c408f4f14786:/# ls /data/
v-test1.txt  v-test2.txt
root@c408f4f14786:/# cat /data/v-test2.txt 
v-test2

回到宿主机查看/data/目录
~# ls /data/
~# 

转载于:https://www.cnblogs.com/sablier/p/10989383.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
devkitadv GBA开发工具 任天堂GBA官方开发包安装及开发环境的设置 Romandoo 解压安装包至某目录后,安照以下步骤操作: 一: 安装CYGWIN工具 运行CYGWIN_SETUP目录下setup.exe进行cygwin的安装 选INSTALL FROM LOCAL DIRECTORY 在SELECT INSTALL ROOT diretory 选择安装目录 next> 再NEXT 在弹出的窗口中,在Perv Curr Exp 中选Curr 点开列表栏中各项, 选 base 的 cygwin ash bash login sh-utils 选 devel 的 autoconf automake binutils gcc gdb make 选 shell下的 ash bash sh-utils 置NEW栏显示版本号,表示将其安装,而其它的工具选为skip表示跳过不安装 最后选next开始安装! (注意,我为了节省空间,我删除了许多不重要的东西,其实cygwin下有高达几百m的各式各样的工具,今后你可根据自已需要到网上下载安装去) 二、安装任天堂官方开发包 在 AGB LIBRARY3.0中点 agbsetup1安装 注意,一定要安装到c:\agb目录下,因为这是官方的默认目录,有一些例子与这个目录关连了 所以最好选这个目录 ,不然可能编不过去。否则自已设置会麻烦一点的。 修改c:\autoexec.bat 文件增加如下代码行 SET AGBDIR=C:\AGB 三、安装CYGWIN补丁 (由于刚安装完的cygwin版本并不支持arm cpu,所以需要将某些程序、库覆盖成arm相关的程序库) 将arm-thumb-elf连目录一起copy到安装好的cygwin目录的\lib\gcc-lib下 将bin-patch目录下的所有文件copy到cygwin目录的bin下面覆盖 将include patch目录下文件copy到cygwin目录的include下面 四:编绎例子程序 OK!前三步已经将我们的开发环境构好了!! 现在我们可以正式进行开发了,至于开发技术吗,在agb目录的doc下应有尽有,大家可以好好研究一下子。 下面我就介绍如何编绎代码了。 编绎也是很简单的一件事情了。 官方资料里有许多的例子,和两个游戏demo源代码。 我们就拿里面的一个具有代表性的例子编绎吧 functional_sample 在编绎之前,你必须重起你的机器,因为刚才我们修改了 autoexec.bat 而设置此时需要生效才行。(当然也有其它办法不必重起就生效,说来话长了) 好,重起之后,我们运行刚才装好的cygwin程序 进入了一个控制台窗口 这个控制台shell,命令行支持的是类式linux的指令,你可能不太了解,不过你不用担心呵 我们不需要记太多的命令指令,很简单的几句这可以了 就当是dos命令,只不过命令名称变了而已 下面是几个对应 ls 相当于dos下的dir指令 cd 相当于dos下的cd 指令 你也就需要这两个指令就搞定了,呵 行,那么我们正式开始: cd c: cd agb cd src cd samples cd functional_sample //以上几步作的就是进入c:\agb\src\samples\functional_sample目录下,和dos一样吧,呵 然后注意了,忘了提醒有关functional_sample这个例子的一个问题, 就是这个例子源代码share.c 中定义了 vu16 Cont; vu16 Trg; 但是在share.h中又申明为 extern u16 Cont; extern u16 Trg; 该编绎器检查认为是错误,所以你要改一下 将share.h文件里改成 extern vu16 Cont; extern vu16 Trg; 否则编绎报错。 好,改好share.h之后,我们输入 make 回车! 好,你可以看到现在开始正式编绎了,太爽了,官方的例子在被编绎,呵 过了几十秒编绎完成之后,就会生成了bin与elf文件 你用visualBoyAdvance打开bin文件看一看是 什么例子,哇,原来是个非常强的GBA各个功能展示,有alpha混合,有图层显示 有马塞可显示,有放大缩小,有精灵移动,旋转,字体显示,声音,有地图显示,有窗口模式。 但是需要注意的一个问题:::::: 如果你想使用gcc里面的库函数 需要在makefile里面修改一下 CFLAGS 中加入 -I"C:\cygwin\include" LDFLAGS 中加入 -lm 否则你将无法使用sin,cos,sqrt等有用的库函数 编完这个,你可以再去试试看

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值