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}}"

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