docker 學習及實踐記錄

Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本 

[root@slave1 ~]# uname -r 
3.10.0-957.el7.x86_64
[root@slave1 ~]# 

安裝一些必要的系統工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

[root@slave1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加載插件:fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo


從 2017 年 3 月開始 docker 在原來的基礎上分爲兩個分支版本: Docker CE 和 Docker EE。

Docker CE 即社區免費版,Docker EE 即企業版,強調安全,但需付費使用。


下載CentOS
# docker pull centos #該命令會自動下載最新版本docker官方的centos,目前是7.5
# docker images

docker run --privileged=true -it --name=lvdayang centos /bin/bash


[root@slave1 local]# cp /usr/local/jdk1.8.zip bccc35e6e691:/opt/software
cp: 無法創建普通文件"bccc35e6e691:/opt/software": 沒有那個文件或目錄
[root@slave1 local]# docker cp /usr/local/jdk1.8.zip bccc35e6e691:/opt/software
[root@slave1 local]# 

docker exec --help
docker exec -it bccc35e6e691 /bin/bash
可以看出獲得了docker容器的id就可以進入容器了
然後我們使用docker ps查看到該容器信息,接下來就使用docker attach進入該容器docker attach 44fc0f0582d9可以看到我們已經進入到該容器中了。但在,使用該命令有一個問題。當多個窗口同時使用該命令進入該容器時,所有的窗口都會同步顯示。如果有一個窗口阻塞了,那麼其他窗口也無法再進行操作。

找不到以前的容器了怎麼辦????短暫方式,直接將一個已經終止的容器啓動運行起來
可以使用docker start命令,直接將一個已經終止的容器啓動運行起來。

[root@rocketmq-nameserver4 ~]# docker run my/python:v1 /bin/echo hello test
hello test
命令執行完,控制檯會打印"hello test",container就終止了,不過並沒有消失,
可以用"docker ps -n 5 "看一下最新前5個的container,第一個就是剛剛執行過的container,可以再次執行一遍:docker start container_id
使用docker stop $CONTAINER_ID來終止一個運行中的容器。並且可以使用docker ps -a來看終止狀態的容器。
終止狀態的容器,可以使用docker start來重新啓動。

使用nsenter進入Docker容器 

docker安裝以後的網絡類型

[root@insure updev]# docker network ls


    6 Apr 11  2018 sbin
drwxr-xr-x 5 root root        49 Mar  5 17:34 share
drwxr-xr-x 2 root root         6 Apr 11  2018 src
[root@bccc35e6e691 local]# mv mysql-5.7.26-el7-x86_64 mysql
[root@bccc35e6e691 local]# ll
total 886348
drwxr-xr-x 2 root root         6 Apr 11  2018 bin
drwxr-xr-x 2 root root         6 Apr 11  2018 etc
drwxr-xr-x 2 root root         6 Apr 11  2018 games
drwxr-xr-x 2 root root         6 Apr 11  2018 include
drwxr-xr-x 8 root root       255 Jun  1  2018 jdk1.8
-rw-r--r-- 1 root root 193568083 Aug  5 03:23 jdk1.8.zip
drwxr-xr-x 2 root root         6 Apr 11  2018 lib
drwxr-xr-x 2 root root         6 Apr 11  2018 lib64
drwxr-xr-x 2 root root         6 Apr 11  2018 libexec
drwxr-xr-x 9 root root       129 Aug  5 09:29 mysql
-rw-r----- 1 root root 714050311 Jun 14 16:43 mysql-5.7.26-el7-x86_64.tar.gz
drwxr-xr-x 2 root root         6 Apr 11  2018 sbin
drwxr-xr-x 5 root root        49 Mar  5 17:34 share
drwxr-xr-x 2 root root         6 Apr 11  2018 src
[root@bccc35e6e691 local]# mkdir -p /data/mysql     
[root@bccc35e6e691 local]# mkdir -p /data/log/mysql
[root@bccc35e6e691 local]# groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql/
[root@bccc35e6e691 local]# useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql/
[root@bccc35e6e691 local]#  cd /usr/local/mysql
[root@bccc35e6e691 mysql]#  chown -R mysql .
 chgrp -R mysql .
[root@bccc35e6e691 mysql]#  chgrp -R mysql .
 chown -R mysql:mysql /data/mysql/ 
[root@bccc35e6e691 mysql]#  chown -R mysql:mysql /data/mysql/ 
[root@bccc35e6e691 mysql]# chown -R mysql:mysql /data/log/
[root@bccc35e6e691 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
[root@bccc35e6e691 mysql]# ll
total 36
-rw-r--r--  1 mysql mysql 17987 Apr 13 13:32 COPYING
-rw-r--r--  1 mysql mysql  2478 Apr 13 13:32 README
drwxr-xr-x  2 mysql mysql  4096 Aug  5 09:29 bin
drwxr-xr-x  2 mysql mysql    55 Aug  5 09:29 docs
drwxr-xr-x  3 mysql mysql  4096 Aug  5 09:29 include
drwxr-xr-x  5 mysql mysql   230 Aug  5 09:29 lib
drwxr-xr-x  4 mysql mysql    30 Aug  5 09:29 man
drwxr-xr-x 28 mysql mysql  4096 Aug  5 09:29 share
drwxr-xr-x  2 mysql mysql    90 Aug  5 09:29 support-files
[root@bccc35e6e691 mysql]# yum install libaio*
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.lzu.edu.cn
 * extras: mirror.lzu.edu.cn
 * updates: mirror.lzu.edu.cn
base                                                                                                                                                                        | 3.6 kB  00:00:00     
extras                                                                                                                                                                      | 3.4 kB  00:00:00     
updates                                                                                                                                                                     | 3.4 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package libaio.x86_64 0:0.3.109-13.el7 will be installed
---> Package libaio-devel.x86_64 0:0.3.109-13.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================================================================================================
 Package                                           Arch                                        Version                                             Repository                                 Size
===================================================================================================================================================================================================
Installing:
 libaio                                            x86_64                                      0.3.109-13.el7                                      base                                       24 k
 libaio-devel                                      x86_64                                      0.3.109-13.el7                                      base                                       13 k

Transaction Summary
===================================================================================================================================================================================================
Install  2 Packages

Total download size: 37 k
Installed size: 46 k
Is this ok [y/d/N]: y
Downloading packages:
(1/2): libaio-devel-0.3.109-13.el7.x86_64.rpm                                                                                                                               |  13 kB  00:00:00     
(2/2): libaio-0.3.109-13.el7.x86_64.rpm                                                                                                                                     |  24 kB  00:00:00     
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                              140 kB/s |  37 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libaio-0.3.109-13.el7.x86_64                                                                                                                                                    1/2 
  Installing : libaio-devel-0.3.109-13.el7.x86_64                                                                                                                                              2/2 
  Verifying  : libaio-0.3.109-13.el7.x86_64                                                                                                                                                    1/2 
  Verifying  : libaio-devel-0.3.109-13.el7.x86_64                                                                                                                                              2/2 

Installed:
  libaio.x86_64 0:0.3.109-13.el7                                                                libaio-devel.x86_64 0:0.3.109-13.el7                                                               

Complete!
[root@bccc35e6e691 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
[root@bccc35e6e691 mysql]# yum install -y libnuma
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.lzu.edu.cn
 * extras: mirror.lzu.edu.cn
 * updates: mirror.lzu.edu.cn
No package libnuma available.
Error: Nothing to do
[root@bccc35e6e691 mysql]# yum install -y libnum*
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.lzu.edu.cn
 * extras: mirror.lzu.edu.cn
 * updates: mirror.lzu.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package numactl-libs.x86_64 0:2.0.9-7.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================================================================================================
 Package                                           Arch                                        Version                                             Repository                                 Size
===================================================================================================================================================================================================
Installing:
 numactl-libs                                      x86_64                                      2.0.9-7.el7                                         base                                       29 k

Transaction Summary
===================================================================================================================================================================================================
Install  1 Package

Total download size: 29 k
Installed size: 50 k
Downloading packages:
numactl-libs-2.0.9-7.el7.x86_64.rpm                                                                                                                                         |  29 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : numactl-libs-2.0.9-7.el7.x86_64                                                                                                                                                 1/1 
  Verifying  : numactl-libs-2.0.9-7.el7.x86_64                                                                                                                                                 1/1 

Installed:
  numactl-libs.x86_64 0:2.0.9-7.el7                                                                                                                                                                

Complete!
[root@bccc35e6e691 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
2019-08-05T09:41:46.395248Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-08-05T09:41:53.808011Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-08-05T09:41:54.783660Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-08-05T09:41:54.972448Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 42acfe17-b765-11e9-977c-0242ac110002.
2019-08-05T09:41:55.002967Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-08-05T09:41:55.004133Z 1 [Note] A temporary password is generated for root@localhost: EJ,?*i4BVTy*

[root@bccc35e6e691 mysql]# 
[root@bccc35e6e691 mysql]# 
[root@bccc35e6e691 mysql]# 
[root@bccc35e6e691 mysql]# 


[root@bccc35e6e691 mysql]# ./bin/mysql --user=root -p
mysql: Can't read dir of '/etc/my.cnf.d' (Errcode: 2 - No such file or directory)
mysql: [ERROR] Fatal error in defaults handling. Program aborted!
[root@bccc35e6e691 mysql]# /etc/init.d/mysqld start
bash: /etc/init.d/mysqld: No such file or directory
[root@bccc35e6e691 mysql]# /etc/init.d/mysql start 
my_print_defaults: Can't read dir of '/etc/my.cnf.d' (Errcode: 2 - No such file or directory)
my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Starting MySQL.my_print_defaults: Can't read dir of '/etc/my.cnf.d' (Errcode: 2 - No such file or directory)
my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
my_print_defaults: Can't read dir of '/etc/my.cnf.d' (Errcode: 2 - No such file or directory)
my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Logging to '/data/mysql/bccc35e6e691.err'.
 ERROR! The server quit without updating PID file (/data/mysql/bccc35e6e691.pid).
[root@bccc35e6e691 mysql]# mv /etc/my.cnf /etc/my.cnf.d
[root@bccc35e6e691 mysql]# /etc/init.d/mysql start     
Starting MySQL.Logging to '/data/mysql/bccc35e6e691.err'.
. SUCCESS! 
[root@bccc35e6e691 mysql]# 

[root@7f5864324b3b bin]# ldd mysql
        linux-vdso.so.1 (0x00007fff8d9bb000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f26c6fc2000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f26c6db9000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f26c6bb5000)
        libncurses.so.5 => not found
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f26c6820000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f26c649e000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f26c6286000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f26c5ec2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f26c71e2000)
        libtinfo.so.5 => not found


yum install libncurses* -y        


2iAy%zBSPcfy

https://blog.csdn.net/wufaliang003/article/details/78948164
3.2啓動容器
容器是在鏡像的基礎上來運行的,一旦容器啓動了,我們就可以登錄到容器中,安裝自己所需的軟件或應用程序。既然鏡像已經下載到本地,那麼如何才能啓動容器呢?
只需使用以下命令即可啓動容器
docker run -i -t -v /data/:/data/ 12c9d795d85a /bin/bash 
看到這樣的情況,說明我們現在已經登錄到容器中了。
我們來看下上一條命令的大概意思
docker run <相關參數> <鏡像 ID> <初始命令> 
其中,相關參數包括:
-i:表示以“交互模式”運行容器
-t:表示容器啓動後會進入其命令行
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
假設我們的所有安裝程序都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。
需要說明的是,不一定要使用“鏡像 ID”,也可以使用“倉庫名:標籤名”,例如:centos:latest。
初始命令表示一旦容器啓動,需要運行的命令,此時使用“/bin/bash”,表示什麼也不做,只需進入命令行即可。

3.3創建JavaWeb鏡像

使用如下命令提交剛纔創建的docker web容器爲鏡像
docker commit 3fb5c3089f22 lzg/javaweb:0.1
該容器的 ID 是“3fb5c3089f22 ”,所創建的鏡像名是“lzg/javaweb:0.1”,隨後可使用鏡像來啓動 Java Web 容器。
使用docker images命令能看到如下內容:

[root@slave1 ~]# docker commit  bccc35e6e691 lvdayang/initbas:0.2
sha256:55871da26284078bbd2ff74277cb40d48f6642ce00796ac0e0535bbf89bc4a0e
[root@slave1 ~]# docker ps


可見,此時已經看到了最新創建的鏡像“lzg/javaweb:0.1”,其鏡像 ID 是“b7be71fb07079”。正如上面所描述的那樣,我們可以通過“鏡像名”或“鏡像 ID”來啓動容器,與上次啓動容器不同的是,我們現在不再進入容器的命令行,而是直接啓動容器內部的 Tomcat 服務。此時,需要使用以下命令:
docker run -d -p 58080:8080 --name javaweb lzg/javaweb:0.1 /root/run.sh docker容器端口號與宿主機端口號綁定

docker run -d -p 58080:8080 --name javaweb lvdayang/initbas:0.1 /root/run.sh

docker run -d -p 58090:8080 --name initbas0.2 lvdayang/initbas:0.2 /root/run.sh


稍作解釋:
-d:表示以“守護模式”執行/root/run.sh腳本,此時 Tomcat 控制檯不會出現在輸出終端上。
-p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射爲宿主機的 58080 端口,這樣就向外界暴露了 58080 端口,可通過 Docker 網橋來訪問容器內部的 8080 端口了。
--name:表示容器名稱,用一個有意義的名稱命名即可。
關於 Docker 網橋的內容,需要補充說明一下。實際上 Docker 在宿主機與容器之間,搭建了一座網絡通信的橋樑,我們可通過宿主機 IP 地址與端口號來映射容器內部的 IP 地址與端口號,在一系列參數後面的是“鏡像名”或“鏡像 ID”,怎麼方便就怎麼來。最後是“初始命令”,它是上面編寫的運行腳本,裏面封裝了加載環境變量並啓動 Tomcat 服務的命令。
當運行以上命令後,會立即輸出一長串“容器 ID”,我們可通過docker ps命令來查看當前正在運行的容器。
然後通過 linux宿主的 ip:58080訪問,就能看到 tomcat的主頁了。
注意:這裏使用的是宿主機的 IP 地址,與對外暴露的端口號 58080,它映射容器內部的端口號 8080。

docker run -i -t -p 58888:8080 -v /data/:/data/ --name=tomcat_8080  238e6d7313e3 /bin/bash 


14-Aug-2019 09:43:31.008 INFO [Thread-6] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
14-Aug-2019 09:43:31.009 INFO [Thread-6] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]
root@bfe061be86d9:/usr/local/tomcat# exit
exit
[root@slave1 webapps]# 
[root@slave1 webapps]#  docker run -i -t -p 59999:8080 -p 53306:3306 -v /usr/local/webapps/:/usr/local/tomcat/webapps/   --name=tomcat_58999  238e6d7313e3 /bin/bash 


 docker run -i -t -p 59999:8080 --net docker-at --ip 192.168.0.20   -v /usr/local/webapps/:/usr/local/tomcat/webapps/   --name=tomcat_58999  238e6d7313e3 /bin/bash

docker exec -it 4ba0fb77e0be /bin/bash


docker run -i -t -v /data/:/data/ --name=centosv0.1  centos:latest /bin/bash 

docker start centosv0.1

docker exec -it centosv0.1 /bin/bash


Docker鏡像的導入導出
https://blog.csdn.net/ncdx111/article/details/79878098

Docker與Dockerfile極簡入門文檔
https://blog.csdn.net/qq_33256688/article/details/80319673

docker run -i -t -v /data/:/data/ --name=centos_testv0.1  centos_test:v0.1  \/bin\/bash

docker start centos_testv0.1

docker exec -it centos_testv0.1 /bin/bash


docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章