Docker 简单笔记

主要是为了部署ODL

0x01 基本命令:

不用全部掌握,会基础的命令,不常用的百度即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
管理命令:
container 管理容器
image 管理镜像
network 管理网络
node 管理Swarm节点
plugin 管理插件
secret 管理Docker secrets
service 管理服务
stack 管理Docker stacks
swarm 管理Swarm集群
system 查看系统信息
volume 管理卷

如:docker container ls 显示所有容器

普通命令:

attach 进入一个运行的容器
build 从一个DockerFile构建镜像
commit 从容器创建一个镜像
cp 从容器和主机文件系统之间拷贝文件
create 创建一个容器
diff 检查容器文件系统上的更改
events 从服务器获取实时事件
exec 在正在运行的容器中运行命令
export 将容器的文件系统导出为tar存档
history 显示镜像的历史记录
images 查看镜像列表
import 从归档文件中创建镜像
info 显示系统范围的信息
inspect 返回Docker对象的低级信息
kill kill运行中的容器
load 从存档或者STDIN加载镜像
login 登陆docker镜像仓库
logout 退出docker镜像仓库
logs 获取一个容器的日志
pause 暂停一个或多个容器中的所有进程
port 查看端口映射或容器的特定映射列表
ps 查看容器列表
pull 从镜像仓库拉取镜像
push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
rename 重命名容器
restart 重启容器
rm 删除容器
rmi 删除镜像
run 创建一个新的容器并运行一个命令
save 将指定镜像保存成 tar 归档文件
search 从Docker Hub搜索镜像
start 启动容器
stats 实时显示容器资源使用情况的统计信息
stop 停止容器
tag 标记本地镜像,将其归入某一仓库
top 展示一个容器中运行的进程
unpause 恢复容器中所有的进程
update 更新容器配置
version 显示Docker的版本信息
wait 阻塞直到容器停止,然后打印退出代码

如:docker images 显示所有镜像

0x02 docker 上传容器:

推荐使用阿里云的镜像管理仓库,官方的实在是太慢了

先登录:

1
2
3
~/Desktop$ docker login  --username=username registry.cn-hangzhou.aliyuncs.com
Password:
Login Succeeded
1
2
3
4
5
6
7
8
9
~/Desktop$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6dc5d2ea3107 ubuntu:16.04 "/bin/bash" 42 minutes ago Up 42 minutes confident_fermat
~/Desktop$ docker commit 6dc5d2ea3107 vim
sha256:a3c766c860ee134abf0ee685df015e8dce543212b94054d44ff64aed7bd3eb5b
~/Desktop$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vim latest a3c766c860ee 15 seconds ago 222MB
ubuntu 16.04 330ae480cb85 2 weeks ago 125MB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
~/Desktop$ docker tag vim registry.cn-hangzhou.aliyuncs.com/lowbee/ubuntu:vim
/Users/yunlong/Desktop$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vim latest 9db29825c783 6 minutes ago 222MB
registry.cn-hangzhou.aliyuncs.com/lowbee/ubuntu vim 9db29825c783 6 minutes ago 222MB
ubuntu 16.04 330ae480cb85 2 weeks ago 125MB
/Users/yunlong/Desktop$ docker push registry.cn-hangzhou.aliyuncs.com/lowbee/ubuntu:vim
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/lowbee/ubuntu]
dd3211c2ed28: Pushed
21dabaeb6afb: Pushed
f182989ffc12: Pushed
0cf0b0655e84: Pushed
88b486ee59d1: Pushed
vim: digest: sha256:693405e9175332585220f29f3ce317e8b88d51d0f4426dbec5ef1b39d6a9b958 size: 1362

0x03 docker重启后:

重新运行容器:docker start 容器id

进入交互命令: docker attach 容器id

也可以直接运行:docker start -ai 容器id 其中-a是attach,-i是交互

docker ps -q -l:其中-q是指只列出容器的id,-l是最后创建的容器

0x04 DockerFile创建镜像

此处用于部署ODL控制,已经下拉Ubuntu16.04的image

创建文件如下,及dockerfile文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
FROM ubuntu:16.04

ADD sources.list /etc/apt/

