Docker基礎搭建及常見問題解決

2021-09-20 18:51:37 字數 1869 閱讀 2882

由於今年要參加第十二屆全國大學生資訊保安競賽,在builder環節需要搭建docker環境部署題目以及提交最終的dockerfile。在此之前也沒有系統的學習過相關知識,臨時在網上查的資料,搭建過程中遇見了各種問題,所以記錄下來方便以後的學習也希望能給遇到同樣問題的同學提供參考。

#安裝環境

軟體:vmware

系統:centos7

#安裝過程

使用yum方法安裝docker

啟動服務:systemctl start docker

#拖取映象

#檢視已有映象

#刪除映象

#查詢相關映象

#建立容器

引數解釋:--name 指定建立容器的名字

-p 埠對映

-i 引數用設定容器中的stdin是開啟的

-t 引數表示為建立的容器分配乙個偽tty終端

/bin/bash 啟動容器後啟動bash

#刪除容器

#查詢正在執行的容器

#檢視所有容器

#進入容器

docker exec -it 容器名/容器id /bin/bash    //進入互動介面

#提交自定義映象

可以將自己搭建好的容器製作成映象方便日後使用

#dockerfile基本語法

#使用方法

需要進入dockerfile目錄下,dockerfile的檔名必須為dockerfile然後執行命令:

參考命令:docker build -t centos:vv6 .    //不要忘了最後面有乙個點,他表示執行當前目錄下dockerfile

#遇到的第乙個問題就是使用copy 複製的檔案沒有成功

解決方法:原因是該檔案已經存在,此命令無法實現覆蓋,需要先刪除該檔案在執行copy語句,例如下圖

#第二個問題就是使用cmd執行.s**件失敗

解決辦法:原因是我使用docker run --name centostest -p 8888:80 -it centos:6 /bin/bash該命令建立容器時指定了shell,即/bin.bash,他會覆蓋掉cmd,導致無法執行。我們使用後台執行的方法建立容器即可解決,docker run --name                        centostest -p 8888:80 -dit centos:6

#第三個問題是編寫的.sh不規範導致達不到想要的效果,我這裡是建立資料庫及新增資料失敗

解決方法:利用eof來執行多行命令,例子如下

mysql -uroot -p'123456' << eof

create database test;

use test; 

create table flag(id int(10) primary key,username char(20),password char(20));

insert into flag values(1,'admin','iamprettygirl');

grant select on flag.flag to 'ciscn'@'localhost';

eof#第四個問題是當寫好.sh和dockfile後也能buil成功,但是在建立容器時發現容器建立完成後就關閉了,

再也啟動不起來了,這可不行,我還指望他提供服務呢

解決方法:原因是當用docker run建立容器後,執行完cmd命令後容器就覺得無事可做,所以他就自殺了。

即我們用-d引數讓所有的命令在後台完成後容器就自動關閉了,解決此問題有兩個思路:

一是給他新增乙個while迴圈讓他一直執行某條命令;

二 是把他的某些服務掛到前台,我使用的是第一種方法在.s**件最後加上一天迴圈命令,

見下圖:

ps:雖然一波三折,但是最後還是順利的完成了題目的設計,期望此次比賽能取得乙個好成績  ^-^

docker 安裝常見問題

centos docker 安 裝 常 見 問 題 1,安裝docker,命令 yum install y docker io 而不是 yum install y docker 當安裝的時候使用的是yum install y docker 命令時,輸入命令docker info 會出現如下問題 2,...

Docker容器常見問題

docker容器常見問題 date 2018.09.20 一.docker容器內部無法訪問宿主機網路 no route to host 解決辦法 centos 7 systemctl stop firewalld 新增埠 firewall cmd zone public add port 7001 ...

搭建samba常見問題

用windowsxp vm centos搭建乙個samba伺服器竟然用了幾個晚上才搞定。看看你遇到過這些問題嗎?1 設定samba使用者密碼時竟沒注意系統提示。failed to find entry user 使用者名稱 解決辦法 smbpasswd a user 好象有些版本的linux,不用加...