您的位置:首页 > 汽车 > 时评 > 培训第三十五天(容器的基础命令使用)

培训第三十五天(容器的基础命令使用)

2024/9/16 3:35:04 来源:https://blog.csdn.net/weixin_70693880/article/details/141473085  浏览:    关键词:培训第三十五天(容器的基础命令使用)

1、创建一个容器并同时执行echo命令

 # 快速启动一个容器执行特定的一次性命令并查看输出结果,输出结果后容器直接退出[root@docker ~]# docker run -it --name=a0 centos:latest echo "abc"abc[root@docker ~]# docker psCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES[root@docker ~]# docker ps -aCONTAINER ID   IMAGE           COMMAND       CREATED         STATUS                     PORTS     NAMESa1c0c9551a19   centos:latest   "echo abc"    8 seconds ago   Exited (0) 7 seconds ago             a041c9a7796fde   centos:latest   "/bin/bash"   19 hours ago    Exited (0) 13 hours ago              c0

2、删除容器

 # 删除名为a0的容器[root@docker ~]# docker rm  a0a0# 开启容器[root@docker ~]# docker start c0c0[root@docker ~]# docker psCONTAINER ID   IMAGE           COMMAND       CREATED        STATUS         PORTS     NAMES41c9a7796fde   centos:latest   "/bin/bash"   19 hours ago   Up 3 seconds             c0# 由于该容器正在运行不能直接删除[root@docker ~]# docker rm c0Error response from daemon: cannot remove container "/c0": container is running: stop the container before removing or force remove# 使用-f选项强制移除正在运行中的容器[root@docker ~]# docker rm -f c0c0

3、设置远程管理

 # 自己规定套接字文件的位置并通过TCP协议在所有网络接口(0.0.0.0代表监听所有IP地址)的2375端口上接受连接[root@docker ~]# vim /etc/docker/daemon.json "hosts" : ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]# 启动Docker服务时执行的命令为/usr/bin/dockerd,即启动Docker守护进程[root@docker ~]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd# 重新加载系统的服务管理器配置[root@docker ~]# systenctl daemon-reload# 重新启动Docker服务,使对Docker服务配置文件的修改生效[root@docker ~]# systemctl restart docker# version用于查看指定IP地址(10.0.0.100)上的Docker版本信息;images用于查看指定IP地址上的Docker镜像列表。命令中的参数-H用于指定连接到的 Docker守护进程的地址[root@docker ~]# docker -H10.0.0.100 varsion|images

4、docker image中pull的使用,从镜像仓库中下载镜像

 [root@docker ~]# docker image --helppull        Download an image from a registry[root@docker ~]# docker image pull --helpUsage:  docker image pull [OPTIONS] NAME[:TAG|@DIGEST]Download an image from a registryAliases:docker image pull, docker pullOptions:-a, --all-tags                Download all tagged images in the repository--disable-content-trust   Skip image verification (default true)--platform string         Set platform if server is multi-platform capable-q, --quiet                   Suppress verbose output# 从仓库中拉取centos的镜像[root@docker ~]# docker image pull -q centos# 查看本地镜像[root@docker ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED       SIZEcentos       latest    5d0da3dc9764   2 years ago   231MB

5、使用save将镜像打包

 # 查看帮助文件,找到save,可以将镜像保存为一个tar包[root@docker ~]# docker --helpsave        Save one or more images to a tar archive (streamed to STDOUT by default)# 查看save使用方式[root@docker ~]# docker save  --helpUsage:  docker save [OPTIONS] IMAGE [IMAGE...]Save one or more images to a tar archive (streamed to STDOUT by default)Aliases:docker image save, docker saveOptions:-o, --output string   Write to a file, instead of STDOUT# 查看现有镜像[root@docker ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED       SIZEcentos       latest    5d0da3dc9764   2 years ago   231MB# 打包镜像[root@docker ~]# docker save -o centos.tar centos:latest# 可以将tar发给其他用户,也可以作为备份[root@docker ~]# lsanaconda-ks.cfg  centos.tar  v

