Docker和Pycharm
Docker
- Docker
- 介紹
- 安裝
- 兩種安裝方法,這兩種方法不兼容。
- 第一種方法
- 第二種方法
- Docker基礎(chǔ)使用
- 對(duì)Docker操作
- 對(duì)鏡像的基礎(chǔ)操作
- 獲取當(dāng)時(shí)所有鏡像(docker images)
- 拉去鏡像(docker pull)
- 刪除鏡像
- **Docker rm 命令**
- **Docker rmi 命令**
- **Docker prune 命令**
- 加載鏡像(docker run)
- 使用交互式容器
- 查看容器(docker ps)
- 啟動(dòng)和關(guān)閉容器
- 操作后臺(tái)容器
- 刪除容器(docker rm)
- 容器制作成鏡像
- Docker Dashboard(Docker 儀表板)
- pycharm配置docker
- 在docker desktop中打開(kāi)tcp連接
- 在pycharm配置
- 連接docker
- 環(huán)境搭建
- 命令行安裝工具包
“”"
Author:Natsu
CreatDate:2022.7.13 18:13
Version:0.0.2
“”"
Docker
參考文檔:中文文檔 、docker、菜鳥(niǎo)教程、中文社區(qū)
介紹
Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,基于Go 語(yǔ)言并遵從 Apache2.0 協(xié)議開(kāi)源。
Docker 可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。
容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app),更重要的是容器性能開(kāi)銷極低。
安裝
兩種安裝方法,這兩種方法不兼容。
- 第一種:安裝虛擬機(jī)vmware,在虛擬機(jī)中使用相關(guān)linux環(huán)境進(jìn)行安裝。
- 第二種:針對(duì)windows環(huán)境下,可以下載docker-desktop。
第一種方法
1.安裝方法1文件夾中的Vmware12安裝包;
2.安裝好之后在文件夾中找到ubuntu的鏡像文件,在vmware中創(chuàng)建虛擬環(huán)境;
3.在命令行中輸入curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun進(jìn)行安裝docker。
第二種方法
1.使用win+q鍵 搜索windows功能 看下里面有沒(méi)有hyper-V,沒(méi)有就進(jìn)入步驟2,否則進(jìn)行步驟3.
2.在方法2文件夾中找到hyper-V.cmd腳本文件,右鍵管理員運(yùn)行。
3.重啟進(jìn)入bios界面,切到security頁(yè),進(jìn)入Virtualization虛擬化界面,把第一個(gè)開(kāi)啟。
4.安裝文件夾中的docker desktop。
5.重啟之后,安裝wsl_update_x64_2文件,然后進(jìn)入https://hub.docker.com/signup,注冊(cè)賬號(hào)。
6.管理員運(yùn)行命令行 輸入docker run -d -p 80:80 docker/getting-starte
7.輸入 docker run hello-world 創(chuàng)建hello-world鏡像。
Docker基礎(chǔ)使用
參考文檔:從零開(kāi)始
對(duì)Docker操作
安裝完成Docker后,默認(rèn)每次開(kāi)機(jī)的時(shí)候都會(huì)自動(dòng)啟動(dòng),但我們也可以手動(dòng)啟動(dòng),關(guān)閉或者重啟Docker
# 啟動(dòng)docker sudo service docker start # 重啟docker sudo service docker restart # 停止docker sudo service docker stop對(duì)鏡像的基礎(chǔ)操作
獲取當(dāng)時(shí)所有鏡像(docker images)
docker image ls # 或者 docker images| REPOSITORY | 鏡像所在的倉(cāng)庫(kù)名稱 |
| TAG | 鏡像標(biāo)簽 |
| IMAGEID | 鏡像ID |
| CREATED | 鏡像的創(chuàng)建日期(不是獲取該鏡像的日期) |
| SIZE | 鏡像大小 |
拉去鏡像(docker pull)
# 官方鏡像 docker image pull 鏡像名稱 # 或簡(jiǎn)寫(xiě)為 docker pull 鏡像名稱 # 比如 docker pull ubuntu docker pull ubuntu:16.04# 個(gè)人鏡像 docker pull 倉(cāng)庫(kù)名稱/鏡像名稱 docker pull xunmi/django# 第三方倉(cāng)庫(kù)拉去 docker pull 第三方倉(cāng)庫(kù)地址/倉(cāng)庫(kù)名稱/鏡像名稱 docker pull hub.c.163.com/library/mysql:latest (默認(rèn)倉(cāng)庫(kù)名為library,所有從官方獲取鏡像相當(dāng)于`sudo docker image pull library/鏡像名稱`)刪除鏡像
Docker rm 命令
docker rm [OPTIONS] CONTAINER [CONTAINER...]OPTIONS說(shuō)明:
- -f : 通過(guò)SIGKILL信號(hào)強(qiáng)制刪除一個(gè)運(yùn)行中的容器
- -l : 移除容器間的網(wǎng)絡(luò)連接,而非容器本身
- -v : 刪除與容器關(guān)聯(lián)的卷
Docker rmi 命令
docker rmi [OPTIONS] IMAGE [IMAGE...]OPTIONS說(shuō)明:
- -f: 強(qiáng)制刪除
- –no-prune : 不移除該鏡像的過(guò)程鏡像,默認(rèn)移除
Docker prune 命令
刪除 所有未被 tag 標(biāo)記和未被容器使用的鏡像:
docker image prune刪除 所有未被容器使用的鏡像:
docker image prune -a刪除 所有停止運(yùn)行的容器:
docker container prune刪除 所有未被掛載的卷:
docker volume prune刪除 所有網(wǎng)絡(luò):
docker network prune刪除 docker 所有資源:
docker system prune加載鏡像(docker run)
上面我們說(shuō)過(guò),鏡像只是一個(gè)只讀類型的文件,而我們的環(huán)境不可能只是一個(gè)這樣的文件,所以我們需要把這個(gè)鏡像加載成我們的環(huán)境,也就是讓他變成容器。
docker run [可選參數(shù)] 鏡像名 [向啟動(dòng)容器中傳入的命令]| -i | 表示以《交互模式》運(yùn)行容器。 |
| -d | 會(huì)創(chuàng)建一個(gè)守護(hù)式容器在后臺(tái)運(yùn)行(這樣創(chuàng)建容器后不會(huì)自動(dòng)登錄容器)。 |
| -t | 表示容器啟動(dòng)后會(huì)進(jìn)入其命令行。加入這兩個(gè)參數(shù)后,容器創(chuàng)建就能登錄進(jìn)去。即分配一個(gè)偽終端。 |
| –name | 為創(chuàng)建的容器命名。(默認(rèn)會(huì)隨機(jī)給名字,不支持中文字符!!!) |
| -v | 表示目錄映射關(guān)系,即宿主機(jī)目錄:容器中目錄。注意:最好做目錄映射,在宿主機(jī)上做修改,然后共享到容器上。 |
| -p | 表示端口映射,即宿主機(jī)端口:容器中端口。 比如:-p 8080:80 就是將容器中的80端口,映射到主機(jī)中的8080端口 |
| –network=host | 表示將主機(jī)的網(wǎng)絡(luò)環(huán)境映射到容器中,使容器的網(wǎng)絡(luò)與主機(jī)相同。每個(gè) Docker 容器都有自己的網(wǎng)絡(luò)連接空間連接到虛擬 LAN。使用此命令則會(huì)讓容器和主機(jī)共享一個(gè)網(wǎng)絡(luò)空間。 |
可以啟動(dòng)一個(gè)系統(tǒng) docker run -i -d -t --name=kali-test kalilinux/kali-rolling (這里我使用linux的一個(gè)發(fā)行版kali作為介紹)
或可以簡(jiǎn)寫(xiě)為 docker run -idt --name=kali-test kalilinux/kali-rolling
PS: 如果加載一個(gè)我們沒(méi)有的鏡像,docker會(huì)自動(dòng)從官方倉(cāng)庫(kù)中進(jìn)行拉去。
或者我們可以啟動(dòng)一個(gè)網(wǎng)站docker run -dp 8080:80 --name docker-test docker/getting-started
如果你沒(méi)有下載docker/getting-started的進(jìn)行,這里會(huì)自動(dòng)幫你下載
成功啟動(dòng)后,可以在瀏覽器中輸入http://localhost:8080/即可看到如下頁(yè)面
使用交互式容器
上面我們成功將鏡像變成了容器,但上述的命令中我們都加入了-d,讓容器在后臺(tái)運(yùn)行了。下面我們就來(lái)講如何和正在運(yùn)行的容器進(jìn)行交互。
查看容器(docker ps)
查看容器主要會(huì)用到ps命令
# 查看當(dāng)前所有正在運(yùn)行的容器 docker ps # 查看當(dāng)前所有的容器 docker ps -a # 使用過(guò)濾器(除了name外,常用的還可以指定id:id= 、所有停止的容器:status=exited,正在運(yùn)行的容器:status=running 等) docker ps -f name=指定的名字 # 顯示2個(gè)上次創(chuàng)建的容器(2可以改變) docker ps -n 2 # 顯示最新創(chuàng)建的容器(包括所有狀態(tài)) docker ps -l # 僅顯示ip docker ps -q# 顯示容器大小 docker ps -s| CONTAINER ID | 鏡像ID |
| IMAGE | 創(chuàng)建容器的鏡像名稱 |
| COMMAND | 默認(rèn)啟動(dòng)命令(啟動(dòng)時(shí)會(huì)自動(dòng)執(zhí)行) |
| CREATED | 創(chuàng)建容器的日期 |
| STATUS | 當(dāng)前的狀態(tài)(啟動(dòng)了多久,多久之前退出等) |
| PORTS | 映射的端口 |
| NAMES | 容器的名稱 |
| SIZE | 容器大小(使用-s命令參數(shù)時(shí)才能看到) |
啟動(dòng)和關(guān)閉容器
# 停止容器 docker container stop 容器名或容器id # 或可簡(jiǎn)寫(xiě)為 docker stop 容器名或容器id# 強(qiáng)制關(guān)閉容器 docker container kill 容器名或容器id # 或可簡(jiǎn)寫(xiě)為 docker kill 容器名或容器id# 啟動(dòng)容器 docker container start 容器名或容器id # 或可簡(jiǎn)寫(xiě)為 docker start 容器名或容器id- 如果我們成功啟動(dòng)或者關(guān)閉一個(gè)容器的話,會(huì)返回容器名或者容器id
- stop和kill的區(qū)別: stop是比較優(yōu)雅的關(guān)掉一個(gè)容器,類似我們正常退出一個(gè)軟件,而kill是當(dāng)一個(gè)進(jìn)程出現(xiàn)意外無(wú)法正常關(guān)閉的時(shí)候,我們強(qiáng)行進(jìn)行關(guān)閉,有點(diǎn)像我們使用任務(wù)管理器進(jìn)行結(jié)束進(jìn)程操作
操作后臺(tái)容器
之前我們下過(guò)一個(gè)kali并且放在了后臺(tái)運(yùn)行,如果沒(méi)有下載可以執(zhí)行下列命令
docker run -i -d -t --name=kali-test kalilinux/kali-rolling下面我們就用下面的命令開(kāi)啟kali(如果你下的是其他系統(tǒng),比如ubuntu也可以舉一反三一下)
首先我們確保我們要進(jìn)入的容器是開(kāi)啟狀態(tài)的,使用docker ps -a查看其中的STATUS屬性是否是Up開(kāi)頭,如果不是先照著上面啟動(dòng)容器的方法開(kāi)啟容器
| -d | 會(huì)創(chuàng)建一個(gè)守護(hù)式容器在后臺(tái)運(yùn)行(這樣創(chuàng)建容器后不會(huì)自動(dòng)登錄容器)。 |
| -e | 設(shè)置環(huán)境變量 |
| -i | 表示以《交互模式》運(yùn)行容器。 |
| -t | 表示容器啟動(dòng)后會(huì)進(jìn)入其命令行。加入這兩個(gè)參數(shù)后,容器創(chuàng)建就能登錄進(jìn)去。即分配一個(gè)偽終端。 |
| -u | 設(shè)置用戶名和UID。 |
| -w | 設(shè)置容器內(nèi)的工作目錄。 |
刪除容器(docker rm)
如我我們需要?jiǎng)h除一個(gè)容器,首先需要確保這個(gè)容器已經(jīng)停止了,因?yàn)檎谶\(yùn)行的容器是無(wú)法直接刪除。
我們可以運(yùn)行一下docker ps -a,如果發(fā)現(xiàn)沒(méi)有停止,可以使用docker stop停止(STATUS下已Exited開(kāi)頭則是停止的)
如果報(bào)錯(cuò)Error response from daemon: You cannot remove a running container 容器ID. Stop the container before attempting removal or force remove則代表這個(gè)容器已經(jīng)啟動(dòng),需要執(zhí)行 docker stop 容器id,停止此容器
容器制作成鏡像
我們?yōu)槭裁匆讶萜髦谱鞒社R像?
- 鏡像可以看作為是一種備份,如果我們后期環(huán)境出現(xiàn)了問(wèn)題,可以還原到早期鏡像。
- 鏡像便于傳播,可以讓自己的其他設(shè)備或他人的重復(fù)利用變得更加簡(jiǎn)單容易。
我們將打包備份的鏡像可以通過(guò)網(wǎng)絡(luò)發(fā)送到其他設(shè)備上,使用docker鏡像解壓即可直接使用你的環(huán)境。
Docker Dashboard(Docker 儀表板)
Docker 儀表板的主要作用為:快速訪問(wèn)容器日志,啟動(dòng)容器的 shell,并輕松管理容器生命周期(停止、刪除等)。
pycharm配置docker
在docker desktop中打開(kāi)tcp連接
在pycharm配置
路徑:file->settings->build,execution,deployment->docker
選擇TCP連接,并把第一步上面顯示的地址填進(jìn)去。
連接docker
連接后就可以對(duì)容器和鏡像進(jìn)行管理
環(huán)境搭建
1、需要在命令行中安裝python,docker pull python:版本號(hào)
新創(chuàng)建項(xiàng)目時(shí)候 就使用docker環(huán)境,或者在項(xiàng)目完成后修改project interpreter.
- Image name 填寫(xiě) python,也可以去docker桌面版看下是什么名字,一般下載完名字都是python
- Python interpreter path 不用改,先直接寫(xiě)python。
- 通過(guò)TCP連接的話,是無(wú)法在pycharm中直接安裝工具包的,需要在命令行中進(jìn)行操作。
命令行安裝工具包
-
用創(chuàng)建好的python鏡像,創(chuàng)建一個(gè)倉(cāng)庫(kù)docker run -it --name [要?jiǎng)?chuàng)建的倉(cāng)庫(kù)名字] [鏡像NAME]
-
創(chuàng)建完成后使用下面命令進(jìn)行第三方工具包的安裝
docker exec -it <countainerName/countainerID> bash > pip install package> whitch python #查看下Python路徑 # hit ctrl+D docker commit <countainerName/countainerID> <imageName:tag> docker-compose up
總結(jié)
以上是生活随笔為你收集整理的Docker和Pycharm的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 自动配置和 thymeleaf模板引擎
- 下一篇: 微信聊天记录里的文件又失效了?试试这个文