日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

docker安装和基础知识要点

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker安装和基础知识要点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、容器引擎核心技術

Namespace:實現Container的進程、網絡、消息、文件系統和主機名的隔離;

Cgroup:實現對資源的配額和度量;

2、特性

文件系統隔離:每個進程容器運行在一個完全獨立的根文件系統里;

資源隔離:系統資源根據需求分配到不同的容器中;

網絡隔離:么米格容器運行在自己的網絡空間,虛擬接口和IP地址;

日志記錄:Docker會 手機并記錄每個進程容器的標準流(stdout/stderr/stdin),用于實時檢索或批量檢索;

變更管理:容器文件系統的變更可提交到新的鏡像中,并可重復使用以創建更多的容器,無需使用模板或手動配置;

交互式Shell:Docker可分配一個虛擬終端并關聯到任何容器的標準輸入上。

3、說明

Docker鏡像及數據存放于/var/lib/docker目錄

4、部署

[root@kazihuo ~]# wget -O /etc/yum.repos.d/Centos_Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@kazihuo ~]# yum -y install docker-io

[root@kazihuo ~]# systemctl start docker

[root@kazihuo ~]# docker search centos

#從Docker Hub中搜索符合條件的鏡像

[root@kazihuo ~]# docker pull centos

#從Docker Hub中拉取或更新指定鏡像

or本地導入指定image:[root@kazihuo ~]# docker load -i centos-latest-docker-image.tar ? ? ?注釋:# -i:指定載入的鏡像歸檔

5、操作

查看所有本地鏡像:

[root@kazihuo ~]# docker images

運行容器:

[root@kazihuo ~]# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

[root@kazihuo ~]# docker run -it --name=test-centos docker.io/centos:latest /bin/bash

#-i:以交互模式運行容器;-t:為容器重新分配一個偽輸入終端;-d 表示守護模式, 容器在后臺運行;--name 為容器命名;

docker.io/centos:latest 格式為鏡像名:版本;/bin/bash 進入bash命令行

[root@a94e89783f11 /]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

長久運行:

[root@kazihuo ~]# JOB=$(docker run -d centos /bin/bash -c "while true;do echo hello world;sleep 1;done")

# -d:后臺運行容器,并返回容器ID;-c:待完成

[root@kazihuo ~]# echo $JOB

64f37b2fb689076e9b3c169ab9ab4505448c394388c312643a6d54f05fda3756

容器日志讀取:

[root@kazihuo ~]# docker logs $JOB

hello world

......

hello world

hello world

查看運行中容器:

[root@kazihuo ~]# docker ps

查看所有容器:

[root@kazihuo ~]# docker ps -a

殺掉容器:

[root@kazihuo ~]# docker kill?64f37b2fb689(容器id)

啟動、停止、重啟

[root@kazihuo ~]# docker start 64f37b2fb689

[root@kazihuo ~]# docker stop 64f37b2fb689

[root@kazihuo ~]# docker restart 64f37b2fb689

刪除容器:

[root@kazihuo ~]# docker rm 64f37b2fb689

注釋:正在運行的容器在刪除前先將容器關閉,或者加-f強制刪除

查看容器網絡:

[root@kazihuo ~]# ifconfig

docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet?172.17.0.1?netmask 255.255.0.0 broadcast 0.0.0.0

inet6 fe80::42:8fff:fed0:be33 prefixlen 64 scopeid 0x20<link>

ether 02:42:8f:d0:be:33 txqueuelen 0 (Ethernet)?

