docker的常用操作之二:docker內無法解析dns之firewalld設置等


一,如何啟動一個已退出的容器?

[root@localhost ~]# docker start storage4

 

說明:架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

 說明:作者:劉宏締 郵箱: 371125307@qq.com

 

二,docker容器運行后狀態是exited(0)?

run時加參數 -d -i -t

  • -i: 以交互模式運行容器,通常與 -t 同時使用;

  • -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;

例子:

[root@localhost ~]# docker run --name tracker1 --privileged -d -i -t 470671670cac
5a674df0c4bf9fa47d548e85b77166bc3b7ee4c7905a394ae8426e278cda5cce

查看狀態,已經不是exit

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
5a674df0c4bf        470671670cac        "/bin/bash"         9 seconds ago       Up 8 seconds                            tracker1

 

三,docker啟動的centos容器中如何使systemctl可用?

 

[root@5a674df0c4bf /]# systemctl status 
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
[root@localhost
~]# docker run --name tracker1 --privileged -d -i -t 470671670cac /usr/sbin/init 0882a60ec13999b7fff728468fc1b9d89c47d05db49bac635d03b4a2e87c2a6d
[root@0882a60ec139
/]# systemctl start sshd Failed to start sshd.service: Unit sshd.service not found.

 

說明:不再報  Failed to connect to bus: Host is down

說明: /usr/sbin/init:初始容器里的CENTOS,用於啟動dbus-daemon。

 

四,docker如何生成一個新的鏡像

使用commit命令

在容器內做了修改之后,直接commit

[root@914e7dcb1298 fdfs]# exit
exit

[root@localhost liuhongdi]# docker commit 914e7dcb1298 fastdfs_storage_0.1

 

說明:

914e7dcb1298:    容器的id

fastdfs_storage_0.1 :  給imae起的名字

可以看到image的列表中已經生了我們生成的image

[root@localhost liuhongdi]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
fastdfs_storage_0.1   latest              fc81a26e998e        8 seconds ago       533MB
centos                latest              470671670cac        6 weeks ago         237MB

 

五,docker如何掛載本地目錄?

-v參數中,冒號":"前面的目錄是宿主機目錄,后面的目錄是容器內目錄

需要注意的地方:1,路徑要使用絕對路徑,避免因使用相對路徑出錯

2,如果在容器內修改從宿主機掛載進去的目錄/文件的owner,

     會影響到 宿主機上的目錄/文件owner ,

     因為linux下的文件是使用uid來對應,所以盡量不要做這種修改

例子:

[root@localhost liuhongdi]# docker run --name tracker1 --privileged -v /usr/local/source:/usr/local/source -d -i -t 470671670cac /usr/sbin/init
6351748e4916dc0300cdb663fe14187da78d7cd16d130c3f2b67a11c1f772aa9

[root@localhost liuhongdi]# docker exec -it tracker1 /bin/bash
[root@6351748e4916
/]# ls /usr/local/source/ V1.0.43.tar.gz apache-zookeeper-3.5.6-bin.tar.gz jmeter.log nginx-1.17.8

 

說明:進入容器后可以看到以前在宿主機中的文件

 

六,docker內無法解析dns,需要對宿主機的防火牆做設置:

生產環境下是絕對不可以禁用防火牆, 只需要開啟偽裝IP的功能即可以正常使用dns

 

[root@localhost liuhongdi]# firewall-cmd --zone=public --add-masquerade --permanent
success
[root@localhost liuhongdi]# firewall-cmd --reload
success
[root@localhost liuhongdi]# systemctl stop firewalld
[root@localhost liuhongdi]# systemctl start firewalld
[root@localhost liuhongdi]# systemctl stop docker
[root@localhost liuhongdi]# systemctl start docker
[root@localhost liuhongdi]# docker run --name tracker1 --privileged -v /usr/local/source:/usr/local/source -d -i -t 470671670cac /usr/sbin/init
914e7dcb12983cc27302a7becf05833abab07d8a765bf11326ca0c9ecfa12e6a
[root@localhost liuhongdi]# docker exec -it tracker1 /bin/bash
[root@914e7dcb1298 /]# ping www.sina.com.cn
PING spool.grid.sinaedge.com (120.192.83.125) 56(84) bytes of data.
64 bytes from 120.192.83.125 (120.192.83.125): icmp_seq=1 ttl=51 time=34.6 ms

^C
--- spool.grid.sinaedge.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 20.664/27.730/34.566/5.679 ms

 

七,查看本地centos的版本:

[root@localhost lib]# cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core) 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM