Docker 2 (docker operate)
下載 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