経験拾憶(純手作業)=>Docker文法全面回想
15843 ワード
Hello Docker
イメージ(ミラー) docker search docker pull(ダウンロード) docker images(リスト) docker rmi(削除) docker save(保存バックアップ) docker load(還元) docker tag(改名、改版本号) docker inspect(詳細を参照) docker history(階層履歴情報の表示) Container(コンテナ) docker create(作成) docker start(オープン) docker run(作成+起動、推奨) docker stop(終了、終了) docker restart(再起動) docker pause(一時停止) docker unpause(継続) docker ps(表示) docker logs(出力ログの表示) docker rename(名前変更) docker inspect(コンテナの詳細を表示) docker rm(削除) docker attach(コンテナコマンド実行に進む) docker exec(実行コマンド) Container and Images(コンテナとミラーの関連付け) docker commit(コンテナを新しいミラーに「カプセル化」する) docker export(コンテナをファイルとしてエクスポート) docker import(exportからエクスポートされたファイルをエクスポートし、ミラーを生成) docker commit&docker import区別 ネットワーク docker network ls(表示) docker network create(作成) docker network rm(削除) docker network connect(コンテナにネットワークをバインド) docker network disconnect(コンテナへのバインド解除ネットワーク) データボリューム(volume) docker volume create(データボリュームの作成) docker volume ls(データボリュームのリスト) docker volume prune(コンテナで使用されていないすべてのデータボリュームを削除) docker volume rm(指定データボリュームを1つ以上削除) データボリューム をマウントコンテナ間共有データ 詳細注意事項 DockerHub(倉庫)無認証私有倉庫 倉庫 を建てるアップロードミラー ダウンロードミラー Dockerfile(プロファイル) Dockerfile認知 Dockerfile構築 Dockerfile構文 FROM RUN | CMD | ENTRYPOINT ADD | COPY ENV WORKDIR VOLUME EXPOSE 公式テンプレート参考URL Docker Compose Docker-Compose認知 Docker-Compose取付 Docker-Composeファイル命令 事前検査docker-compose.ymlファイル構文フォーマットに誤りがあるかどうか docker comopse 起動/停止
END
:https://docs.docker.com/install/linux/docker-ce/ubuntu/
/ , - - 。 ( )
イメージ(ミラー)
docker search python # dockerhub image
docker pull python:3.7 # dockerhub image : ( )
docker images # ( docker image ls)
docker images py* # image,
docker rmi "image " "imageID" # image
docker rmi python -f # ( image , -f )
image "imageID", , "image "
image "image ", "image :Tag"
1:docker save python > python.tar # image image
2: docker save python -o python.tar
python.tar ,
: , python , python images
, , docker save python:latest
1: docker load -i python.tar
2: docker load < python.tar
docker tag python:latest py:3.7 # "python:latest" "py:3.7 "
1: image , image ,
2: image , , image
docker inspect python
docker history mypython:3.7
docker create --name py-con python:latest # --name ,
docker create -it python:latest python # , python
-t terminal
-i ( , )
: created , docker start
docker start -ai ID #
-a
-i create -i ,
docker run -it python:latest python # create+start , -it
# : python:latest , , python
docker run -d -it python:latest python
# , -d, " " ( -d , " ")
docker run -dit --rm python:latest python
# --rm , (exited ), 。
docker run --network bridge -itd mypython:latest python
# --network ( , bridge, )
docker run -dit -p 6006:6379 redis
# , (6006): (6379) (-P )
docker run --restart always
# --restart always docker ,
docker ps # " ID"
docker stop ID # " " ( 10 )
docker stop -t 0 374 # -t 0 ,
( ):
docker stop $(docker ps -q) # -q ID
docker restart -t 0 281 # 0
docker pause 281 # , ,
docker unpause 281 # ,
docker ps # " "
docker ps -a #
docker logs 281 #
docker logs -f 281 # -f , ( tail -f )
docker rename 281 python # 281 python
docker inspect 374 #
docker rm ID #
docker rm ID -f # ( )
docker run -itd python:latest python # , python
docker attach 281 # 281 , python
" : python , , , 。"
docker exec -it 281 python # " ", " " python
" : attach , python , !( python )"
docker commit 4d mypython:3.7 # 4d , " : " "mypython:3.7"
docker export fc8 -o mypython.tar # .tar , image save
docker import mypython.tar mypython:latest
: export mypython.tar mypython:latest
:
docker commit container image
docker import export container.tar , image
docker commit , (docker history imageID )
docker import , (docker history imageID )
docker network ls
bridge( ):
- :
container1(etho0)--veth1--Docker(bridge)--veth2--container2(etho0)
- :
container1(etho0)--veth1--Docker(bridge)-- (etho0)
: veth , ,
host( ):
- :
container1(etho0)-- --container2(etho0)
- :
container1(etho0)--
( host):
container1--container2 # ‘ ’
:
docker run -it --network container:24f1 mypython:latest ls
# container:24f1 container 24f1 ()
null( ):
docker network create -d bridge mybridge # bridge
docker network create -d host myhost # host( , )
docker network create -d null mynull # null( , )
docker network rm ab5
: (null host bridge)
docker network connect mybridge 4c4 # 4c4 mybridge ( bridge)
docker inspect 4c4 # ,
: container bridge ,
docker network disconnect mybridge 4c4 # mybridge
: container bridge none , ( , disconnect connect)
2:host connect disconnect
docker volume create myvolume
: myvolume
docker volume ls
: , docker run -v , ID, ID 。
docker volume prune
: ,
docker volume rm myvolume
: myvolume , ,
""" : """
1 (-v )
-v 1:( )
docker run -itd -v /root:/root mypython:latest python # -v :
:
cd /root
touch aaa.txt # aaa.txt
docker exec -it cfb ls /root # aaa.txt
-v 2:( )
docker run -itd -v myvolume:/root mypython:latest python # myvolume
1: myvolume , ,
2: , ??
docker volume inspect myvolume # Mountpoint ,
cd /var/lib/docker/volumes/myvolume11/_data # volume
touch bbb.txt # bbb.txt
docker exec -it 916 ls /root # , bbb.txt, 。
2:(--mount , -v , " " )
docker run -itd --mount type=volume,src=myvolume11,dst=/root mypython:latest python
:
type: ( : bind) ( : volume) ( :tmpfs)
src: 1( ) 2( ) ( )
dst:
,
docker run -itd --mount type=tmpfs,dst=/root mypython:latest python (tmpfs" " )
" , 3 ":
. " "
. " "
. " "
" , 2 ":
、 "-v " 2 ( )
、 "--mount " 3 ( )
""" """
docker run -itd --volumes-from 6252 python:latest # 6252 ,
:
docker exec -it 97db touch /root/abc # abc
docker exec -it 6252 ls /root # , abc,
、 " " , " copy "
、 " " , " copy , "
:
:" , , 。。"
:" ( ), , "
docker pull registry # registry
docker run -itd \
--restart always \ # docker ,
--name myregistry \ #
-p 6006:5000 \ # (registry 5000 , 6006)
-v /root:/var/lib/registry \ # ( ),
registry # registry
:( web , Url )
: IP:6006/v2/_catalog
: curl 127.0.0.1:6006/v2/_catalog
、
docker tag mypython:latest 127.0.0.1:6006/mython_hub
: ( , ): IP:Port/
、
docker push 127.0.0.1:6006/mython_hub # docker push , ID ,
、
, repositories
curl 127.0.0.1:6006/v2/_catalog
docker pull 127.0.0.1:6006/mython_hub
: ,
Docker docker shell
, , dockerfile 。
Dockerfile , ( ) " , ( )"
Dockerfile :
、 " " , Dockerfile ," , "
、 " ", " ", " " ,
、FROM Dockerfile 。
"FROM ", Dockerfile -->
" " , " " , commit
docker build /Dockerfile -t mypython:v2
1: Dockerfile ,build dockerfile
2: Dockerfile , .
3: -t
" , docker pull"
FROM python:latest #
2 :
、(exec) --
eg: python -V # linux
、(shell) --
eg: ["python", "-V"] # , py scrapy shell
RUN:
" " , 。。( )
CMD:
, docker run
" docker run , CMD "
ENRTYPOINT:
CMD , docker run , ENTRYPOINT 。
""" """
COPY aaa.txt /root # aaa.txt /root
ADD aaa.txt /root # COPY , ADD ," "
""" """
ENV name=python
ENV nickname=$name # $name name
""" cd """
WORKDIR /root
""" """
VOLUME /root # docker run -v /root, /root
""" """
EXPOSE 6379
EXPOSE 3306 # EXPOSE
1: , docker run -P
2: , -p, 。
:https://docs.docker.com/engine/reference/builder/
Dockerfile :https://github.com/docker-library/docs/tree/master/
、Dockerfile Docker
、Docker-Compose Dockerfile ( )
、Docker-Compose docoker-compose.yaml
、docoker-compose.yaml eg: version: 3.7(3.7 )
、docoker-compose.yaml
:https://docs.docker.com/compose/install/
, - - 。。。Easy
version: "3.7" #
# docker : https://docs.docker.com/compose/compose-file/
services: # services , ,
mypython: # mypython
build: . # Dockerfile , build Dockerfile
ports:
-"6006:3003" # - ,markdown ,
command: xxxx # Dockerfile CMD
depends_on: # , ( , myredis )
-myredis # -
myredis: # myredis
image: redis # DockerfilE FROM
container_name: myredis #
networks: # mynet
-mynet # ( - , markdown )
volumes: # myvolume , /root
-myvolume:/root # - ,( : )
hostname: myredis
# IP , , IP
# hostname, , myredis
networks: #
mynet: # mynet
driver: "bridge" #
volumes: #
myvolume: # myvolume
driver: "local" # local,
docker-compose config
: docker-compose.yml
docker-compose up # ( , )
docker-compose up -d # ( )
docker-compose stop # ( )
END