Docker的简单操作

Docker的简单操作

一、 安装:

Centos7:

使用centos7
1.安装依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2
2.添加安装源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安装最新版的docker-ce
yum-config-manager --enable docker-ce-edge
4.更新 yum 软件源缓存,并安装 docker-ce
yum makecache fast
yum install docker-ce
5.启动docker
service docker start //开启docker服务
service docker restart //重启docker服务
service docker stop //停止docker服务
6.镜像加速
由于国内Docker Hub 拉取镜像有时会遇到困难,此时我们需要配置镜像加速器。
/etc/docker/daemon.json 文件中写入如下内容如不存在则创建一个
{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }
注意:配置完成之后输入命令:service docker restart 重启docker

Ubuntu:

使用ubuntu
1. 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添 加使用HTTPS 传输的软件包以及 CA 证书。
故先执行以下命:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
2. 我们需要向 source.list 中添加 Docker 软件源
命令如下:
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
3. 安装 Docker CE
更新 apt 软件包缓存,并安装 docker-ce:
sudo apt-get update
sudo apt-get install docker-ce
4. 启动docker
sudo service docker start //开启docker服务
sudo service docker restart //重启docker服务
sudo service docker stop //停止docker服务
6. 镜像加速和Contos 一样

二、获取镜像

从 Docker 镜像仓库获取镜像并使用
1.从 Docker 镜像仓库获取镜像的命令是 docker pull 。其命令格式为:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
详细的选项可以通过 docker pull --help 命令看到。
例如:
docker pull apache/nifi
此条命令直接是在我Docker hub中拉取最后一个镜像版本和 docker pull apache/nifi:latest 是一样的,如需指定版本则可把 latest 改为相应的版本即可
如: docker pull apache/nifi:1.7.0
注:拉取的镜像的详细使用方法可在Docker hub中查找
2.列出镜像:
docker images or docker image ls
3.删除本地镜像:
docker rmi [选项] <镜像1> [<镜像2> ...]
或者 docker image rm [选项] <镜像1> [<镜像2> ...]

三、运行停止
1.有了镜像后,我们就以这个镜像为基础启动并运行一个容器。以上面的 apache/nifi:1.7.0 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令:
docker run -it --rm apache/nifi:1.7.0 bash
docker run 就是运行容器的命令。
注:基本参数说明:
(1. --name :可指定容器名称。
(2. -d : 容器后台运行。
(3. -p/P : 进行端口映射:
-p(小写) :可以指定要映射的IP和端口
-P(大写):Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
(4. -it :这是两个参数,一个是 -i交互式操作,一个是 -t 终端。我们这里打算进入。
(5. bash :执行一些命令并查看返回结果,因此我们需要交互式终端。
(6. --rm :这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动docker rm 。
我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间。
(7. apache/nifi:1.7.0 :这是指用 apache/nifi:1.7.0 镜像为基础来启动容器。
(8. bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。
注:如进入容器之后想回到宿主机的交互界面我们可以用 CTRL + P + Q 退出容器而不关闭它。
2.进入容器
当我们运行容器后并没有进入其交互界面,而后想进入容器怎么办?很简单在宿主机上运行
docker attach [id]/[name]
这个命令有个需要注意的是:如果进入容器在容器内部输入 exit 会导致容器一起被关闭,那这时我们可以用docker exec 来进入容器
如:
docker exec -it [id]/[name] bash
docker exec 后边可以跟多个参数具体的参数说明请使用 docker exec --help 来查看。
3.停止容器
docker stop [name]/[id] //等待结束再关闭 docker kill [name]/[id] //直接关闭
4.删除容器
docker rm [id]/[name]
5.查看运行的容器
docker ps
6.启动容器
docker start [container]

四、构建镜像

使用docker commit进行构建,定制用Dockerfile
docker commit 的语法格式为:docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
如:
docker commit --author "jiang <yuchumian@163.com>" --message "修改了配置文件" mynifi nifi:v1
说明:
--author 是指定修改的作者,而--message则是记录本次修改的内容。
之后我们就可以通过docker image ls 看到这个新构建的镜像。

五、使用 Dockerfile 定制镜像

Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,
因此每一条指令的内容,就是描述该层应当如何构建。如下:
FROM apache/nifi:1.7.0 COPY ./nifi.conf /nifi/conf/
定制时我们首先应该创建一个空的文件夹,在其中再创建Dockerfile文件,再写入如上内容。保存并退出运行 docker build -t nifi:v3
这是一个简单的例子 其中 FROM 指定基础镜像,就是以一个镜像为基础,在其上进 行定制。 上面的COPY指令是把当前目录下的nifi.conf 复制到镜像的/nifi/conf/下并且COPY指令会保留文件的属性及相应的权限。除此之外ADD,ADD指令作与 COPY指令类似,与其不同的是ADD如果遇到的是压缩文件时它会自动进行解压操作。故通常我们在复制文件的时候大多推荐用COPY。 使用 Dockerfile 定制镜像我这里只是进行一个简单的介绍,Dockerfile 功能非常强 大。感兴趣的可以去研究。

六、文件操作

docker 文件操作
1. 容器和宿主机之间的文件操作
从宿主机到容器: docker cp <src> [container]:<src>
从容器到宿主机:
docker cp [container]:<容器里的文件路径> <将要存放在的宿主机中的路径>
2. 挂载
使用--mount 标记可以指定挂载一个本地主机的目录到容器中去。
例如:
docker run -d -P --name mynifi \ # -v /local/nifi:/opt/nifi \ --mount type=bind,source=/local/nifi,target=/opt/nifi \ apache/nifi:1.7.0
如上:我们可以使用-v或--mount进行挂载操作
有一点是:使用--mount 参数时如果本地目录不存在,Docker 会报错,而-v则会去创建这个目录

七、Docker-compose

Docker-Compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 Docker-compose 中你可以使用YAML文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。
YAML配置文件(docker-compose.yml)配置如下:

        version: "3"
            services:
                nifi:
                    build: ./
                    ports:
                      - "8080:8080"
                    environment:
                      - NIFI_ZK_CONNECT_STRING=zookeeper:2181
                    volumes:
                      - /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
                      - /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out

以上是单个nifi的简单配置,以下进行一个简单的说明:
build: ./ 是以当前目录下 Dockerfile 文件来构建生成镜像。如不需要对镜像进行改动则可以直接用 image 如:

            nifi:
                image: apache/nifi:1.7.0
                ports:
                    - "8080:8080"
                environment:
                    - NIFI_ZK_CONNECT_STRING=zookeeper:2181
                volumes:
                    - /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
                    - /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out
        注:如果 image: apache/nifi:1.7.0 这个镜像本地没有,dockers-compose会直接从docker hub 上尝试拉取。
        ports:
            - "8080:8080" 

如果以上是 - "8080" 那么这意味着这仅仅是指定容器的端口(宿主将会随机选择端口),而- "8080:8080" 指定映射到宿主机的8080端口
environment: 设置环境变量。你可以使用数组或字典两种格式

            volumes:
                - /opt/nifi/data_in:/opt/nifi/nifi-1.7.0/data_in
                - /opt/nifi/data_out:/opt/nifi/nifi-1.7.0/data_out

挂载宿主机文件到容器。 /opt/nifi/data_in 为宿主机内的路径,/opt/nifi/nifi-1.7.0/data_in 为容器内的路径
每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)等来自动构建生成镜像。
启动命令:
docker-compose.yml 的目录下直接执行
docker-compose up
如需后台启动则 docker-compose up -d
如要重新构建则 docker-compose up --build -d
关闭:docker-compose stop
关闭并移除所有配置信息 : docker-compose down

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容