Android アプリ 操作マニュアル - フジフューチャーズAndroid アプリ 操作マニュアル 2016 年9 月20 日 Windsor+操作マニュアル 2 目次 1 画面 1.1
Docker 基本概念與指令操作
-
Upload
nutc-imac -
Category
Technology
-
view
221 -
download
3
Transcript of Docker 基本概念與指令操作
Docker?
2
Docker 2013 dotCloud Google Go Linux Apache 2.0 GitHub
Docker
3
Docker Docker Linux LXC namespaces cgroups Another UnionFS AUFS LXC Docker
VM
4
Virtual Machines virrutalized
5
Docker
6
NAMESPACES VS. CGROUPS
7
Namespaces provide isolation: •pid (processes) •net (network interfaces,
routing...) • ipc (System V IPC) •mnt (mount points,
filesystems) •uts (hostname) •user (UIDs)
Control groups control resources: •cpu (CPU shares) •cpusets (limit processes to a CPU)•memory (swap, dirty pages) •blockio (throttle reads/writes) •devices •net_cls, net_prio: control packet class and priority
Docker
8
•
•
•
•
• ->
• docker, fuck
Docker
9
Docker
• Image
• Container
• Repository
Docker Images
10
Docker
Docker
; VM
VM
Docker
Docker Container
11
Docker
VM
Instance
Container
Docker Repository
12
• Public
• Private
* Docker Git GitHub
13
Docker
14
$ curl http://files.imaclouds.com/scripts/docker_install.sh | sh
OR
OR
Cloud Platform Image….
+ +
Docker version and info
15
$ docker -v $ docker version Docker version 1.9.0, build 76d6bc9
docker
$ docker info Containers: 7 Images: 108
images
16
hello-world image
$ docker pull hello-world b901d36b6f2f: Pull complete … P.S latest
docker image
$ docker pull ubuntu:14.04 P.S Image docker
Container
17
Hello-world Container
$ docker run hello-world Hello from Docker. ….
Ubuntu Container
$ docker run ubuntu:14.04 /bin/echo 'Hello world’ $ docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
Container log
18
Container ps
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 139218fe7bd4 hello-world "/hello" 22 minutes ago Exited (0) 21 minutes ago angry_pike
P.S -a , -q ID, -s , -l
, -n=“” , -before=“” ,-after=“”
$ docker logs --tail <Container_ID>
Docker
19
Container
$ docker exec -t -i <Container_ID> root@cbddb5419e5a:/# P.S -t , -i
$ docker run --rm -t -i --name=“my-ubuntu” ubuntu:14.04 /bin/bash P.S --rm , --name container
Stop Start Restart Remove
20
Container
$ docker stop <Container_ID> P.S -t
Container
$ docker start <Container_ID> $ docker restart <Container_ID>
Container
$ docker rm <Container_ID> $ docker ps -a -q | xargs docker rm
Docker Container
21
JSON
$ docker inspect <Container_ID> $ docker inspect -f ‘{{.NetworkSettings.IPAddress}}’<Container_ID> P.S -f GO
$ docker top <Container_ID>
22
image
Docker Hub
docker hub
$ docker login Username : test
docker hub
$ docker logout
24
Image
Ubuntu Container
$ docker run -idt ubuntu:14.04 f5f8dc8cd20c646d560b2aa553c3
Ubuntu Container
$ docker exec -ti <contianer_id> bash
25
apt-get apache2 sshd
$ apt-get install -y apache2 openssh-server vim
container container
$ docker diff <container_id> C /var/log/faillog C /var/log/lastlog A /var/www A /var/www/html A /var/www/html/index.html
26
boot_run
Container boot_run.sh /etc
27
#!/bin/bash
CMD=${1:-"exit 0"}
if [[ "$CMD" == "-d" ]]; then service apache2 start /usr/sbin/sshd -D -d else /bin/bash -c "$*" fi
container boot_run.sh
$ chown root.root /etc/boot_run.sh $ chmod 700 /etc/boot_run.sh
sshd
container
$ mkdir /var/run/sshd $ echo 'root:123456' | chpasswd $ sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config $ sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd $ echo "export VISIBLE=now" >> /etc/profile
28
boot_run.sh
container script
$ /etc/boot_run.sh -d Set /proc/self/oom_score_adj from 0 to -1000 debug1: Bind to port 22 on 0.0.0.0. Server listening on 0.0.0.0 port 22. debug1: Bind to port 22 on ::. Server listening on :: port 22.
29
container image
container
$ docker commit -m "Add apache2 and sshd ..." <container_id> 3d2d0c1af482a206abf8b581e4 P.S tag , kairen/apache:1.0.0
docker images <none> tag
REPOSITORY TAG <none> <none>
docker tag
$ docker tag <image_id>
30
images
run image
$ docker run -d -p 8080:80 -p 10022:22 --name apache2 kairen/apache2:1.0.0 /bin/sh -c "/etc/boot_run.sh -d" P.S /etc/boot_run.sh -d script
port
$ docker port <container_id> 22/tcp -> 0.0.0.0:10022 80/tcp -> 0.0.0.0:8080
31
apache2 ssh
browser 8080 port
ssh client sshd
$ ssh -p 10022 [email protected] [email protected]'s password:
stop rm container
$ docker stop <container_id> && docker rm <container_id>
32
Docker hub
docker image docker hub
$ docker push kairen/apache2:1.0.0 The push refers to a repository [docker.io/kairen/apache2] (len: 1) 3d2d0c1af482: Pushing [=============================================> ] 74.99 MB/83.1 MB
image
$ docker search kairen // kairen
$ docker search kairen/apache2 // kairen, apache2
33
images
docker image
$ docker save kairen/apache2:1.0.0 > kairen-apache2.tar $ docker save -o kairen-apache2.tar kairen/apache2:1.0.0
image
$ docker load < kairen-apache2.tar $ docker load --input kairen-apache2.tar
34
images
container
$ docker export <container_id> > ubuntu.tar
docker import
$ cat ubuntu.tar | docker import - kairen/ubuntu:14.04 url import
$ docker import http://example.com/exampleimage.tgz example/imagerepo
35