6、使用rmi删除镜像

 [root@docker ~]# docker --helprm          Remove one or more containersrmi         Remove one or more images[root@docker ~]# docker ps -aCONTAINER ID   IMAGE           COMMAND       CREATED         STATUS                     PORTS     NAMES6e2dbeb436db   centos:latest   "/bin/bash"   9 seconds ago   Exited (0) 4 seconds ago             c0# 由于有容器在使用该镜像,所以不能直接删除该镜像[root@docker ~]# docker rmi centos:latest Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 6e2dbeb436db is using its referenced image 5d0da3dc9764# 删除容器,退出容器up状态[root@docker ~]# docker rm c0c0[root@docker ~]# docker rmi centos:latest Untagged: centos:latestUntagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59[root@docker ~]# docker imagesREPOSITORY   TAG       IMAGE ID   CREATED   SIZE

7、使用load从tar文件中引入镜像

 [root@docker ~]# docker --helpload        Load an image from a tar archive or STDIN[root@docker ~]# docker load --helpUsage:  docker load [OPTIONS]Load an image from a tar archive or STDINAliases:docker image load, docker loadOptions:-i, --input string   Read from tar archive file, instead of STDIN-q, --quiet          Suppress the load output[root@docker ~]# docker load -i centos.tar 74ddd0ec08fa: Loading layer  238.6MB/238.6MBLoaded image: centos:latest[root@docker ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED       SIZEcentos       latest    5d0da3dc9764   2 years ago   231MB

8、使用export封装镜像,使用import导入镜像

 [root@docker ~]# docker run -it --name c0 centos:latest /bin/bash[root@5906fffd3383 /]# cd /etc/yum.repos.d     [root@5906fffd3383 yum.repos.d]# rm -rf *[root@5906fffd3383 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed100  2495  100  2495    0     0   6316      0 --:--:-- --:--:-- --:--:--  6316[root@5906fffd3383 yum.repos.d]# lsCentOS-Base.repo[root@5906fffd3383 yum.repos.d]# yum -y install epel[root@5906fffd3383 yum.repos.d]# yum clean all && yum makecache# 保持容器是运行状态[root@41c9a7796fde /]# read escape sequence# 查看帮助文档[root@docker ~]# docker --help[root@docker ~]# docker export --helpUsage:  docker export [OPTIONS] CONTAINERExport a container's filesystem as a tar archiveAliases:docker container export, docker exportOptions:-o, --output string   Write to a file, instead of STDOUT# 使用指令,将容器导出为tar包[root@docker ~]# docker export -o centos_yum.tar c0# 查看新生成的tar包[root@docker ~]# lsanaconda-ks.cfg  centos.tar  centos_yum.tar  v# 查看帮助文档[root@docker ~]# docker --help[root@docker ~]# docker import --helpUsage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]Import the contents from a tarball to create a filesystem imageAliases:docker image import, docker importOptions:-c, --change list       Apply Dockerfile instruction to the created image-m, --message string    Set commit message for imported image--platform string   Set platform if server is multi-platform capable# 使用指令,[root@docker ~]# docker import -m yum centos_yum.tar centos:yumsha256:f3ca4715914e87e2d1527365e66775d9ab47b2a0208128e3ec52c0d45c364146# 查看镜像[root@docker ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED              SIZEcentos       yum       f3ca4715914e   About a minute ago   326MBcentos       latest    5d0da3dc9764   2 years ago          231MB

练习:制作httpd镜像

 [root@docker ~]# docker run -it --name c0 centos:yum1 /bin/bash[root@865090f46fbd /]# yum -y install httpd[root@865090f46fbd /]# echo "aaa" > /var/www/html/index.html[root@865090f46fbd /]# httpd -k startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message[root@c717adc1969a /]# [root@docker ~]#[root@docker ~]# docker psCONTAINER ID   IMAGE         COMMAND       CREATED          STATUS          PORTS     NAMES865090f46fbd   centos:yum1   "/bin/bash"   44 seconds ago   Up 44 seconds             c0[root@docker ~]# docker export -o centos_httpd.tar c0[root@docker ~]# docker import -m httpd centos_httpd.tar centos:httpdsha256:195d7f041bf5c9e17f5cfe172c85c6d2e7d11241e530e839dfe7770186296bb1[root@docker ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED          SIZEcentos       httpd     195d7f041bf5   13 seconds ago   268MBcentos       yum1      a2a0a138806b   3 hours ago      260MBcentos       latest    5d0da3dc9764   2 years ago      231MB[root@docker ~]# docker run -it --name c0 centos:httpd /bin/bash[root@5f6e6f840b2b /]# httpd -k startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.4. Set the 'ServerName' directive globally to suppress this message[root@5f6e6f840b2b /]# curl localhost  hh