RUN apt-get update &&\
apt-get install unzip -y &&\
apt-get install net-tools -y &&\
apt-get install iputils-ping -y &&\
apt-get install vim -y &&\
apt-get autoclean &&\
apt-get autoremove
COPY distribution-karaf-0.6.4-Carbon.zip jdk-8u231-linux-x64.tar.gz /home/
WORKDIR /home
RUN tar -zxvf jdk-8u231-linux-x64.tar.gz &&\
rm jdk-8u231-linux-x64.tar.gz &&\
unzip distribution-karaf-0.6.4-Carbon.zip &&\
rm distribution-karaf-0.6.4-Carbon.zip

ENV JAVA_HOME=/home/jdk1.8.0_231
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
ENV PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

EXPOSE 8181 6653 6633

将需要用到的文件包放在同一个目录下。顺便换源,此处使用阿里源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

创建镜像:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
lowbee dockerfile $ls   
Dockerfile1 jdk-8u231-linux-x64.tar.gz
distribution-karaf-0.6.4-Carbon.zip sources.list
lowbee dockerfile $docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 330ae480cb85 2 weeks ago 125MB
lowbee dockerfile $docker build -f Dockerfile1 -t opendaylight:v1.0 .
Sending build context to Docker daemon 624.5MB
Step 1/11 : FROM ubuntu:16.04
---> 330ae480cb85
Step 2/11 : ADD sources.list /etc/apt/
---> 21986c4da5cf
Step 3/11 : RUN apt-get update && apt-get install unzip -y && apt-get install net-tools -y && apt-get install iputils-ping -y && apt-get install vim -y && apt-get autoclean && apt-get autoremove
---> Running in d970f18b6aff
...

...
---> 772580ede22f
Step 11/11 : EXPOSE 8181 6653 6633
---> Running in dffd22daa5f2
Removing intermediate container dffd22daa5f2
---> d33d72ee7f48
Successfully built d33d72ee7f48
Successfully tagged opendaylight:v1.0
lowbee dockerfile $docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
opendaylight v1.0 d33d72ee7f48 40 seconds ago 1.75GB
ubuntu 16.04 330ae480cb85 2 weeks ago 125MB

命令会一步一步的执行,直到最后出现successfully,才算安装成功。

0x05 运行ODL进行配置

踩坑:~~MacOS 下主机是无法ping通容器的,一定要注意!!!~~采用端口映射将web服务映射到主机上即可, -p 主机端口:容器端口。

在更新Docker至4.3.1后可以直接相互ping

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
lowbee Desktop $docker run -it -p 8181:8181 -p 6653:6653 -p 6633:6633 --name ODL d33d72ee7f48
root@6c0cc6123ec4:/home# ls
distribution-karaf-0.6.4-Carbon jdk1.8.0_231
root@6c0cc6123ec4:/home# cd distribution-karaf-0.6.4-Carbon/bin
root@6c0cc6123ec4:/home/distribution-karaf-0.6.4-Carbon/bin# ./karaf
Apache Karaf starting up. Press Enter to open the shell now...
100% [========================================================================]

Karaf started in 2s. Bundle stats: 64 active, 64 total

________ ________ .__ .__ .__ __
\_____ \ ______ ____ ____ \______ \ _____ ___.__.| | |__| ____ | |___/ |_
/ | \\____ \_/ __ \ / \ | | \\__ \< | || | | |/ ___\| | \ __\
/ | \ |_> > ___/| | \| ` \/ __ \\___ || |_| / /_/ > Y \ |
\_______ / __/ \___ >___| /_______ (____ / ____||____/__\___ /|___| /__|
\/|__| \/ \/ \/ \/\/ /_____/ \/


Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown OpenDaylight.

opendaylight-user@root>

Opendaylight 安装属性:

1
2
3
4
5
6
7
feature:install odl-restconf
feature:install odl-l2switch-switch-ui
feature:install odl-openflowplugin-flow-services-ui
feature:install odl-mdsal-apidocs
feature:install odl-dlux-core
feature:install odl-dluxapps-nodes
feature:install odl-dluxapps-yangui

在主机上访问http://localhost:8181/index.html#/login:

推荐Kitematic进行管理容器,真香︿( ̄︶ ̄)︿