下載 images

docker pull codenvy/ubuntu_jdk8

看 docker 有的 images

daniel@Danielde-MacBook-Pro > ~ >  docker images | grep ubuntu_jdk8
codenvy/ubuntu_jdk8        latest              4074bfc5705b        20 months ago       668MB

docker run

daniel@Danielde-MacBook-Pro > ~ > docker run -it 4074bfc5705b /bin/bash
user@662414dca6e4:/projects$ ls /
bin   dev  home  lib64  mnt  proc      root  sbin  sys  usr
boot  etc  lib   media  opt  projects  run   srv   tmp  var

看所有的 process

daniel@Danielde-MacBook-Pro > ~ > docker ps -a
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                      PORTS                                            NAMES
662414dca6e4        4074bfc5705b               "/bin/bash"              13 seconds ago      Up 18 seconds               22/tcp, 4403/tcp, 8000/tcp, 8080/tcp, 9876/tcp   youthful_stonebraker

docker commit 可以產生一個新的 image(myubuntu:0.1)

daniel@Danielde-MBP > ~ > docker commit -m "add new user" -a "daniel" 2bc6632d6917 myubuntu:0.1
sha256:a90942bab3908fda41cafeae85b4be3d0097ce64eb5499bdd3124fe98f968ce7

daniel@Danielde-MBP > ~ > docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
myubuntu                   0.1                 a90942bab390        44 seconds ago      668MB
yandex/clickhouse-client   latest              81fd7a3606ca        11 days ago         346MB
yandex/clickhouse-server   latest              62a3441da964        11 days ago         373MB
codenvy/ubuntu_jdk8        latest              4074bfc5705b        19 months ago       668MB

存成 tar

daniel@Danielde-MacBook-Pro > ~/test > docker save -o myubuntu.tar myubuntu:0.1
 daniel@Danielde-MacBook-Pro > ~/test > ll | grep myubuntu
-rw-------   1 daniel  staff   654M  7 21 17:21 myubuntu.tar

load tar

daniel@Danielde-MacBook-Pro >~/test > docker load < myubuntu.tar
Loaded image: myubuntu:0.1
 daniel@Danielde-MacBook-Pro > ~/test > docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
myubuntu                   0.1                 a90942bab390        17 minutes ago      668MB
yandex/clickhouse-client   latest              81fd7a3606ca        11 days ago         346MB
yandex/clickhouse-server   latest              62a3441da964        11 days ago         373MB
codenvy/ubuntu_jdk8        latest              4074bfc5705b        19 months ago       668MB

create container

daniel@Danielde-MacBook-Pro > ~/test > docker create -it myubuntu:0.1
f80244b4dceaf8f774fa0d2839b85e2f016f744c265d1ce5295a71dbaa2ebfcc

create 後 start

daniel@Danielde-MacBook-Pro > ~/test > docker start f80244b4dcea
f80244b4dcea

stop container

docker stop f80244b4dcea

用 docker logs 看 container 的 output

daniel@Danielde-MacBook-Pro > ~/test > docker run -d myubuntu:0.1 /bin/sh -c "while true;do echo hello world; sleep 3; done"
5c2ec714ace8b649a8308068e452c930680173317a6ffd1714831d391a584820

daniel@Danielde-MacBook-Pro > ~/test > docker ps
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                                            NAMES
5c2ec714ace8        myubuntu:0.1               "/bin/sh -c 'while t…"   29 seconds ago      Up 28 seconds       22/tcp, 4403/tcp, 8000/tcp, 8080/tcp, 9876/tcp   silly_pike


docker logs silly_pike

正在執行中的 container 可以用 attach 對它操作

docker attach hardcore_dubinsky

建議不要用 attach 指令改用 exec

docker exec -it hardcore_dubinsky /bin/bash

remove container

docker rm 5c2ec714ace8

docker export

docker export hardcore_dubinsky > test.tar

docker import

docker import test.tar test/myubuntu

Docker data 掛載

可以參考 docker-volumes

掛載一個本機的目錄(/Volumes/Transcend/test) 到 container 的目錄(/opt/test) 作為 data volumes

daniel@Danielde-MacBook-Pro > /Volumes/Transcend/test > docker run -d -P --name volumetest -v /Volumes/Transcend/test:/opt/test codenvy/ubuntu_jdk8
676f3a0adc10ba4791ee83ece5ec2d3f93a2e3e56e4fe4dd34a3e51f1fedae42
daniel@Danielde-MacBook-Pro > /Volumes/Transcend/test > docker ps -a | grep volumetest
676f3a0adc10        codenvy/ubuntu_jdk8        "/bin/sh -c 'sudo /u…"   33 seconds ago      Up 35 seconds             0.0.0.0:32782->22/tcp, 0.0.0.0:32781->4403/tcp, 0.0.0.0:32780->8000/tcp, 0.0.0.0:32779->8080/tcp, 0.0.0.0:32778->9876/tcp   volumetest

進入 container 看 /opt/test/ 是否與本機的 /Volumes/Transcend/test 一樣

daniel@Danielde-MacBook-Pro > /Volumes/Transcend/test > docker exec -it volumetest /bin/bash
user@676f3a0adc10:/projects$ ls /opt/test/
20180130  data

利用 –volumes-from 掛載到 data volume containers

daniel@Danielde-MacBook-Pro > /Volumes/Transcend/test > docker run -it --volumes-from volumetest --name db1 codenvy/ubuntu_jdk8