9、查看容器ip地址的方法

 # 直接进入到容器中查看IP地址[root@docker ~]# docker attach c1[root@452771f307cc /]# ip addrinet 172.17.0.3/16 brd 172.17.255.255 scope # 查看容器信息,可以查看ip地址[root@docker ~]# docker inspect c0# 在外部调用指令,查看容器ip地址[root@docker ~]# docker exec  c1 ip ainet 172.17.0.3/16 brd 172.17.255.255 scope 

练习测试:使用exec touch一个文件

 [root@docker ~]# docker exec  c1 touch 1.txt[root@docker ~]# docker attach c1[root@452771f307cc /]# ls1.txt  dev  home  lib64       media  opt   root  sbin  sys  usrbin    etc  lib   lost+found  mnt    proc  run   srv   tmp  var

10、容器中虚拟端口映射

 # 将容器中的80端口映射到宿主机(docker主机)的80端口   -p宿主机端口:容器端口[root@docker ~]# docker run -it --name c2 -p80:80/tcp centos:httpd1 /bin/bash[root@5f6e6f840b2b /]# httpd -k startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.4. Set the 'ServerName' directive globally to suppress this message[root@5f6e6f840b2b /]# curl localhost  hh[root@5f6e6f840b2b /]# [root@docker ~]# [root@docker ~]# docker inspect c2"IPAddress": "172.17.0.4",[root@docker ~]# curl 172.17.0.4hh# 浏览器访问宿主机的80端口

 # 将容器中的80端口映射到宿主机(docker主机)的12345端口[root@docker ~]# docker run -it --name c3 -p12345:80 centos:httpd1 /bin/bash# 需要启动服务[root@fa074e53e1d6 /]# curl localhost  curl: (7) Failed to connect to localhost port 80: Connection refused[root@fa074e53e1d6 /]# httpd -k startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.5. Set the 'ServerName' directive globally to suppress this message[root@fa074e53e1d6 /]# curl localhosthh[root@fa074e53e1d6 /]# [root@docker ~]# [root@docker ~]# docker psCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS                                     NAMESfa074e53e1d6   centos:httpd1   "/bin/bash"   5 minutes ago    Up 5 minutes    0.0.0.0:12345->80/tcp, :::12345->80/tcp   c35f6e6f840b2b   centos:httpd1   "/bin/bash"   13 minutes ago   Up 13 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp         c2# 浏览器访问宿主机的12345端口

 # 宿主机上所有端口的应用情况,防止映射端口时产生端口冲突[root@docker ~]# less /etc/services# 停止容器[root@docker ~]# docker stop c0 c1 c2 c3c0c1c2c3# 删除容器[root@docker ~]# docker rm c0 c1 c2 c3c0c1c2c3# 随机为容器指定映射端口(映射端口大于等于32767端口)[root@docker ~]# docker run -it --name c0 -p80 centos:httpd1 /bin/bash[root@46580643be3c /]# httpd -k startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message[root@46580643be3c /]# curl localhost  hh[root@46580643be3c /]# [root@docker ~]# [root@docker ~]# docker ps CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS                                     NAMES46580643be3c   centos:httpd1   "/bin/bash"   35 seconds ago   Up 34 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   c0# 浏览器访问宿主机的32768端口

 [root@docker ~]# docker run -it --name c1 -p80 centos:httpd1 /bin/bash[root@fe69a949d832 /]# httpd -k startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message[root@fe69a949d832 /]# [root@docker ~]# [root@docker ~]# docker psCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS                                     NAMESfe69a949d832   centos:httpd1   "/bin/bash"   20 seconds ago   Up 19 seconds   0.0.0.0:32769->80/tcp, :::32769->80/tcp   c146580643be3c   centos:httpd1   "/bin/bash"   4 minutes ago    Up 4 minutes    0.0.0.0:32768->80/tcp, :::32768->80/tcp   c0