RX packets 28641 bytes 1172564 (1.1 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 30689 bytes 105377292 (100.4 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

配置容器root密碼:

[root@01b16f44a3f9 ~]# echo 000000|passwd --stdin root

注釋:默認無密碼

5、docker鏡像制作

方法1:docker commit ? ? ? ? ? ?#保存container的當前狀態到image后,生成對應的image

方法2:?docker build ? ? ? ? ? ? ? ?#使用Dockerfile自動化制作image

方法1實操:

[root@kazihuo ~]# docker run -ti centos /bin/bash

[root@c4e377bf5c01 ~]# yum -y install net-tools

[root@c4e377bf5c01 ~]# exit

[root@kazihuo ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

docker.io/centos latest 3fa822599e10 5 weeks ago 203.5 MB?

[root@kazihuo ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c4e377bf5c01 centos "/bin/bash" 18 minutes ago Exited (0) About a minute ago reverent_kare?

?

[root@kazihuo ~]# docker commit c4e377bf5c01 centos:net-tool

sha256:c45c0a7b6a1a2d0db6c94d5d932b741f408507b86da50ab41280421258d86e68

[root@kazihuo ~]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos net-tool c45c0a7b6a1a 15 seconds ago 350.3 MB

docker.io/centos latest 3fa822599e10 5 weeks ago 203.5 MB

[root@kazihuo ~]# docker run -ti centos:net-tool /bin/bash

[root@0f1037105498 /]# rpm -qa net-tools

net-tools-2.0-0.22.20131004git.el7.x86_64

方法2實操:

[root@kazihuo ~]# mkdir /docker-build

[root@kazihuo ~]# cd /docker-build/

[root@kazihuo /docker-build]# cat Dockerfile

FROM centos

MAINTAINER kazihuo <kazihuo@sina.com>

RUN yum -y install httpd

ADD start.sh /usr/local/bin/start.sh

ADD index.html /var/www/html/index.html

注釋:

FROM #基于指定鏡像

MAINTANER #鏡像創建者

RUN #安裝軟件

ADD #將文件<src>拷貝到container的文件系統對應的路徑<dest>,所有拷貝到container中的文件和文件夾權限是07555,uid和gid是0

?

[root@kazihuo /docker-build]# echo "/usr/sbin/httpd -DFOREGROUND"> start.sh

注:以上相當于執行systemctl start httpd

[root@kazihuo /docker-build]# chmod a+x start.sh

[root@kazihuo /docker-build]# echo "docker image build test" > index.html

?

build創建新的image語法:

# docker build -t 父鏡像名:自己定義的鏡像名 Dockerfile文件所在路徑

[root@kazihuo /docker-build]# docker bulid -t centos:httpd .

[root@kazihuo /docker-build]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE?

centos httpd 40aba19c5ebb 20 seconds ago 327 MB?

centos net-tool c45c0a7b6a1a 35 minutes ago 350.3 MB?

docker.io/centos latest 3fa822599e10 5 weeks ago 203.5 MB

Docker Image發布

方法一:?

Save Image To TarBall

方法二:?

Push Image To Docker Hub

法一實操:?

保存image到tar包

語法:docker save -o 導出的鏡像名.tar 本地鏡像名

[root@kazihuo /docker-build]# docker save -o centos-httpd-docker-image.tar centos:httpd

[root@kazihuo /docker-build]# ls

centos-httpd-docker-image.tar Dockerfile index.html start.sh

?

8、容器端口映射

使用centos:httpd鏡像啟動一個容器,將容器中的80端口映射到docker物理上的9000端口

[root@kazihuo ~]# docker run -d -p 9000:80 centos:httpd /bin/bash -c /usr/local/bin/start.sh

01b16f44a3f96814c5368e417c07ef48fad2fe7013ff78718293ff012e97421b?

[root@kazihuo ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES?

01b16f44a3f9 centos:httpd "/bin/bash -c /usr/lo" 23 seconds ago Up 22 seconds 0.0.0.0:9000->80/tcp elegant_hopper?

[root@kazihuo ~]# curl http://127.0.0.1:9000

docker image build test?

[root@kazihuo ~]# docker exec -ti 01b16f44a3f9 /bin/bash

[root@01b16f44a3f9 ~]# echo kazihuo > /var/www/html/test.html

[root@kazihuo ~]# curl http://127.0.0.1:9000/test.html

kazihuo

?

轉載于:https://www.cnblogs.com/ruoyu818/p/11301570.html

總結

以上是生活随笔為你收集整理的docker安装和基础知识要点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。