11、通过宿主机中其他的ip地址的端口映射容器的端口

 # 添加一块虚拟网卡[root@docker ~]# ifconfig ens33:0 10.0.0.101 broadcast 10.0.0.101 netmask 255.255.255.255 up# 强制删除正在运行中的容器[root@docker ~]# docker rm -f c0 c1c0c1# 创建一个容器将容器的80端口映射到宿主机的10.0.0.101地址下的随机端口上[root@docker ~]# docker run -it --name c0 -p10.0.0.101::80 centos:httpd1 /bin/bash[root@c9ea4034d9e2 /]# httpd -k startAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message[root@c9ea4034d9e2 /]# curl localhost  hh[root@c9ea4034d9e2 /]# [root@docker ~]# [root@docker ~]# docker psCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS                      NAMESc9ea4034d9e2   centos:httpd1   "/bin/bash"   43 seconds ago   Up 43 seconds   10.0.0.101:32768->80/tcp   c0# 浏览器访问宿主机10.0.0.101的32768端口

12、容器数据持久化保存(卷映射)

因为dockers容器只是一个工具,不需要保存数据,不需要在持久化,如果要做持久化,那么就需要保存到宿主机上,需要宿主机和容器之间有一个共享卷。

 [root@docker ~]# docker psCONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS                      NAMESc9ea4034d9e2   centos:httpd1   "/bin/bash"   23 minutes ago   Up 23 minutes   10.0.0.101:32768->80/tcp   c0# 强制删除正在运行中的容器[root@docker ~]# docker rm -f c0c0# 创建映射目录[root@docker ~]# mkdir /source# 创建一个容器并将容器的/data目录映射到宿主机的/source目录上[root@docker ~]# docker run -it --name c0 -v /source:/data centos:httpd1 /bin/bash[root@13f4660eef3e /]# lsbin   dev  home  lib64       media  opt   root  sbin  sys  usrdata  etc  lib   lost+found  mnt    proc  run   srv   tmp  var[root@13f4660eef3e /]# [root@docker ~]# [root@docker ~]# touch /source/hh.txt[root@docker ~]# docker exec c0 ls /datahh.txt[root@docker ~]# docker exec c0 touch /data/hehe.txt[root@docker ~]# ls /source/hehe.txt  hh.txt

13、总结:

(1)镜像的迁移

1)打包
 docker save -o centos.tar centos:lstest
2)加载
 docker load -i centos.tar docker images# 停用关闭容器docker rm c0# 删除镜像docker rmi centos:latest

(2)创建镜像

1)创建镜像
 docker run -it --name c0 centos:latest /bin/bash# 下载阿里云仓库# clean,,makecachectrl p q
2)容器打包
 docker export -o centos_yum.tar c0
3)引入镜像
 docker import -m "updata yum repo" centos_yum.tar centos:yum​docker images

(3)ip网络

1)交互式
 docker start c0docker attach c0yum -y install iprouteip a
2)inspect
 docker inspect c0
3)exec
 docker exec c0 yum -y install net-toolsdocker exec c0 ifconfig

(4)端口

1)指定端口映射
 docker run -it --name c0 -p70:80 centos:httpd /bin/bash
2)随机端口映射
 docker run -it --name c0 -p80 centos:httpd /bin/bash
3)指定其他ip的端口映射
 ifconfig ens33:0 10.0.0.101 broadcast 10.0.0.101 netmask 255.255.255.255 updocker run -it --name c0 -p10.0.0.101::80 centos:httpd /bin/bash

(5)持久化

1)挂载
 mkdir /sourcedocker run -it --name c0 -v /source:/data sentos:httpd /bin/bash

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com